{
  "contractName": "GenesisProtocol",
  "abi": [
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "parameters",
      "outputs": [
        {
          "name": "preBoostedVoteRequiredPercentage",
          "type": "uint256"
        },
        {
          "name": "preBoostedVotePeriodLimit",
          "type": "uint256"
        },
        {
          "name": "boostedVotePeriodLimit",
          "type": "uint256"
        },
        {
          "name": "thresholdConstA",
          "type": "uint256"
        },
        {
          "name": "thresholdConstB",
          "type": "uint256"
        },
        {
          "name": "governanceFormulasInterface",
          "type": "address"
        },
        {
          "name": "minimumStakingFee",
          "type": "uint256"
        },
        {
          "name": "quietEndingPeriod",
          "type": "uint256"
        },
        {
          "name": "proposingRepRewardConstA",
          "type": "uint256"
        },
        {
          "name": "proposingRepRewardConstB",
          "type": "uint256"
        },
        {
          "name": "stakerFeeRatioForVoters",
          "type": "uint256"
        },
        {
          "name": "votersReputationLossRatio",
          "type": "uint256"
        },
        {
          "name": "votersGainRepRatioFromLostRep",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_numOfChoices",
          "type": "uint256"
        },
        {
          "name": "_paramsHash",
          "type": "bytes32"
        },
        {
          "name": "_avatar",
          "type": "address"
        },
        {
          "name": "_executable",
          "type": "address"
        },
        {
          "name": "_proposer",
          "type": "address"
        }
      ],
      "name": "propose",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_proposalId",
          "type": "bytes32"
        },
        {
          "name": "_voter",
          "type": "address"
        }
      ],
      "name": "voteInfo",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        },
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_proposalId",
          "type": "bytes32"
        },
        {
          "name": "_beneficiary",
          "type": "address"
        }
      ],
      "name": "redeemAmount",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_hashedParameters",
          "type": "bytes32"
        }
      ],
      "name": "updateParameters",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_proposalId",
          "type": "bytes32"
        },
        {
          "name": "_vote",
          "type": "uint256"
        },
        {
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "stake",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_proposalId",
          "type": "bytes32"
        },
        {
          "name": "_beneficiary",
          "type": "address"
        }
      ],
      "name": "redeemVoterReputation",
      "outputs": [
        {
          "name": "",
          "type": "int256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "proposals",
      "outputs": [
        {
          "name": "avatar",
          "type": "address"
        },
        {
          "name": "numOfChoices",
          "type": "uint256"
        },
        {
          "name": "executable",
          "type": "address"
        },
        {
          "name": "totalVotes",
          "type": "uint256"
        },
        {
          "name": "totalStakes",
          "type": "uint256"
        },
        {
          "name": "votersStakes",
          "type": "uint256"
        },
        {
          "name": "lostReputation",
          "type": "uint256"
        },
        {
          "name": "submittedTime",
          "type": "uint256"
        },
        {
          "name": "boostedPhaseTime",
          "type": "uint256"
        },
        {
          "name": "state",
          "type": "uint8"
        },
        {
          "name": "winningVote",
          "type": "uint256"
        },
        {
          "name": "proposer",
          "type": "address"
        },
        {
          "name": "boostedVotePeriodLimit",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_proposalId",
          "type": "bytes32"
        },
        {
          "name": "",
          "type": "uint256"
        },
        {
          "name": "",
          "type": "address"
        }
      ],
      "name": "ownerVote",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_proposalId",
          "type": "bytes32"
        }
      ],
      "name": "cancelProposal",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_proposalId",
          "type": "bytes32"
        },
        {
          "name": "_beneficiary",
          "type": "address"
        }
      ],
      "name": "redeemStakerRepAmount",
      "outputs": [
        {
          "name": "",
          "type": "int256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_proposalId",
          "type": "bytes32"
        }
      ],
      "name": "winningVote",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_avatar",
          "type": "address"
        }
      ],
      "name": "scoreThresholdParams",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        },
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_proposalId",
          "type": "bytes32"
        }
      ],
      "name": "redeemProposerReputation",
      "outputs": [
        {
          "name": "",
          "type": "int256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_proposalId",
          "type": "bytes32"
        }
      ],
      "name": "state",
      "outputs": [
        {
          "name": "",
          "type": "uint8"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_params",
          "type": "uint256[12]"
        },
        {
          "name": "_governanceFormulasInterface",
          "type": "address"
        }
      ],
      "name": "setParameters",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_proposalId",
          "type": "bytes32"
        },
        {
          "name": "_vote",
          "type": "uint256"
        }
      ],
      "name": "voteStake",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "stakingToken",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_proposalId",
          "type": "bytes32"
        }
      ],
      "name": "proposalStatus",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        },
        {
          "name": "",
          "type": "uint256"
        },
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_proposalId",
          "type": "bytes32"
        }
      ],
      "name": "shouldBoost",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_proposalId",
          "type": "bytes32"
        },
        {
          "name": "_staker",
          "type": "address"
        }
      ],
      "name": "staker",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        },
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_proposalId",
          "type": "bytes32"
        }
      ],
      "name": "votesStatus",
      "outputs": [
        {
          "name": "votes",
          "type": "uint256[11]"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_proposalId",
          "type": "bytes32"
        }
      ],
      "name": "cancelVote",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_proposalId",
          "type": "bytes32"
        },
        {
          "name": "_vote",
          "type": "uint256"
        }
      ],
      "name": "vote",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_proposalId",
          "type": "bytes32"
        }
      ],
      "name": "getNumberOfChoices",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_proposalId",
          "type": "bytes32"
        },
        {
          "name": "_beneficiary",
          "type": "address"
        }
      ],
      "name": "redeemVoterAmount",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_proposalId",
          "type": "bytes32"
        },
        {
          "name": "_vote",
          "type": "uint256"
        },
        {
          "name": "_rep",
          "type": "uint256"
        },
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "voteWithSpecifiedAmounts",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_proposalId",
          "type": "bytes32"
        }
      ],
      "name": "isVotable",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_avatar",
          "type": "address"
        }
      ],
      "name": "threshold",
      "outputs": [
        {
          "name": "",
          "type": "int256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_proposalId",
          "type": "bytes32"
        },
        {
          "name": "_beneficiary",
          "type": "address"
        }
      ],
      "name": "redeem",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_proposalId",
          "type": "bytes32"
        }
      ],
      "name": "totalReputationSupply",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_params",
          "type": "uint256[12]"
        },
        {
          "name": "_governanceFormulasInterface",
          "type": "address"
        }
      ],
      "name": "getParametersHash",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_proposalId",
          "type": "bytes32"
        }
      ],
      "name": "score",
      "outputs": [
        {
          "name": "",
          "type": "int256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_proposalId",
          "type": "bytes32"
        }
      ],
      "name": "execute",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "name": "orgBoostedProposalsCnt",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_proposalId",
          "type": "bytes32"
        }
      ],
      "name": "proposalAvatar",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "hashedParameters",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "name": "_stakingToken",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "_proposalId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "name": "_numOfChoices",
          "type": "uint256"
        },
        {
          "indexed": false,
          "name": "_proposer",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "_paramsHash",
          "type": "bytes32"
        }
      ],
      "name": "NewProposal",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "_proposalId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "name": "_decision",
          "type": "uint256"
        }
      ],
      "name": "ExecuteProposal",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "_proposalId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "name": "_voter",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "_vote",
          "type": "uint256"
        },
        {
          "indexed": false,
          "name": "_reputation",
          "type": "uint256"
        }
      ],
      "name": "VoteProposal",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "_proposalId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "name": "_voter",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "_vote",
          "type": "uint256"
        },
        {
          "indexed": false,
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "Stake",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "_proposalId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "name": "_beneficiary",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "Redeem",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "_proposalId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "name": "_beneficiary",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "_amount",
          "type": "int256"
        }
      ],
      "name": "RedeemReputation",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "name": "proposalId",
          "type": "bytes32"
        }
      ],
      "name": "NewProposal",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    }
  ],
  "bytecode": "0x6060604052341561000f57600080fd5b604051602080613a568339810160405280805160008054600160a060020a03338116600160a060020a0319928316179092556006805492909316911617905550506139f78061005f6000396000f3006060604052600436106101c95763ffffffff60e060020a6000350416630250680481146101ce5780630905c9f914610257578063119ce91b1461029a5780631855f7ef146102d45780632ac2af53146102f65780632daedd521461030e578063307285f81461033e57806332ed5b1214610360578063339e23d11461042457806337376ca81461044957806337f6917d1461045f5780633c133818146104815780635e31005d1461049757806361667b34146104b657806361d585da146104cc57806361f974bf14610506578063707437681461054d57806372f702f31461056657806379a1c1f61461059557806380f5e0a1146105cf5780638baa8b1f146105e55780638da5cb5b146106075780638fe23d1a1461061a5780639525c0cc146106695780639ef1204c1461067f578063a003651d14610698578063a0127c73146106ae578063ac5d8745146106d0578063c0835106146106ef578063c86ec2bf14610705578063cc3bf9e914610724578063d53cd99314610746578063db843da01461075c578063e5af18c5146107a3578063e751f271146107b9578063ed7f75c9146107cf578063f2fde38b146107ee578063f91cb3d61461080d578063f98e87ba14610823575b600080fd5b34156101d957600080fd5b6101e4600435610836565b6040519c8d5260208d019b909b526040808d019a909a5260608c019890985260808b0196909652600160a060020a0390941660a08a015260c089019290925260e08801526101008701526101208601526101408501526101608401526101808301919091526101a0909101905180910390f35b341561026257600080fd5b610288600435602435600160a060020a03604435811690606435811690608435166108a7565b60405190815260200160405180910390f35b34156102a557600080fd5b6102bc600435600160a060020a0360243516610ae7565b60405191825260208201526040908101905180910390f35b34156102df57600080fd5b610288600435600160a060020a0360243516610b5b565b341561030157600080fd5b61030c600435610d54565b005b341561031957600080fd5b61032a600435602435604435610d74565b604051901515815260200160405180910390f35b341561034957600080fd5b610288600435600160a060020a036024351661106b565b341561036b57600080fd5b610376600435611296565b604051808e600160a060020a0316600160a060020a031681526020018d81526020018c600160a060020a0316600160a060020a031681526020018b81526020018a81526020018981526020018881526020018781526020018681526020018560048111156103e057fe5b60ff16815260200184815260200183600160a060020a0316600160a060020a031681526020018281526020019d505050505050505050505050505060405180910390f35b341561042f57600080fd5b61032a600435602435600160a060020a0360443516611312565b341561045457600080fd5b61032a600435611336565b341561046a57600080fd5b610288600435600160a060020a036024351661135a565b341561048c57600080fd5b6102886004356114f4565b34156104a257600080fd5b6102bc600160a060020a0360043516611509565b34156104c157600080fd5b6102886004356115de565b34156104d757600080fd5b6104e2600435611799565b604051808260048111156104f257fe5b60ff16815260200191505060405180910390f35b341561051157600080fd5b610288600461018481600c61018060405190810160405291908282610180808284375093955050509135600160a060020a031691506117b19050565b341561055857600080fd5b61028860043560243561193e565b341561057157600080fd5b61057961195f565b604051600160a060020a03909116815260200160405180910390f35b34156105a057600080fd5b6105ab60043561196e565b60405180848152602001838152602001828152602001935050505060405180910390f35b34156105da57600080fd5b61032a600435611992565b34156105f057600080fd5b6102bc600435600160a060020a0360243516611bd7565b341561061257600080fd5b610579611c0b565b341561062557600080fd5b610630600435611c1a565b604051808261016080838360005b8381101561065657808201518382015260200161063e565b5050505090500191505060405180910390f35b341561067457600080fd5b61030c600435611c68565b341561068a57600080fd5b61032a600435602435611c81565b34156106a357600080fd5b610288600435611cad565b34156106b957600080fd5b610288600435600160a060020a0360243516611cc2565b34156106db57600080fd5b61032a600435602435604435606435611e72565b34156106fa57600080fd5b61032a600435611e95565b341561071057600080fd5b610288600160a060020a0360043516611f14565b341561072f57600080fd5b61032a600435600160a060020a0360243516612081565b341561075157600080fd5b610288600435612426565b341561076757600080fd5b610288600461018481600c61018060405190810160405291908282610180808284375093955050509135600160a060020a031691506124fb9050565b34156107ae57600080fd5b6102886004356125c4565b34156107c457600080fd5b61032a600435612789565b34156107da57600080fd5b610288600160a060020a0360043516613108565b34156107f957600080fd5b61030c600160a060020a036004351661311a565b341561081857600080fd5b6105796004356131a8565b341561082e57600080fd5b6102886131c3565b600260208190526000918252604090912080546001820154928201546003830154600484015460058501546006860154600787015460088801546009890154600a8a0154600b8b0154600c909b0154999b9a989997989697600160a060020a0390961696949593949293919290918d565b6000806108b2613862565b6000881180156108c35750600a8811155b15156108ce57600080fd5b600160a060020a03851615156108e357600080fd5b600087815260026020526040812054116108fc57600080fd5b30600454604051600160a060020a03929092166c01000000000000000000000000028252601482015260340160405190819003902060048054600101905560208201899052600160a060020a03878116835286166040830152915060026101208201819052504260e0820152600087815260026020818152604080842090920154610180850152600160a060020a038716610160850152848352600390529020819081518154600160a060020a031916600160a060020a0391909116178155602082015181600101556040820151600282018054600160a060020a031916600160a060020a0392909216919091179055606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e08201518160070155610100820151816008015561012082015160098201805460ff19166001836004811115610a4757fe5b021790555061014082015181600a0155610160820151600b82018054600160a060020a031916600160a060020a0392909216919091179055610180820151600c9091015550817f87f4bf271cb69a01d3bd1777b30c5b287cdd0871148e55607d9c57cc8b8bfc9e89338a604051928352600160a060020a0390911660208301526040808301919091526060909101905180910390a2509695505050505050565b600080610af26138f1565b6000858152600360209081526040808320600160a060020a0388168452600e019091529081902090606090519081016040908152825482526001830154602083015260029092015460ff1615159181019190915290508051816020015192509250509250929050565b600080610b66613911565b600085815260036020526040812054610b8790600160a060020a03166131c9565b600081815260026020526040908190209194506101a090519081016040908152825482526001830154602083015260028301549082015260038201546060820152600482015460808201526005820154600160a060020a031660a08201908152600683015460c0830152600783015460e083015260088301546101008301526009830154610120830152600a830154610140830152600b830154610160830152600c90920154610180820152925060009051600160a060020a03161415610ccc57506000858152600360209081526040808320600a8101548452600f8101909252909120541515610c7b5760009350610d4b565b6000868152600360209081526040808320600a01548352600f84018252808320546004850154600160a060020a038a1685526010860190935292206001015402811515610cc457fe5b049350610d4b565b8160a00151600160a060020a0316631855f7ef878760006040516020015260405160e060020a63ffffffff85160281526004810192909252600160a060020a03166024820152604401602060405180830381600087803b1515610d2e57600080fd5b6102c65a03f11515610d3f57600080fd5b50505060405180519450505b50505092915050565b60005433600160a060020a03908116911614610d6f57600080fd5b600155565b600080600080610d82613911565b610d8b88612789565b15610d995760019450611060565b600260008981526003602052604090206009015460ff166004811115610dbb57fe5b14610dc95760009450611060565b600088815260036020526040902060018101549094508693508710610ded57600080fd5b600088815260036020526040902054610e0e90600160a060020a03166131c9565b600081815260026020526040908190209193506101a090519081016040908152825482526001830154602083015260028301549082015260038201546060820152600482015460808201526005820154600160a060020a031660a0820152600682015460c08201908152600783015460e083015260088301546101008301526009830154610120830152600a830154610140830152600b830154610160830152600c909201546101808201529150518311610ec557fe5b600654600160a060020a03166323b872dd33308660006040516020015260405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b1515610f3157600080fd5b6102c65a03f11515610f4257600080fd5b50505060405180519050506040805190810160409081528882526020808301869052600160a060020a033316600090815260108801909152208151815560208201516001909101555060648361014083015102811515610f9e57fe5b6005860180549290910490910190556000878152600f85016020526040902054610fc990849061328a565b6000888152600f8601602052604090205560648361014083015160640302811515610ff057fe5b04925061100a84600401548461328a90919063ffffffff16565b6004850155600160a060020a033316887f2bdde1c9d1017e533748fb83ed29c7cc39586ea82c3be3a2ffa08b7f048b214d898960405191825260208201526040908101905180910390a361105d88612789565b94505b505050509392505050565b600080611076613911565b600085815260036020526040812054819061109990600160a060020a03166131c9565b600081815260026020526040908190209195506101a0905190810160409081528254825260018301546020808401919091526002840154828401526003808501546060850152600485015460808501526005850154600160a060020a031660a0850152600685015460c0850152600785015460e085015260088501546101008501526009850154610120850152600a850154610140850152600b850154610160850152600c9094015461018084015260008b815293905282209094509250600983015460ff16600481111561116a57fe5b14156111a8576064836101600151600160a060020a0388166000908152600e85016020526040902060010154028115156111a057fe5b04945061128c565b600382015415156111bc576000945061128c565b600160a060020a0386166000908152600e8301602052604090206002015460ff1680156112065750600160a060020a0386166000908152600e83016020526040902054600a830154145b1561123f576064836101600151600160a060020a0388166000908152600e850160205260409020600101540281151561123b57fe5b0490505b8160030154606484610180015184600601540281151561125b57fe5b600160a060020a0389166000908152600e860160205260409020600101549190040281151561128657fe5b04810194505b5050505092915050565b600360208190526000918252604090912080546001820154600283015493830154600484015460058501546006860154600787015460088801546009890154600a8a0154600b8b0154600c909b0154600160a060020a039a8b169c999b998b169a98999798969795969495939460ff909316939192909116908d565b6000838461131f81611e95565b151561132a57600080fd5b50600095945050505050565b6000818261134381611e95565b151561134e57600080fd5b600092505b5050919050565b600080611365613911565b600085815260036020526040812054819061138890600160a060020a03166131c9565b600081815260026020526040908190209195506101a090519081016040908152825482526001808401546020808501919091526002850154838501526003808601546060860152600486015460808601526005860154600160a060020a0390811660a0870152600687015460c0870152600787015460e087015260088701546101008701526009870154610120870152600a870154610140870152600b870154610160870152600c9096015461018086015260008d8152908252838120958c1681526010860190915291822001549195509193501180156114865750600a820154600160a060020a0387166000908152601084016020526040902054145b156114ea57600a8201546000908152600f8301602052604090205460646101808501516064038460060154028115156114bb57fe5b600160a060020a0389166000908152601086016020526040902060010154919004028115156114e657fe5b0490505b9695505050505050565b6000908152600360205260409020600a015490565b6000806000611516613911565b61151f856131c9565b600081815260026020526040908190209193506101a0905190810160409081528254825260018301546020830152600283015490820152600382015460608201908152600483015460808301526005830154600160a060020a031660a0830152600683015460c0830152600783015460e083015260088301546101008301526009830154610120830152600a830154610140830152600b830154610160830152600c909201546101808201529150518160800151935093505050915091565b6000806115e9613911565b600084815260036020526040812054819061160c90600160a060020a03166131c9565b600081815260026020526040908190209195506101a090519081016040908152825482526001830154602083015260028301549082015260038201546060820152600482015460808201526005820154600160a060020a031660a08201908152600683015460c0830152600783015460e083015260088301546101008301526009830154610120830152600a830154610140830152600b830154610160830152600c90920154610180820152935060009051600160a060020a0316141561172057506000858152600360205260409020600a81015415156116f0576000915061171b565b6000808052600d82016020526040808220546001835291205403610120840151028361010001510191505b611790565b8260a00151600160a060020a03166361667b348760006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561177357600080fd5b6102c65a03f1151561178457600080fd5b50505060405180519250505b50949350505050565b60009081526003602052604090206009015460ff1690565b60008060648451111580156117c7575060008451115b15156117d257600080fd5b6000610100850151116117e457600080fd5b6117ee84846124fb565b90506101a0604051908101604052808551815260200185600160200201518152602001604086015181526020016060860151815260200160808601518152600160a060020a038516602082015260400160a0860151815260200160c0860151815260200160e0860151815260200161010086015181526020016101208601518152602001610140860151815260200161016086015190526000828152600260205260409020815181556020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151600582018054600160a060020a031916600160a060020a039290921691909117905560c0820151816006015560e082015181600701556101008201518160080155610120820151816009015561014082015181600a015561016082015181600b0155610180820151600c90910155509050805b5092915050565b6000918252600360209081526040808420928452600f909201905290205490565b600654600160a060020a031681565b60009081526003602081905260409091209081015460048201546005909201549092565b600080600061199f613911565b600085815260036020526040902054600160a060020a031692506119c2836131c9565b600081815260026020526040908190209193506101a090519081016040908152825482526001830154602083015260028301549082015260038201546060820152600482015460808201526005820154600160a060020a031660a08201908152600683015460c0830152600783015460e083015260088301546101008301526009830154610120830152600a830154610140830152600b830154610160830152600c90920154610180820152915060009051600160a060020a03161415611b5f57611a8c83611f14565b611b568685600160a060020a03166389ae1c906000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611ad657600080fd5b6102c65a03f11515611ae757600080fd5b50505060405180519050600160a060020a03166318160ddd6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611b3657600080fd5b6102c65a03f11515611b4757600080fd5b505050604051805190506132a0565b12159350611bcf565b8060a00151600160a060020a03166380f5e0a18660006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515611bb257600080fd5b6102c65a03f11515611bc357600080fd5b50505060405180519450505b505050919050565b6000918252600360209081526040808420600160a060020a0393909316845260109092019052902080546001909101549091565b600054600160a060020a031681565b611c22613983565b6000828152600360205260408120905b8160010154811015611353576000818152600d830160205260409020548382600b8110611c5b57fe5b6020020152600101611c32565b80611c7281611e95565b1515611c7d57600080fd5b5050565b600082611c8d81611e95565b1515611c9857600080fd5b611ca58433856000613305565b949350505050565b60009081526003602052604090206001015490565b600080611ccd613911565b600085815260036020526040812054611cee90600160a060020a03166131c9565b600081815260026020526040908190209194506101a0905190810160409081528254825260018301546020808401919091526002840154828401526003808501546060850152600485015460808501526005850154600160a060020a031660a0850152600685015460c0850152600785015460e085015260088501546101008501526009850154610120850152600a850154610140850152600b850154610160850152600c9094015461018084015260008a81529084905220918201549093509091501515611dc05760009350610d4b565b600060a0830151600160a060020a03161415611e10576003810154600160a060020a0386166000908152600e83016020526040902060010154811515611e0257fe5b048160050154029350610d4b565b8160a00151600160a060020a031663a0127c73878760006040516020015260405160e060020a63ffffffff85160281526004810192909252600160a060020a03166024820152604401602060405180830381600087803b1515610d2e57600080fd5b600084611e7e81611e95565b1515611e8957600080fd5b6114ea86338787613305565b6000600260008381526003602052604090206009015460ff166004811115611eb957fe5b1480611ee45750600360008381526003602052604090206009015460ff166004811115611ee257fe5b145b80611f0e5750600460008381526003602052604090206009015460ff166004811115611f0c57fe5b145b92915050565b6000806000611f21613911565b60029250611f2e856131c9565b600081815260026020526040908190209193506101a090519081016040908152825482526001830154602083015260028301549082015260038201546060820152600482015460808201526005820154600160a060020a031660a08201908152600683015460c0830152600783015460e083015260088301546101008301526009830154610120830152600a830154610140830152600b830154610160830152600c90920154610180820152915060009051600160a060020a03161415612026578060800151600160a060020a03861660009081526005602052604090205481151561201657fe5b04830a8160600151029350611bcf565b8060a00151600160a060020a031663c86ec2bf8660006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515611bb257600080fd5b600082815260036020526040812081806001600984015460ff1660048111156120a657fe5b14806120c457506000600984015460ff1660048111156120c257fe5b145b15156120cf57600080fd5b600160a060020a038516600090815260108401602052604081206001015411801561212357506000868152600360209081526040808320600a0154600160a060020a03891684526010870190925290912054145b1561216a576121328686610b5b565b915061213e868661135a565b6000878152600360209081526040808320600160a060020a038a16845260100190915281206001015590505b8260010154600214801561219a5750600160a060020a0385166000908152600e8401602052604090206001015415155b156121d7576121a98686611cc2565b820191506121b7868661106b565b600160a060020a0386166000908152600e85016020526040812060010155015b826001015460021480156121fa5750600b830154600160a060020a038681169116145b801561220a575082600a01546001145b1561222c57612218866115de565b600b84018054600160a060020a0319169055015b81156122eb57600654600160a060020a031663a9059cbb868460006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561229157600080fd5b6102c65a03f115156122a257600080fd5b50505060405180515050600160a060020a038516867fc1d8140f5bf31e06ddd48b4deb96488598efd767dc846befd4faf27a3fe986df8460405190815260200160405180910390a35b801561241a578254600160a060020a0316638da5cb5b6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561233857600080fd5b6102c65a03f1151561234957600080fd5b50505060405180518454600160a060020a039182169250636cfc658291849189911660006040516020015260405160e060020a63ffffffff86160281526004810193909352600160a060020a039182166024840152166044820152606401602060405180830381600087803b15156123c057600080fd5b6102c65a03f115156123d157600080fd5b50505060405180515050600160a060020a038516867f72c5f0d9e48fcc486712bd7f7279eceb445c49687a315b4e830cdab968e289f28360405190815260200160405180910390a35b50600195945050505050565b60008181526003602052604080822054600160a060020a0316906389ae1c9090839051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561247b57600080fd5b6102c65a03f1151561248c57600080fd5b50505060405180519050600160a060020a03166318160ddd6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156124db57600080fd5b6102c65a03f115156124ec57600080fd5b50505060405180519392505050565b60008251602084015160408501516060860151608087015160a088015160c089015160e08a01516101008b01516101208c01516101408d01516101608e01518d6040519c8d5260208d019b909b526040808d019a909a5260608c019890985260808b019690965260a08a019490945260c089019290925260e0880152610100870152610120860152610140850152610160840152600160a060020a039091166c010000000000000000000000000261018083015261019490910190518091039020905092915050565b6000806125cf613911565b6000848152600360205260409020546125f090600160a060020a03166131c9565b600081815260026020526040908190209193506101a090519081016040908152825482526001830154602083015260028301549082015260038201546060820152600482015460808201526005820154600160a060020a031660a08201908152600683015460c0830152600783015460e083015260088301546101008301526009830154610120830152600a830154610140830152600b830154610160830152600c90920154610180820152915060009051600160a060020a03161415612714576000848152600360205260408082205461270d928792600160a060020a03909216916389ae1c90919051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611ad657600080fd5b9250611353565b8060a00151600160a060020a031663e5af18c58560006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561276757600080fd5b6102c65a03f1151561277857600080fd5b505050604051805190509250611353565b600080612794613911565b600061279e613862565b6000866127aa81611e95565b15156127b557600080fd5b6000888152600360205260409020546127d690600160a060020a03166131c9565b600081815260026020526040908190209197506101a0905190810160409081528254825260018301546020808401919091526002840154828401526003808501546060850152600485015460808501526005850154600160a060020a031660a0850152600685015460c0850152600785015460e085015260088501546101008501526009850154610120850152600a850154610140850152600b850154610160850152600c9094015461018084015260008c81529390529091209095509350606485518554600160a060020a03166389ae1c906000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156128e057600080fd5b6102c65a03f115156128f157600080fd5b50505060405180519050600160a060020a03166318160ddd6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561294057600080fd5b6102c65a03f1151561295157600080fd5b505050604051805190500281151561296557fe5b0491506002600985015460ff16600481111561297d57fe5b1415612d395784602001516007850154420310612b2f57836101a060405190810160409081528254600160a060020a0390811683526001840154602084015260028401541690820152600382015460608201526004808301546080830152600583015460a0830152600683015460c0830152600783015460e08301526008830154610100830152600983015491929161012084019160ff90911690811115612a2157fe5b6004811115612a2c57fe5b8152600a8201546020820152600b820154600160a060020a0316604080830191909152600c9092015460609091015290935088906000805160206139ac833981519152906000905190815260200160405180910390a28260400151600160a060020a031663310ce4e28985516000806040516020015260405160e060020a63ffffffff86160281526004810193909352600160a060020a0390911660248301526044820152606401602060405180830381600087803b1515612aed57600080fd5b6102c65a03f11515612afe57600080fd5b505050604051805150506000888152600360205260408120600901805460ff19169055600a850155600196506130fd565b600a8401546000908152600d8501602052604090205482901115612cf557836101a060405190810160409081528254600160a060020a0390811683526001840154602084015260028401541690820152600382015460608201526004808301546080830152600583015460a0830152600683015460c0830152600783015460e08301526008830154610100830152600983015491929161012084019160ff90911690811115612bda57fe5b6004811115612be557fe5b8152600a828101546020830152600b830154600160a060020a0316604080840191909152600c9093015460609092019190915286015491945089916000805160206139ac833981519152915190815260200160405180910390a28260400151600160a060020a031663310ce4e289855187600a015460006040516020015260405160e060020a63ffffffff86160281526004810193909352600160a060020a0390911660248301526044820152606401602060405180830381600087803b1515612cae57600080fd5b6102c65a03f11515612cbf57600080fd5b50505060405180515050600088815260036020526040902060090180546001919060ff191682805b0217905550600196506130fd565b612cfe88611992565b15612d395760098401805460ff191660031790554260088501558354600160a060020a03166000908152600560205260409020805460010190555b6003600985015460ff166004811115612d4e57fe5b1480612d6c57506004600985015460ff166004811115612d6a57fe5b145b156130f857600c8401546008850154420310612f4957836101a060405190810160409081528254600160a060020a0390811683526001840154602084015260028401541690820152600382015460608201526004808301546080830152600583015460a0830152600683015460c0830152600783015460e08301526008830154610100830152600983015491929161012084019160ff90911690811115612e0f57fe5b6004811115612e1a57fe5b8152600a828101546020830152600b830154600160a060020a0316604080840191909152600c9093015460609092019190915286015491945089916000805160206139ac833981519152915190815260200160405180910390a28260400151600160a060020a031663310ce4e289855187600a015460006040516020015260405160e060020a63ffffffff86160281526004810193909352600160a060020a0390911660248301526044820152606401602060405180830381600087803b1515612ee357600080fd5b6102c65a03f11515612ef457600080fd5b505050604051805150506000888152600360205260408120600901805460ff191660011790556005908451600160a060020a0316815260208101919091526040016000208054600019019055600196506130fd565b600a8401546000908152600d85016020526040902054829011156130f857836101a060405190810160409081528254600160a060020a0390811683526001840154602084015260028401541690820152600382015460608201526004808301546080830152600583015460a0830152600683015460c0830152600783015460e08301526008830154610100830152600983015491929161012084019160ff90911690811115612ff457fe5b6004811115612fff57fe5b8152600a828101546020830152600b830154600160a060020a0316604080840191909152600c9093015460609092019190915286015491945089916000805160206139ac833981519152915190815260200160405180910390a28260400151600160a060020a031663310ce4e289855187600a015460006040516020015260405160e060020a63ffffffff86160281526004810193909352600160a060020a0390911660248301526044820152606401602060405180830381600087803b15156130c857600080fd5b6102c65a03f115156130d957600080fd5b505050604051805150506009840180546001919060ff19168280612ce7565b600096505b505050505050919050565b60056020526000908152604090205481565b60005433600160a060020a0390811691161461313557600080fd5b600160a060020a038116151561314a57600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008054600160a060020a031916600160a060020a0392909216919091179055565b600090815260036020526040902054600160a060020a031690565b60015481565b600081600160a060020a0316638da5cb5b6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561321157600080fd5b6102c65a03f1151561322257600080fd5b50505060405180519050600160a060020a0316631c4d5608308460006040516020015260405160e060020a63ffffffff8516028152600160a060020a03928316600482015291166024820152604401602060405180830381600087803b15156124db57600080fd5b60008282018381101561329957fe5b9392505050565b60008281526003602052604081206001810154600214156132dc576000808052600f820160205260408082205460018352912054039150611937565b6002830a600282600301540a8260050154836004015401028115156132fd57fe5b049150611937565b600080613310613911565b60008060008060006133218c612789565b1561332f5760019750613853565b60008c81526003602052604090205461335090600160a060020a03166131c9565b600081815260026020526040908190209198506101a09051908101604052908160008201548152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820160009054906101000a9004600160a060020a0316600160a060020a0316600160a060020a0316815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a8201548152602001600b8201548152602001600c820154815250509550600360008d60001916600019168152602001908152602001600020945084600101548a10151561344757600080fd5b8454600160a060020a03166389ae1c906000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561348e57600080fd5b6102c65a03f1151561349f57600080fd5b50505060405180519050600160a060020a031663db89c0448c60006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b15156134ff57600080fd5b6102c65a03f1151561351057600080fd5b50505060405180519450508884101561352857600080fd5b889250821515613536578392505b600160a060020a038b166000908152600e86016020526040902060010154156135625760009750613853565b60008a8152600d8601602052604090205461358490849063ffffffff61328a16565b60008b8152600d87016020526040808220839055600a8801548252812054908c9052901115613646574291506004600986015460ff1660048111156135c557fe5b14806135fe57506003600986015460ff1660048111156135e157fe5b1480156135fe57508560e001518660400151038560080154830310155b1561363e57600885018290556004600986015460ff16600481111561361f57fe5b1461363e578560e00151600c86015560098501805460ff191660041790555b600a85018a90555b600385015461365c90849063ffffffff61328a16565b600380870191909155600986015460ff16600481111561367857fe5b1461378e576064838761016001510281151561369057fe5b86549190049150600160a060020a0316638da5cb5b6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156136dc57600080fd5b6102c65a03f115156136ed57600080fd5b50505060405180518654600160a060020a039182169250636cfc6582916000198502918f911660006040516020015260405160e060020a63ffffffff86160281526004810193909352600160a060020a039182166024840152166044820152606401602060405180830381600087803b151561376857600080fd5b6102c65a03f1151561377957600080fd5b50505060405180515050600685018054820190555b606060405190810160409081528b82526020820185905281016002600988015460ff1660048111156137bc57fe5b149052600160a060020a038c166000908152600e87016020526040902081518155602082015181600101556040820151600291909101805460ff191691151591909117905550600160a060020a038b168c7fda942061999a8ace5c52eff42d0cda374fdf415a1a769029f7dae48368aebf398c8760405191825260208201526040908101905180910390a36138508c612789565b97505b50505050505050949350505050565b6101a0604051908101604052806000600160a060020a03168152602001600081526020016000600160a060020a03168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600060048111156138cd57fe5b8152602001600081526020016000600160a060020a03168152602001600081525090565b606060405190810160409081526000808352602083018190529082015290565b6101a06040519081016040528060008152602001600081526020016000815260200160008152602001600081526020016000600160a060020a03168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b610160604051908101604052600b815b600081526020019060019003908161399357905050905600c65afc54dab4d142869ad160726aafd56beeeb9eab55c318fa56f923b6ea7d43a165627a7a723058201180c1366870b500469c3e5de883a7c262d048ad6ab4dfb4c2a30c28ebf88b450029",
  "deployedBytecode": "0x6060604052600436106101c95763ffffffff60e060020a6000350416630250680481146101ce5780630905c9f914610257578063119ce91b1461029a5780631855f7ef146102d45780632ac2af53146102f65780632daedd521461030e578063307285f81461033e57806332ed5b1214610360578063339e23d11461042457806337376ca81461044957806337f6917d1461045f5780633c133818146104815780635e31005d1461049757806361667b34146104b657806361d585da146104cc57806361f974bf14610506578063707437681461054d57806372f702f31461056657806379a1c1f61461059557806380f5e0a1146105cf5780638baa8b1f146105e55780638da5cb5b146106075780638fe23d1a1461061a5780639525c0cc146106695780639ef1204c1461067f578063a003651d14610698578063a0127c73146106ae578063ac5d8745146106d0578063c0835106146106ef578063c86ec2bf14610705578063cc3bf9e914610724578063d53cd99314610746578063db843da01461075c578063e5af18c5146107a3578063e751f271146107b9578063ed7f75c9146107cf578063f2fde38b146107ee578063f91cb3d61461080d578063f98e87ba14610823575b600080fd5b34156101d957600080fd5b6101e4600435610836565b6040519c8d5260208d019b909b526040808d019a909a5260608c019890985260808b0196909652600160a060020a0390941660a08a015260c089019290925260e08801526101008701526101208601526101408501526101608401526101808301919091526101a0909101905180910390f35b341561026257600080fd5b610288600435602435600160a060020a03604435811690606435811690608435166108a7565b60405190815260200160405180910390f35b34156102a557600080fd5b6102bc600435600160a060020a0360243516610ae7565b60405191825260208201526040908101905180910390f35b34156102df57600080fd5b610288600435600160a060020a0360243516610b5b565b341561030157600080fd5b61030c600435610d54565b005b341561031957600080fd5b61032a600435602435604435610d74565b604051901515815260200160405180910390f35b341561034957600080fd5b610288600435600160a060020a036024351661106b565b341561036b57600080fd5b610376600435611296565b604051808e600160a060020a0316600160a060020a031681526020018d81526020018c600160a060020a0316600160a060020a031681526020018b81526020018a81526020018981526020018881526020018781526020018681526020018560048111156103e057fe5b60ff16815260200184815260200183600160a060020a0316600160a060020a031681526020018281526020019d505050505050505050505050505060405180910390f35b341561042f57600080fd5b61032a600435602435600160a060020a0360443516611312565b341561045457600080fd5b61032a600435611336565b341561046a57600080fd5b610288600435600160a060020a036024351661135a565b341561048c57600080fd5b6102886004356114f4565b34156104a257600080fd5b6102bc600160a060020a0360043516611509565b34156104c157600080fd5b6102886004356115de565b34156104d757600080fd5b6104e2600435611799565b604051808260048111156104f257fe5b60ff16815260200191505060405180910390f35b341561051157600080fd5b610288600461018481600c61018060405190810160405291908282610180808284375093955050509135600160a060020a031691506117b19050565b341561055857600080fd5b61028860043560243561193e565b341561057157600080fd5b61057961195f565b604051600160a060020a03909116815260200160405180910390f35b34156105a057600080fd5b6105ab60043561196e565b60405180848152602001838152602001828152602001935050505060405180910390f35b34156105da57600080fd5b61032a600435611992565b34156105f057600080fd5b6102bc600435600160a060020a0360243516611bd7565b341561061257600080fd5b610579611c0b565b341561062557600080fd5b610630600435611c1a565b604051808261016080838360005b8381101561065657808201518382015260200161063e565b5050505090500191505060405180910390f35b341561067457600080fd5b61030c600435611c68565b341561068a57600080fd5b61032a600435602435611c81565b34156106a357600080fd5b610288600435611cad565b34156106b957600080fd5b610288600435600160a060020a0360243516611cc2565b34156106db57600080fd5b61032a600435602435604435606435611e72565b34156106fa57600080fd5b61032a600435611e95565b341561071057600080fd5b610288600160a060020a0360043516611f14565b341561072f57600080fd5b61032a600435600160a060020a0360243516612081565b341561075157600080fd5b610288600435612426565b341561076757600080fd5b610288600461018481600c61018060405190810160405291908282610180808284375093955050509135600160a060020a031691506124fb9050565b34156107ae57600080fd5b6102886004356125c4565b34156107c457600080fd5b61032a600435612789565b34156107da57600080fd5b610288600160a060020a0360043516613108565b34156107f957600080fd5b61030c600160a060020a036004351661311a565b341561081857600080fd5b6105796004356131a8565b341561082e57600080fd5b6102886131c3565b600260208190526000918252604090912080546001820154928201546003830154600484015460058501546006860154600787015460088801546009890154600a8a0154600b8b0154600c909b0154999b9a989997989697600160a060020a0390961696949593949293919290918d565b6000806108b2613862565b6000881180156108c35750600a8811155b15156108ce57600080fd5b600160a060020a03851615156108e357600080fd5b600087815260026020526040812054116108fc57600080fd5b30600454604051600160a060020a03929092166c01000000000000000000000000028252601482015260340160405190819003902060048054600101905560208201899052600160a060020a03878116835286166040830152915060026101208201819052504260e0820152600087815260026020818152604080842090920154610180850152600160a060020a038716610160850152848352600390529020819081518154600160a060020a031916600160a060020a0391909116178155602082015181600101556040820151600282018054600160a060020a031916600160a060020a0392909216919091179055606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e08201518160070155610100820151816008015561012082015160098201805460ff19166001836004811115610a4757fe5b021790555061014082015181600a0155610160820151600b82018054600160a060020a031916600160a060020a0392909216919091179055610180820151600c9091015550817f87f4bf271cb69a01d3bd1777b30c5b287cdd0871148e55607d9c57cc8b8bfc9e89338a604051928352600160a060020a0390911660208301526040808301919091526060909101905180910390a2509695505050505050565b600080610af26138f1565b6000858152600360209081526040808320600160a060020a0388168452600e019091529081902090606090519081016040908152825482526001830154602083015260029092015460ff1615159181019190915290508051816020015192509250509250929050565b600080610b66613911565b600085815260036020526040812054610b8790600160a060020a03166131c9565b600081815260026020526040908190209194506101a090519081016040908152825482526001830154602083015260028301549082015260038201546060820152600482015460808201526005820154600160a060020a031660a08201908152600683015460c0830152600783015460e083015260088301546101008301526009830154610120830152600a830154610140830152600b830154610160830152600c90920154610180820152925060009051600160a060020a03161415610ccc57506000858152600360209081526040808320600a8101548452600f8101909252909120541515610c7b5760009350610d4b565b6000868152600360209081526040808320600a01548352600f84018252808320546004850154600160a060020a038a1685526010860190935292206001015402811515610cc457fe5b049350610d4b565b8160a00151600160a060020a0316631855f7ef878760006040516020015260405160e060020a63ffffffff85160281526004810192909252600160a060020a03166024820152604401602060405180830381600087803b1515610d2e57600080fd5b6102c65a03f11515610d3f57600080fd5b50505060405180519450505b50505092915050565b60005433600160a060020a03908116911614610d6f57600080fd5b600155565b600080600080610d82613911565b610d8b88612789565b15610d995760019450611060565b600260008981526003602052604090206009015460ff166004811115610dbb57fe5b14610dc95760009450611060565b600088815260036020526040902060018101549094508693508710610ded57600080fd5b600088815260036020526040902054610e0e90600160a060020a03166131c9565b600081815260026020526040908190209193506101a090519081016040908152825482526001830154602083015260028301549082015260038201546060820152600482015460808201526005820154600160a060020a031660a0820152600682015460c08201908152600783015460e083015260088301546101008301526009830154610120830152600a830154610140830152600b830154610160830152600c909201546101808201529150518311610ec557fe5b600654600160a060020a03166323b872dd33308660006040516020015260405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b1515610f3157600080fd5b6102c65a03f11515610f4257600080fd5b50505060405180519050506040805190810160409081528882526020808301869052600160a060020a033316600090815260108801909152208151815560208201516001909101555060648361014083015102811515610f9e57fe5b6005860180549290910490910190556000878152600f85016020526040902054610fc990849061328a565b6000888152600f8601602052604090205560648361014083015160640302811515610ff057fe5b04925061100a84600401548461328a90919063ffffffff16565b6004850155600160a060020a033316887f2bdde1c9d1017e533748fb83ed29c7cc39586ea82c3be3a2ffa08b7f048b214d898960405191825260208201526040908101905180910390a361105d88612789565b94505b505050509392505050565b600080611076613911565b600085815260036020526040812054819061109990600160a060020a03166131c9565b600081815260026020526040908190209195506101a0905190810160409081528254825260018301546020808401919091526002840154828401526003808501546060850152600485015460808501526005850154600160a060020a031660a0850152600685015460c0850152600785015460e085015260088501546101008501526009850154610120850152600a850154610140850152600b850154610160850152600c9094015461018084015260008b815293905282209094509250600983015460ff16600481111561116a57fe5b14156111a8576064836101600151600160a060020a0388166000908152600e85016020526040902060010154028115156111a057fe5b04945061128c565b600382015415156111bc576000945061128c565b600160a060020a0386166000908152600e8301602052604090206002015460ff1680156112065750600160a060020a0386166000908152600e83016020526040902054600a830154145b1561123f576064836101600151600160a060020a0388166000908152600e850160205260409020600101540281151561123b57fe5b0490505b8160030154606484610180015184600601540281151561125b57fe5b600160a060020a0389166000908152600e860160205260409020600101549190040281151561128657fe5b04810194505b5050505092915050565b600360208190526000918252604090912080546001820154600283015493830154600484015460058501546006860154600787015460088801546009890154600a8a0154600b8b0154600c909b0154600160a060020a039a8b169c999b998b169a98999798969795969495939460ff909316939192909116908d565b6000838461131f81611e95565b151561132a57600080fd5b50600095945050505050565b6000818261134381611e95565b151561134e57600080fd5b600092505b5050919050565b600080611365613911565b600085815260036020526040812054819061138890600160a060020a03166131c9565b600081815260026020526040908190209195506101a090519081016040908152825482526001808401546020808501919091526002850154838501526003808601546060860152600486015460808601526005860154600160a060020a0390811660a0870152600687015460c0870152600787015460e087015260088701546101008701526009870154610120870152600a870154610140870152600b870154610160870152600c9096015461018086015260008d8152908252838120958c1681526010860190915291822001549195509193501180156114865750600a820154600160a060020a0387166000908152601084016020526040902054145b156114ea57600a8201546000908152600f8301602052604090205460646101808501516064038460060154028115156114bb57fe5b600160a060020a0389166000908152601086016020526040902060010154919004028115156114e657fe5b0490505b9695505050505050565b6000908152600360205260409020600a015490565b6000806000611516613911565b61151f856131c9565b600081815260026020526040908190209193506101a0905190810160409081528254825260018301546020830152600283015490820152600382015460608201908152600483015460808301526005830154600160a060020a031660a0830152600683015460c0830152600783015460e083015260088301546101008301526009830154610120830152600a830154610140830152600b830154610160830152600c909201546101808201529150518160800151935093505050915091565b6000806115e9613911565b600084815260036020526040812054819061160c90600160a060020a03166131c9565b600081815260026020526040908190209195506101a090519081016040908152825482526001830154602083015260028301549082015260038201546060820152600482015460808201526005820154600160a060020a031660a08201908152600683015460c0830152600783015460e083015260088301546101008301526009830154610120830152600a830154610140830152600b830154610160830152600c90920154610180820152935060009051600160a060020a0316141561172057506000858152600360205260409020600a81015415156116f0576000915061171b565b6000808052600d82016020526040808220546001835291205403610120840151028361010001510191505b611790565b8260a00151600160a060020a03166361667b348760006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561177357600080fd5b6102c65a03f1151561178457600080fd5b50505060405180519250505b50949350505050565b60009081526003602052604090206009015460ff1690565b60008060648451111580156117c7575060008451115b15156117d257600080fd5b6000610100850151116117e457600080fd5b6117ee84846124fb565b90506101a0604051908101604052808551815260200185600160200201518152602001604086015181526020016060860151815260200160808601518152600160a060020a038516602082015260400160a0860151815260200160c0860151815260200160e0860151815260200161010086015181526020016101208601518152602001610140860151815260200161016086015190526000828152600260205260409020815181556020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151600582018054600160a060020a031916600160a060020a039290921691909117905560c0820151816006015560e082015181600701556101008201518160080155610120820151816009015561014082015181600a015561016082015181600b0155610180820151600c90910155509050805b5092915050565b6000918252600360209081526040808420928452600f909201905290205490565b600654600160a060020a031681565b60009081526003602081905260409091209081015460048201546005909201549092565b600080600061199f613911565b600085815260036020526040902054600160a060020a031692506119c2836131c9565b600081815260026020526040908190209193506101a090519081016040908152825482526001830154602083015260028301549082015260038201546060820152600482015460808201526005820154600160a060020a031660a08201908152600683015460c0830152600783015460e083015260088301546101008301526009830154610120830152600a830154610140830152600b830154610160830152600c90920154610180820152915060009051600160a060020a03161415611b5f57611a8c83611f14565b611b568685600160a060020a03166389ae1c906000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611ad657600080fd5b6102c65a03f11515611ae757600080fd5b50505060405180519050600160a060020a03166318160ddd6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611b3657600080fd5b6102c65a03f11515611b4757600080fd5b505050604051805190506132a0565b12159350611bcf565b8060a00151600160a060020a03166380f5e0a18660006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515611bb257600080fd5b6102c65a03f11515611bc357600080fd5b50505060405180519450505b505050919050565b6000918252600360209081526040808420600160a060020a0393909316845260109092019052902080546001909101549091565b600054600160a060020a031681565b611c22613983565b6000828152600360205260408120905b8160010154811015611353576000818152600d830160205260409020548382600b8110611c5b57fe5b6020020152600101611c32565b80611c7281611e95565b1515611c7d57600080fd5b5050565b600082611c8d81611e95565b1515611c9857600080fd5b611ca58433856000613305565b949350505050565b60009081526003602052604090206001015490565b600080611ccd613911565b600085815260036020526040812054611cee90600160a060020a03166131c9565b600081815260026020526040908190209194506101a0905190810160409081528254825260018301546020808401919091526002840154828401526003808501546060850152600485015460808501526005850154600160a060020a031660a0850152600685015460c0850152600785015460e085015260088501546101008501526009850154610120850152600a850154610140850152600b850154610160850152600c9094015461018084015260008a81529084905220918201549093509091501515611dc05760009350610d4b565b600060a0830151600160a060020a03161415611e10576003810154600160a060020a0386166000908152600e83016020526040902060010154811515611e0257fe5b048160050154029350610d4b565b8160a00151600160a060020a031663a0127c73878760006040516020015260405160e060020a63ffffffff85160281526004810192909252600160a060020a03166024820152604401602060405180830381600087803b1515610d2e57600080fd5b600084611e7e81611e95565b1515611e8957600080fd5b6114ea86338787613305565b6000600260008381526003602052604090206009015460ff166004811115611eb957fe5b1480611ee45750600360008381526003602052604090206009015460ff166004811115611ee257fe5b145b80611f0e5750600460008381526003602052604090206009015460ff166004811115611f0c57fe5b145b92915050565b6000806000611f21613911565b60029250611f2e856131c9565b600081815260026020526040908190209193506101a090519081016040908152825482526001830154602083015260028301549082015260038201546060820152600482015460808201526005820154600160a060020a031660a08201908152600683015460c0830152600783015460e083015260088301546101008301526009830154610120830152600a830154610140830152600b830154610160830152600c90920154610180820152915060009051600160a060020a03161415612026578060800151600160a060020a03861660009081526005602052604090205481151561201657fe5b04830a8160600151029350611bcf565b8060a00151600160a060020a031663c86ec2bf8660006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515611bb257600080fd5b600082815260036020526040812081806001600984015460ff1660048111156120a657fe5b14806120c457506000600984015460ff1660048111156120c257fe5b145b15156120cf57600080fd5b600160a060020a038516600090815260108401602052604081206001015411801561212357506000868152600360209081526040808320600a0154600160a060020a03891684526010870190925290912054145b1561216a576121328686610b5b565b915061213e868661135a565b6000878152600360209081526040808320600160a060020a038a16845260100190915281206001015590505b8260010154600214801561219a5750600160a060020a0385166000908152600e8401602052604090206001015415155b156121d7576121a98686611cc2565b820191506121b7868661106b565b600160a060020a0386166000908152600e85016020526040812060010155015b826001015460021480156121fa5750600b830154600160a060020a038681169116145b801561220a575082600a01546001145b1561222c57612218866115de565b600b84018054600160a060020a0319169055015b81156122eb57600654600160a060020a031663a9059cbb868460006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561229157600080fd5b6102c65a03f115156122a257600080fd5b50505060405180515050600160a060020a038516867fc1d8140f5bf31e06ddd48b4deb96488598efd767dc846befd4faf27a3fe986df8460405190815260200160405180910390a35b801561241a578254600160a060020a0316638da5cb5b6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561233857600080fd5b6102c65a03f1151561234957600080fd5b50505060405180518454600160a060020a039182169250636cfc658291849189911660006040516020015260405160e060020a63ffffffff86160281526004810193909352600160a060020a039182166024840152166044820152606401602060405180830381600087803b15156123c057600080fd5b6102c65a03f115156123d157600080fd5b50505060405180515050600160a060020a038516867f72c5f0d9e48fcc486712bd7f7279eceb445c49687a315b4e830cdab968e289f28360405190815260200160405180910390a35b50600195945050505050565b60008181526003602052604080822054600160a060020a0316906389ae1c9090839051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561247b57600080fd5b6102c65a03f1151561248c57600080fd5b50505060405180519050600160a060020a03166318160ddd6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156124db57600080fd5b6102c65a03f115156124ec57600080fd5b50505060405180519392505050565b60008251602084015160408501516060860151608087015160a088015160c089015160e08a01516101008b01516101208c01516101408d01516101608e01518d6040519c8d5260208d019b909b526040808d019a909a5260608c019890985260808b019690965260a08a019490945260c089019290925260e0880152610100870152610120860152610140850152610160840152600160a060020a039091166c010000000000000000000000000261018083015261019490910190518091039020905092915050565b6000806125cf613911565b6000848152600360205260409020546125f090600160a060020a03166131c9565b600081815260026020526040908190209193506101a090519081016040908152825482526001830154602083015260028301549082015260038201546060820152600482015460808201526005820154600160a060020a031660a08201908152600683015460c0830152600783015460e083015260088301546101008301526009830154610120830152600a830154610140830152600b830154610160830152600c90920154610180820152915060009051600160a060020a03161415612714576000848152600360205260408082205461270d928792600160a060020a03909216916389ae1c90919051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611ad657600080fd5b9250611353565b8060a00151600160a060020a031663e5af18c58560006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561276757600080fd5b6102c65a03f1151561277857600080fd5b505050604051805190509250611353565b600080612794613911565b600061279e613862565b6000866127aa81611e95565b15156127b557600080fd5b6000888152600360205260409020546127d690600160a060020a03166131c9565b600081815260026020526040908190209197506101a0905190810160409081528254825260018301546020808401919091526002840154828401526003808501546060850152600485015460808501526005850154600160a060020a031660a0850152600685015460c0850152600785015460e085015260088501546101008501526009850154610120850152600a850154610140850152600b850154610160850152600c9094015461018084015260008c81529390529091209095509350606485518554600160a060020a03166389ae1c906000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156128e057600080fd5b6102c65a03f115156128f157600080fd5b50505060405180519050600160a060020a03166318160ddd6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561294057600080fd5b6102c65a03f1151561295157600080fd5b505050604051805190500281151561296557fe5b0491506002600985015460ff16600481111561297d57fe5b1415612d395784602001516007850154420310612b2f57836101a060405190810160409081528254600160a060020a0390811683526001840154602084015260028401541690820152600382015460608201526004808301546080830152600583015460a0830152600683015460c0830152600783015460e08301526008830154610100830152600983015491929161012084019160ff90911690811115612a2157fe5b6004811115612a2c57fe5b8152600a8201546020820152600b820154600160a060020a0316604080830191909152600c9092015460609091015290935088906000805160206139ac833981519152906000905190815260200160405180910390a28260400151600160a060020a031663310ce4e28985516000806040516020015260405160e060020a63ffffffff86160281526004810193909352600160a060020a0390911660248301526044820152606401602060405180830381600087803b1515612aed57600080fd5b6102c65a03f11515612afe57600080fd5b505050604051805150506000888152600360205260408120600901805460ff19169055600a850155600196506130fd565b600a8401546000908152600d8501602052604090205482901115612cf557836101a060405190810160409081528254600160a060020a0390811683526001840154602084015260028401541690820152600382015460608201526004808301546080830152600583015460a0830152600683015460c0830152600783015460e08301526008830154610100830152600983015491929161012084019160ff90911690811115612bda57fe5b6004811115612be557fe5b8152600a828101546020830152600b830154600160a060020a0316604080840191909152600c9093015460609092019190915286015491945089916000805160206139ac833981519152915190815260200160405180910390a28260400151600160a060020a031663310ce4e289855187600a015460006040516020015260405160e060020a63ffffffff86160281526004810193909352600160a060020a0390911660248301526044820152606401602060405180830381600087803b1515612cae57600080fd5b6102c65a03f11515612cbf57600080fd5b50505060405180515050600088815260036020526040902060090180546001919060ff191682805b0217905550600196506130fd565b612cfe88611992565b15612d395760098401805460ff191660031790554260088501558354600160a060020a03166000908152600560205260409020805460010190555b6003600985015460ff166004811115612d4e57fe5b1480612d6c57506004600985015460ff166004811115612d6a57fe5b145b156130f857600c8401546008850154420310612f4957836101a060405190810160409081528254600160a060020a0390811683526001840154602084015260028401541690820152600382015460608201526004808301546080830152600583015460a0830152600683015460c0830152600783015460e08301526008830154610100830152600983015491929161012084019160ff90911690811115612e0f57fe5b6004811115612e1a57fe5b8152600a828101546020830152600b830154600160a060020a0316604080840191909152600c9093015460609092019190915286015491945089916000805160206139ac833981519152915190815260200160405180910390a28260400151600160a060020a031663310ce4e289855187600a015460006040516020015260405160e060020a63ffffffff86160281526004810193909352600160a060020a0390911660248301526044820152606401602060405180830381600087803b1515612ee357600080fd5b6102c65a03f11515612ef457600080fd5b505050604051805150506000888152600360205260408120600901805460ff191660011790556005908451600160a060020a0316815260208101919091526040016000208054600019019055600196506130fd565b600a8401546000908152600d85016020526040902054829011156130f857836101a060405190810160409081528254600160a060020a0390811683526001840154602084015260028401541690820152600382015460608201526004808301546080830152600583015460a0830152600683015460c0830152600783015460e08301526008830154610100830152600983015491929161012084019160ff90911690811115612ff457fe5b6004811115612fff57fe5b8152600a828101546020830152600b830154600160a060020a0316604080840191909152600c9093015460609092019190915286015491945089916000805160206139ac833981519152915190815260200160405180910390a28260400151600160a060020a031663310ce4e289855187600a015460006040516020015260405160e060020a63ffffffff86160281526004810193909352600160a060020a0390911660248301526044820152606401602060405180830381600087803b15156130c857600080fd5b6102c65a03f115156130d957600080fd5b505050604051805150506009840180546001919060ff19168280612ce7565b600096505b505050505050919050565b60056020526000908152604090205481565b60005433600160a060020a0390811691161461313557600080fd5b600160a060020a038116151561314a57600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008054600160a060020a031916600160a060020a0392909216919091179055565b600090815260036020526040902054600160a060020a031690565b60015481565b600081600160a060020a0316638da5cb5b6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561321157600080fd5b6102c65a03f1151561322257600080fd5b50505060405180519050600160a060020a0316631c4d5608308460006040516020015260405160e060020a63ffffffff8516028152600160a060020a03928316600482015291166024820152604401602060405180830381600087803b15156124db57600080fd5b60008282018381101561329957fe5b9392505050565b60008281526003602052604081206001810154600214156132dc576000808052600f820160205260408082205460018352912054039150611937565b6002830a600282600301540a8260050154836004015401028115156132fd57fe5b049150611937565b600080613310613911565b60008060008060006133218c612789565b1561332f5760019750613853565b60008c81526003602052604090205461335090600160a060020a03166131c9565b600081815260026020526040908190209198506101a09051908101604052908160008201548152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820160009054906101000a9004600160a060020a0316600160a060020a0316600160a060020a0316815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a8201548152602001600b8201548152602001600c820154815250509550600360008d60001916600019168152602001908152602001600020945084600101548a10151561344757600080fd5b8454600160a060020a03166389ae1c906000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561348e57600080fd5b6102c65a03f1151561349f57600080fd5b50505060405180519050600160a060020a031663db89c0448c60006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b15156134ff57600080fd5b6102c65a03f1151561351057600080fd5b50505060405180519450508884101561352857600080fd5b889250821515613536578392505b600160a060020a038b166000908152600e86016020526040902060010154156135625760009750613853565b60008a8152600d8601602052604090205461358490849063ffffffff61328a16565b60008b8152600d87016020526040808220839055600a8801548252812054908c9052901115613646574291506004600986015460ff1660048111156135c557fe5b14806135fe57506003600986015460ff1660048111156135e157fe5b1480156135fe57508560e001518660400151038560080154830310155b1561363e57600885018290556004600986015460ff16600481111561361f57fe5b1461363e578560e00151600c86015560098501805460ff191660041790555b600a85018a90555b600385015461365c90849063ffffffff61328a16565b600380870191909155600986015460ff16600481111561367857fe5b1461378e576064838761016001510281151561369057fe5b86549190049150600160a060020a0316638da5cb5b6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156136dc57600080fd5b6102c65a03f115156136ed57600080fd5b50505060405180518654600160a060020a039182169250636cfc6582916000198502918f911660006040516020015260405160e060020a63ffffffff86160281526004810193909352600160a060020a039182166024840152166044820152606401602060405180830381600087803b151561376857600080fd5b6102c65a03f1151561377957600080fd5b50505060405180515050600685018054820190555b606060405190810160409081528b82526020820185905281016002600988015460ff1660048111156137bc57fe5b149052600160a060020a038c166000908152600e87016020526040902081518155602082015181600101556040820151600291909101805460ff191691151591909117905550600160a060020a038b168c7fda942061999a8ace5c52eff42d0cda374fdf415a1a769029f7dae48368aebf398c8760405191825260208201526040908101905180910390a36138508c612789565b97505b50505050505050949350505050565b6101a0604051908101604052806000600160a060020a03168152602001600081526020016000600160a060020a03168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600060048111156138cd57fe5b8152602001600081526020016000600160a060020a03168152602001600081525090565b606060405190810160409081526000808352602083018190529082015290565b6101a06040519081016040528060008152602001600081526020016000815260200160008152602001600081526020016000600160a060020a03168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b610160604051908101604052600b815b600081526020019060019003908161399357905050905600c65afc54dab4d142869ad160726aafd56beeeb9eab55c318fa56f923b6ea7d43a165627a7a723058201180c1366870b500469c3e5de883a7c262d048ad6ab4dfb4c2a30c28ebf88b450029",
  "sourceMap": "281:33339:2:-;;;3262:114;;;;;;;;;;;;;;;;;;;;;;501:5:35;:18;;-1:-1:-1;;;;;509:10:35;501:18;;-1:-1:-1;;;;;;501:18:35;;;;;;;3341:12:2;:28;;;;;;;;;;;-1:-1:-1;;281:33339:2;;;;;;",
  "deployedSourceMap": "281:33339:2:-;;;;;;;;;-1:-1:-1;;;281:33339:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2824:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2824:46:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6933:1159;;;;;;;;;;;;;;-1:-1:-1;;;;;6933:1159:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25406:213;;;;;;;;;;;;-1:-1:-1;;;;;25406:213:2;;;;;;;;;;;;;;;;;;;;;;;;;;19324:842;;;;;;;;;;;;-1:-1:-1;;;;;19324:842:2;;;;;452:157:27;;;;;;;;;;;;;;;;8743:1276:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22401:1259;;;;;;;;;;;;-1:-1:-1;;;;;22401:1259:2;;;;;2916:43;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2916:43:2;-1:-1:-1;;;;;2916:43:2;;;;;;;;;;;-1:-1:-1;;;;;2916:43:2;-1:-1:-1;;;;;2916:43:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2916:43:2;-1:-1:-1;;;;;2916:43:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10676:188;;;;;;;;;;;;;;-1:-1:-1;;;;;10676:188:2;;;;;8254:178;;;;;;;;;;;;;;23920:807;;;;;;;;;;;;-1:-1:-1;;;;;23920:807:2;;;;;29255:130;;;;;;;;;;;;;;27987:287;;;;;;;;;;-1:-1:-1;;;;;27987:287:2;;;;;20378:798;;;;;;;;;;;;;;29562:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4486:1225;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4486:1225:2;;-1:-1:-1;;;4486:1225:2;;-1:-1:-1;;;;;4486:1225:2;;-1:-1:-1;4486:1225:2;;-1:-1:-1;4486:1225:2;28943:141;;;;;;;;;;;;;;;;3182:33;;;;;;;;;;;;;;;-1:-1:-1;;;;;3182:33:2;;;;;;;;;;;;;;26823:219;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16978:573;;;;;;;;;;;;;;28522:205;;;;;;;;;;;;-1:-1:-1;;;;;28522:205:2;;;;;238:20:35;;;;;;;;;;;;25861:270:2;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;71:3;;;64:6;52:2;45:3;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;11267:121:2;;;;;;;;;;;;;;10274:160;;;;;;;;;;;;;;;;24928:138;;;;;;;;;;;;;;21431:707;;;;;;;;;;;;-1:-1:-1;;;;;21431:707:2;;;;;10870:194;;;;;;;;;;;;;;;;;;;;26293:278;;;;;;;;;;;;;;18551:533;;;;;;;;;;-1:-1:-1;;;;;18551:533:2;;;;;15133:1659;;;;;;;;;;;;-1:-1:-1;;;;;15133:1659:2;;;;;27249:176;;;;;;;;;;;;;;5793:598;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5793:598:2;;-1:-1:-1;;;5793:598:2;;-1:-1:-1;;;;;5793:598:2;;-1:-1:-1;5793:598:2;;-1:-1:-1;5793:598:2;17702:528;;;;;;;;;;;;;;11640:3121;;;;;;;;;;;;;;3124:52;;;;;;;;;;-1:-1:-1;;;;;3124:52:2;;;;;834:169:35;;;;;;;;;;-1:-1:-1;;;;;834:169:35;;;;;27608:133:2;;;;;;;;;;;;;;345:31:27;;;;;;;;;;;;2824:46:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2824:46:2;;;;;;;;;;;;;;;:::o;6933:1159::-;7074:7;7402:18;7514:24;;:::i;:::-;7172:1;7156:13;:17;:56;;;;;3064:2;7177:13;:35;;7156:56;7148:65;;;;;;;;-1:-1:-1;;;;;7231:46:2;;;;7223:55;;;;;;7355:1;7296:23;;;:10;:23;;;;;:56;:60;7288:69;;;;;;7433:4;7439:12;;7423:29;;-1:-1:-1;;;;;7423:29:2;;;;;;;;;;;;;;;;;;;;;;7462:12;:14;;;;;;7548:21;;;:37;;;-1:-1:-1;;;;;7595:25:2;;;;;7630:33;;:19;;;:33;7423:29;-1:-1:-1;7690:24:2;7673:14;;;7690:24;7673:41;;-1:-1:-1;7811:3:2;7786:22;;;:28;7858:23;;;;:10;:23;;;;;;;;:46;;;;7824:31;;;:80;-1:-1:-1;;;;;7914:29:2;;:17;;;:29;7953:21;;;:9;:21;;;;7786:8;;;7953:32;;;-1:-1:-1;;;;;;7953:32:2;-1:-1:-1;;;;;7953:32:2;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;7953:32:2;-1:-1:-1;;;;;7953:32:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7953:32:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;7953:32:2;-1:-1:-1;;;;;7953:32:2;;;;;;;;;;;;;;;;;;;-1:-1:-1;8007:10:2;7995:63;8019:13;8034:10;8046:11;7995:63;;;;;-1:-1:-1;;;;;7995:63:2;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8075:10:2;6933:1159;-1:-1:-1;;;;;;6933:1159:2:o;25406:213::-;25485:4;25491;25507:18;;:::i;:::-;25528:22;;;;:9;:22;;;;;;;;-1:-1:-1;;;;;25528:37:2;;;;:29;;:37;;;;;;;;25507:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25507:58:2;25583:10;25595:5;:16;;;25575:37;;;;25406:213;;;;;;:::o;19324:842::-;19408:4;19424:18;19521:24;;:::i;:::-;19673:25;19480:22;;;:9;:22;;;;;:29;19445:66;;-1:-1:-1;;;;;19480:29:2;19445:27;:66::i;:::-;19548:22;;;;:10;:22;;;;;;;19424:87;;-1:-1:-1;19521:49:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19521:49:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19521:49:2;;19584:34;-1:-1:-1;;;;;19584:73:2;;19580:580;;;-1:-1:-1;19701:22:2;;;;:9;:22;;;;;;;;19757:34;;;;19741:51;;:15;;;:51;;;;;;;:56;19737:163;;;19884:1;19877:8;;;;19737:163;19985:51;20001:22;;;:9;:22;;;;;;;;:34;;;19985:51;;:15;;;:51;;;;;;19961:20;;;;-1:-1:-1;;;;;19921:30:2;;;;:16;;;:30;;;;;:37;;;:60;19920:116;;;;;;;;19913:123;;;;19580:580;20075:6;:34;;;-1:-1:-1;;;;;20074:49:2;;20124:11;20136:12;20074:75;;;;;;;;-1:-1:-1;;;20074:75:2;;;;;;;;;;;;;-1:-1:-1;;;;;20074:75:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;19580:580:2;19324:842;;;;;;;:::o;452:157:27:-;654:5:35;;640:10;-1:-1:-1;;;;;640:19:35;;;654:5;;640:19;632:28;;;;;;566:16:27;:36;452:157::o;8743:1276:2:-;8820:4;9015:25;9075:11;9184:18;9281:24;;:::i;:::-;8840:20;8848:11;8840:7;:20::i;:::-;8836:62;;;8883:4;8876:11;;;;8836:62;8943:24;8911:22;;;;:9;:22;;;;;:28;;;;;:56;;;;;;;;;8907:99;;8990:5;8983:12;;;;8907:99;9043:22;;;;:9;:22;;;;;9151:21;;;;9043:22;;-1:-1:-1;9089:7:2;;-1:-1:-1;9143:29:2;;9135:38;;;;;;9240:22;;;;:9;:22;;;;;:29;9205:66;;-1:-1:-1;;;;;9240:29:2;9205:27;:66::i;:::-;9308:22;;;;:10;:22;;;;;;;9184:87;;-1:-1:-1;9281:49:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9281:49:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9356:24:2;9347:33;;9340:41;;;;9391:12;;-1:-1:-1;;;;;9391:12:2;:25;9417:10;9437:4;9444:6;9391:12;:60;;;;;;;-1:-1:-1;;;9391:60:2;;;;;;-1:-1:-1;;;;;9391:60:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9493:71;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9479:10:2;9462:28;-1:-1:-1;9462:28:2;;;:16;;;:28;;;;9493:71;9462:102;;;;;;;;;;;;-1:-1:-1;9641:3:2;9633:6;9600:30;;;;:39;9599:45;;;;;;;9574:21;;;:70;;9599:45;;;;9574:70;;;;;-1:-1:-1;9690:22:2;;;:15;;;:22;;;;;;9679:34;;:6;;:10;:34::i;:::-;9654:22;;;;:15;;;:22;;;;;:59;9778:3;9770:6;9738:30;;;;9734:3;:34;9733:43;9732:49;;;;;;;;9723:58;;9814:32;9825:8;:20;;;9814:6;:10;;:32;;;;:::i;:::-;9791:20;;;:55;-1:-1:-1;;;;;9891:10:2;9872:46;9878:11;9872:46;9903:5;9910:7;9872:46;;;;;;;;;;;;;;;;;;;;9992:20;10000:11;9992:7;:20::i;:::-;9985:27;;8743:1276;;;;;;;;;;:::o;22401:1259::-;22495:3;22510:18;22607:24;;:::i;:::-;22666:25;22566:22;;;:9;:22;;;;;:29;22666:25;;22531:66;;-1:-1:-1;;;;;22566:29:2;22531:27;:66::i;:::-;22634:22;;;;:10;:22;;;;;;;22510:87;;-1:-1:-1;22607:49:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22607:49:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22694:22;;;;;;;;22607:49;;-1:-1:-1;22694:22:2;-1:-1:-1;22747:14:2;;;;;;:38;;;;;;;;;22743:239;;;22967:3;22933:6;:32;;;-1:-1:-1;;;;;22890:29:2;;;;;;:15;;;:29;;;;;:40;;;:75;22889:81;;;;;;;;22878:93;;;;22743:239;22995:19;;;;:24;22991:64;;;23042:1;23035:8;;;;22991:64;-1:-1:-1;;;;;23068:29:2;;;;;;:15;;;:29;;;;;:40;;;;;:105;;;;-1:-1:-1;;;;;;23137:29:2;;;;;;:15;;;:29;;;;;:34;23113:20;;;;:58;23068:105;23064:273;;;23322:3;23288:6;:32;;;-1:-1:-1;;;;;23245:29:2;;;;;;:15;;;:29;;;;;:40;;;:75;23244:81;;;;;;;;23234:92;;23064:273;23633:8;:19;;;23627:3;23589:6;:36;;;23563:8;:23;;;:62;23562:68;;;;;;;-1:-1:-1;;;;;23518:29:2;;;;;;:15;;;:29;;;;;:40;;;23562:68;;;23518:113;23517:135;;;;;;;;23507:3;:146;23500:153;;22401:1259;;;;;;;;;:::o;2916:43::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2916:43:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;10676:188::-;10800:4;10758:11;10779;3523:22;3533:11;3523:9;:22::i;:::-;3515:31;;;;;;;;-1:-1:-1;10852:5:2;;10676:188;-1:-1:-1;;;;;10676:188:2:o;8254:178::-;8366:4;8324:11;8345;3523:22;3533:11;3523:9;:22::i;:::-;3515:31;;;;;;;;8420:5;8413:12;;3556:1;163::4;8254:178:2;;;;:::o;23920:807::-;24014:3;24029:18;24126:24;;:::i;:::-;24185:25;24085:22;;;:9;:22;;;;;:29;24185:25;;24050:66;;-1:-1:-1;;;;;24085:29:2;24050:27;:66::i;:::-;24153:22;;;;:10;:22;;;;;;;24029:87;;-1:-1:-1;24126:49:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;24126:49:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24213:22;;;;;;;;;24267:30;;;;;:16;;;:30;;;;;;:37;;24126:49;;-1:-1:-1;24213:22:2;;-1:-1:-1;24267:39:2;24266:119;;;;-1:-1:-1;24364:20:2;;;;-1:-1:-1;;;;;24325:30:2;;;;;;:16;;;:30;;;;;:35;:59;24266:119;24262:439;;;24668:20;;;;24652:37;;;;:15;;;:37;;;;;;24644:3;24605:36;;;;24599:3;:42;24572:8;:23;;;:70;24571:76;;;;;;;-1:-1:-1;;;;;24530:30:2;;;;;;:16;;;:30;;;;;:37;;;24571:76;;;24530:118;24529:160;;;;;;;;24519:171;;24262:439;24717:3;23920:807;-1:-1:-1;;;;;;23920:807:2:o;29255:130::-;29321:4;29344:22;;;:9;:22;;;;;:34;;;;29255:130::o;27987:287::-;28058:4;28063;28079:18;28154:24;;:::i;:::-;28100:44;28135:7;28100:27;:44::i;:::-;28181:22;;;;:10;:22;;;;;;;28079:65;;-1:-1:-1;28154:49:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;28154:49:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28221:22:2;28244:6;:22;;;28213:54;;;;27987:287;;;;;:::o;20378:798::-;20453:3;20468:18;20565:24;;:::i;:::-;20624:7;20524:22;;;:9;:22;;;;;:29;20624:7;;20489:66;;-1:-1:-1;;;;;20524:29:2;20489:27;:66::i;:::-;20592:22;;;;:10;:22;;;;;;;20468:87;;-1:-1:-1;20565:49:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20565:49:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20565:49:2;;20645:34;-1:-1:-1;;;;;20645:73:2;;20641:509;;;-1:-1:-1;20762:22:2;;;;:9;:22;;;;;20802:20;;;;:25;20798:226;;;20853:1;20847:7;;20798:226;;;20990:17;;;;:14;;;:17;;;;;;;20987:1;20972:17;;;;;:35;20937:31;;;;:71;20903:6;:31;;;:105;20893:116;;20798:226;20641:509;;;21065:6;:34;;;-1:-1:-1;;;;;21064:61:2;;21126:11;21064:74;;;;;;;;-1:-1:-1;;;21064:74:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;20641:509:2;-1:-1:-1;21166:3:2;20378:798;-1:-1:-1;;;;20378:798:2:o;29562:127::-;29622:13;29654:22;;;:9;:22;;;;;:28;;;;;;29562:127::o;4486:1225::-;4686:7;;4731:3;4717:7;:10;:17;;:35;;;;-1:-1:-1;4751:1:2;4738:7;:10;:14;4717:35;4709:44;;;;;;;;4784:1;4771:10;;;;:14;4763:23;;;;;;4867:94;4898:7;4919:28;4867:17;:94::i;:::-;4840:121;;5002:669;;;;;;;;;5061:7;:10;5002:669;;;;5112:7;5120:1;5112:10;;;;5002:669;;;;5160:10;;;;5002:669;;;;5200:10;;;;5002:669;;;;5240:10;;;;5002:669;;-1:-1:-1;;;;;5002:669:2;;;;;;;;5283:10;;;;5002:669;;;;5326:10;;;;5002:669;;;;5376:10;;;;5002:669;;;;5425:10;;;;5002:669;;;;5473:10;;;;5002:669;;;;5523:11;;;;5002:669;;;;5578:11;;;;5002:669;;4971:28;;;;:10;:28;;;;;:700;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4971:700:2;-1:-1:-1;;;;;4971:700:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5688:16:2;-1:-1:-1;5688:16:2;4486:1225;;;;;;:::o;28943:141::-;29018:4;29041:22;;;:9;:22;;;;;;;;:36;;;:29;;;;:36;;;;;;28943:141::o;3182:33::-;;;-1:-1:-1;;;;;3182:33:2;;:::o;26823:219::-;26892:4;26928:22;;;:9;:22;;;;;;;;:33;;;;26963:34;;;;26999:35;;;;;26928:33;;26823:219::o;16978:573::-;17040:4;17056:14;17112:18;17186:24;;:::i;:::-;17073:22;;;;:9;:22;;;;;:29;-1:-1:-1;;;;;17073:29:2;;-1:-1:-1;17133:43:2;17073:29;17133:27;:43::i;:::-;17213:22;;;;:10;:22;;;;;;;17112:64;;-1:-1:-1;17186:49:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17186:49:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17186:49:2;;17249:34;-1:-1:-1;;;;;17249:73:2;;17245:300;;;17417:17;17427:6;17417:9;:17::i;:::-;17346:67;17353:11;17372:6;-1:-1:-1;;;;;17365:31:2;;:33;;;;;;;;;;;-1:-1:-1;;;17365:33:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17365:45:2;;:47;;;;;;;;;;;-1:-1:-1;;;17365:47:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17346:6;:67::i;:::-;:88;;17338:97;;;;17245:300;17474:6;:34;;;-1:-1:-1;;;;;17473:48:2;;17522:11;17473:61;;;;;;;;-1:-1:-1;;;17473:61:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17245:300:2;16978:573;;;;;;:::o;28522:205::-;28599:4;28628:22;;;:9;:22;;;;;;;;-1:-1:-1;;;;;28628:39:2;;;;;;:30;;;;:39;;;;:44;;28673:46;;;;;28628:44;;28522:205::o;238:20:35:-;;;-1:-1:-1;;;;;238:20:35;;:::o;25861:270:2:-;25927:14;;:::i;:::-;25953:25;25981:22;;;:9;:22;;;;;;26013:112;26038:8;:21;;;26032:3;:27;26013:112;;;26095:19;;;;:14;;;:19;;;;;;26082:5;26110:3;26082:10;;;;;;;;;;:32;26061:5;;26013:112;;11267:121;11323:11;3523:22;3533:11;3523:9;:22::i;:::-;3515:31;;;;;;;;11267:121;;:::o;10274:160::-;10357:4;10336:11;3523:22;3533:11;3523:9;:22::i;:::-;3515:31;;;;;;;;10380:47;10393:11;10406:10;10418:5;10425:1;10380:12;:47::i;:::-;10373:54;10274:160;-1:-1:-1;;;;10274:160:2:o;24928:138::-;25001:4;25024:22;;;:9;:22;;;;;:35;;;;24928:138::o;21431:707::-;21521:4;21537:18;21634:24;;:::i;:::-;21693:25;21593:22;;;:9;:22;;;;;:29;21558:66;;-1:-1:-1;;;;;21593:29:2;21558:27;:66::i;:::-;21661:22;;;;:10;:22;;;;;;;21537:87;;-1:-1:-1;21634:49:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21634:49:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21721:22;;;;;;;;21757:19;;;;21634:49;;-1:-1:-1;21721:22:2;;-1:-1:-1;21757:24:2;21753:49;;;21801:1;21794:8;;;;21753:49;21888:1;21817:34;;;;-1:-1:-1;;;;;21817:73:2;;21813:319;;;21982:19;;;;-1:-1:-1;;;;;21939:29:2;;;;;;:15;;;:29;;;;;:40;;;:62;;;;;;;;21914:8;:21;;;:88;21906:97;;;;21813:319;22042:6;:34;;;-1:-1:-1;;;;;22041:54:2;;22096:11;22108:12;22041:80;;;;;;;;-1:-1:-1;;;22041:80:2;;;;;;;;;;;;;-1:-1:-1;;;;;22041:80:2;;;;;;;;;;;;;;;;;;;;;;;;;10870:194;10987:4;10966:11;3523:22;3533:11;3523:9;:22::i;:::-;3515:31;;;;;;;;11010:47;11023:11;11035:10;11046:5;11052:4;11010:12;:47::i;26293:278::-;26357:4;26414:24;26382:22;;;;:9;:22;;;;;:28;;;;;:56;;;;;;;;;26381:115;;;-1:-1:-1;26474:21:2;26442:22;;;;:9;:22;;;;;:28;;;;;:53;;;;;;;;;26381:115;:182;;;-1:-1:-1;26531:31:2;26499:22;;;;:9;:22;;;;;:28;;;;;:63;;;;;;;;;26381:182;26373:191;26293:278;-1:-1:-1;;26293:278:2:o;18551:533::-;18607:3;18622:6;18642:18;18717:24;;:::i;:::-;18631:1;18622:10;;18663:44;18698:7;18663:27;:44::i;:::-;18744:22;;;;:10;:22;;;;;;;18642:65;;-1:-1:-1;18717:49:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18717:49:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18717:49:2;;18780:34;-1:-1:-1;;;;;18780:73:2;;18776:302;;;18944:6;:22;;;-1:-1:-1;;;;;18912:31:2;;;;;;:22;:31;;;;;;:54;;;;;;;;18906:1;:61;18880:6;:22;;;:88;18869:100;;;;18776:302;19012:6;:34;;;-1:-1:-1;;;;;19011:46:2;;19058:7;19011:55;;;;;;;;-1:-1:-1;;;19011:55:2;;;;;;-1:-1:-1;;;;;19011:55:2;;;;;;;;;;;;;;;;;;;;;;;;;;;15133:1659;15206:4;15250:22;;;:9;:22;;;;;15206:4;;15309:22;15291:14;;;;;;:40;;;;;;;;;15290:86;;;-1:-1:-1;15355:20:2;15337:14;;;;;;:38;;;;;;;;;15290:86;15282:95;;;;;;;;-1:-1:-1;;;;;15437:30:2;;15475:1;15437:30;;;:16;;;:30;;;;;:37;;;:39;15436:133;;;;-1:-1:-1;15534:22:2;;;;:9;:22;;;;;;;;:34;;;-1:-1:-1;;;;;15495:30:2;;;;:16;;;:30;;;;;;:35;:73;15436:133;15432:378;;;15618:38;15631:11;15643:12;15618;:38::i;:::-;15609:47;;15683;15705:11;15717:12;15683:21;:47::i;:::-;15798:1;15744:22;;;:9;:22;;;;;;;;-1:-1:-1;;;;;15744:44:2;;;;:30;;:44;;;;;:51;;:55;15670:60;-1:-1:-1;15432:378:2;15824:8;:21;;;15849:1;15824:26;15823:80;;;;-1:-1:-1;;;;;;15856:29:2;;;;;;:15;;;:29;;;;;:40;;;:45;;15823:80;15819:320;;;15952:43;15970:11;15982:12;15952:17;:43::i;:::-;15942:53;;;;16023:47;16045:11;16057:12;16023:21;:47::i;:::-;-1:-1:-1;;;;;16084:29:2;;16127:1;16084:29;;;:15;;;:29;;;;;:40;;:44;16009:61;15819:320;16154:8;:21;;;16179:1;16154:26;16153:65;;;;-1:-1:-1;16184:17:2;;;;-1:-1:-1;;;;;16184:33:2;;;:17;;:33;16153:65;:94;;;;;16221:8;:20;;;16245:1;16221:25;16153:94;16149:238;;;16303:37;16328:11;16303:24;:37::i;:::-;16354:17;;;:21;;-1:-1:-1;;;;;;16354:21:2;;;16289:51;16149:238;16400:11;;16396:138;;16427:12;;-1:-1:-1;;;;;16427:12:2;:21;16449:12;16463:6;16427:12;:43;;;;;;;-1:-1:-1;;;16427:43:2;;;;;;-1:-1:-1;;;;;16427:43:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;16484:39:2;;16491:11;16484:39;16516:6;16484:39;;;;;;;;;;;;;;16396:138;16547:15;;16543:222;;16606:15;;-1:-1:-1;;;;;16606:15:2;16599:29;16606:15;16599:31;;;;;;;;;;-1:-1:-1;;;16599:31:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16671:15;;-1:-1:-1;;;;;16579:67:2;;;;-1:-1:-1;16579:67:2;;16647:10;;16658:12;;16671:15;;16579:108;;;;;;;-1:-1:-1;;;16579:108:2;;;;;;;;;;;;;-1:-1:-1;;;;;16579:108:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;16701:53:2;;16718:11;16701:53;16743:10;16701:53;;;;;;;;;;;;;;16543:222;-1:-1:-1;16781:4:2;;15133:1659;-1:-1:-1;;;;;15133:1659:2:o;27249:176::-;27325:4;27355:22;;;:9;:22;;;;;;:29;-1:-1:-1;;;;;27355:29:2;;27348:54;;27325:4;;27348:56;;;;;;;;;-1:-1:-1;;;27348:56:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;27348:68:2;;:70;;;;;;;;;;;-1:-1:-1;;;27348:70:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27249:176;-1:-1:-1;;;27249:176:2:o;5793:598::-;6008:7;6065;:10;6089;;;;6113;;;;6137;;;;6161;;;;6185;;;;6209;;;;6233;;;;6257;;;;6281;;;;6305:11;;;;6330;;;;6355:28;6042:342;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6042:342:2;;;;;;;;;;;;;;;;;;;;6035:349;;5793:598;;;;:::o;17702:528::-;17758:3;17773:18;17870:24;;:::i;:::-;17829:22;;;;:9;:22;;;;;:29;17794:66;;-1:-1:-1;;;;;17829:29:2;17794:27;:66::i;:::-;17897:22;;;;:10;:22;;;;;;;17773:87;;-1:-1:-1;17870:49:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17870:49:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17870:49:2;;17933:34;-1:-1:-1;;;;;17933:73:2;;17929:295;;;18056:22;;;;:9;:22;;;;;;:29;18029:91;;18036:11;;-1:-1:-1;;;;;18056:29:2;;;;18049:54;;18056:22;18049:56;;;;;;;;;-1:-1:-1;;;18049:56:2;;;;;;;;;;;;;;;;;;;;;;;18029:91;18022:98;;;;17929:295;18159:6;:34;;;-1:-1:-1;;;;;18158:42:2;;18201:11;18158:55;;;;;;;;-1:-1:-1;;;18158:55:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18151:62;;;;11640:3121;11714:4;11730:18;11827:24;;:::i;:::-;11886:25;11946:27;;:::i;:::-;11983:17;11693:11;3523:22;3533:11;3523:9;:22::i;:::-;3515:31;;;;;;;;11786:22;;;;:9;:22;;;;;:29;11751:66;;-1:-1:-1;;;;;11786:29:2;11751:27;:66::i;:::-;11854:22;;;;:10;:22;;;;;;;11730:87;;-1:-1:-1;11827:49:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11827:49:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11914:22;;;;;;;;;11827:49;;-1:-1:-1;11914:22:2;-1:-1:-1;12102:3:2;11827:49;12062:39;12010:15;;-1:-1:-1;;;;;12010:15:2;12003:40;12010:15;12003:42;;;;;;;;;;-1:-1:-1;;;12003:42:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12003:54:2;;:56;;;;;;;;;;;-1:-1:-1;;;12003:56:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:98;:102;;;;;;;;;-1:-1:-1;12138:24:2;12120:14;;;;;;:42;;;;;;;;;12116:1475;;;12282:6;:32;;;12255:22;;;;12249:3;:28;12248:66;12244:408;;12348:8;12334:22;;;;;;;;;;;;-1:-1:-1;;;;;12334:22:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12334:22:2;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12390:11:2;;-1:-1:-1;;;;;;;;;;;12374:31:2;-1:-1:-1;;12374:31:2;;;;;;;;;;;;;12424:11;:22;;;-1:-1:-1;;;;;12423:32:2;;12456:11;12469;:18;12493:1;12423:73;;;;;;;;-1:-1:-1;;;12423:73:2;;;;;;;;;;;;;-1:-1:-1;;;;;12423:73:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12545:20:2;12514:22;;;:9;:22;;;;;:28;;:51;;-1:-1:-1;;12514:51:2;;;12583:20;;;:24;12514:51;;-1:-1:-1;12625:11:2;;12244:408;12753:20;;;;12738:36;;;;:14;;;:36;;;;;;:51;;;12734:393;;;12823:8;12809:22;;;;;;;;;;;;-1:-1:-1;;;;;12809:22:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12809:22:2;;;;;;;;;;;;;;;;;;;;;;12878:20;;;12809:22;;-1:-1:-1;12865:11:2;;-1:-1:-1;;;;;;;;;;;12849:50:2;;;;;;;;;;;;;;12918:11;:22;;;-1:-1:-1;;;;;12917:32:2;;12950:11;12963;:18;12987:8;:20;;;12917:92;;;;;;;;-1:-1:-1;;;12917:92:2;;;;;;;;;;;;;-1:-1:-1;;;;;12917:92:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13027:22:2;;;;:9;:22;;;;;:28;;:53;;13058:22;;13027:28;-1:-1:-1;;13027:53:2;13058:22;;13027:53;;;;;;13105:4;13098:11;;;;12734:393;13245:24;13257:11;13245;:24::i;:::-;13240:338;;;13345:14;;;:38;;-1:-1:-1;;13345:38:2;13362:21;13345:38;;;13499:3;13471:25;;;:31;13543:15;;-1:-1:-1;;;;;13543:15:2;-1:-1:-1;13520:39:2;;;:22;:39;;;;;:41;;13345:38;13520:41;;;13240:338;13623:21;13605:14;;;;;;:39;;;;;;;;;13604:108;;;-1:-1:-1;13680:31:2;13662:14;;;;;;:49;;;;;;;;;13604:108;13600:1133;;;13835:31;;;;13805:25;;;;13799:3;:31;13798:68;13794:470;;13900:8;13886:22;;;;;;;;;;;;-1:-1:-1;;;;;13886:22:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13886:22:2;;;;;;;;;;;;;;;;;;;;;;13955:20;;;13886:22;;-1:-1:-1;13942:11:2;;-1:-1:-1;;;;;;;;;;;13926:50:2;;;;;;;;;;;;;;13995:11;:22;;;-1:-1:-1;;;;;13994:32:2;;14027:11;14040;:18;14064:8;:20;;;13994:92;;;;;;;;-1:-1:-1;;;13994:92:2;;;;;;;;;;;;;-1:-1:-1;;;;;13994:92:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14104:22:2;;;;:9;:22;;;;;:28;;:53;;-1:-1:-1;;14104:53:2;14135:22;14104:53;;;14175:22;;14198:11;:18;-1:-1:-1;;;;;14175:42:2;;;;;;;;;;;;-1:-1:-1;14175:42:2;:44;;-1:-1:-1;;14175:44:2;;;;;-1:-1:-1;14237:11:2;;13794:470;14367:20;;;;14352:36;;;;:14;;;:36;;;;;;:51;;;14348:376;;;14437:8;14423:22;;;;;;;;;;;;-1:-1:-1;;;;;14423:22:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14423:22:2;;;;;;;;;;;;;;;;;;;;;;14492:20;;;14423:22;;-1:-1:-1;14479:11:2;;-1:-1:-1;;;;;;;;;;;14463:50:2;;;;;;;;;;;;;;14532:11;:22;;;-1:-1:-1;;;;;14531:32:2;;14564:11;14577;:18;14601:8;:20;;;14531:92;;;;;;;;-1:-1:-1;;;14531:92:2;;;;;;;;;;;;;-1:-1:-1;;;;;14531:92:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14641:14:2;;;:39;;14658:22;;14641:14;-1:-1:-1;;14641:39:2;14658:22;;14641:39;;14348:376;14749:5;14742:12;;3556:1;11640:3121;;;;;;;;;:::o;3124:52::-;;;;;;;;;;;;;:::o;834:169:35:-;654:5;;640:10;-1:-1:-1;;;;;640:19:35;;;654:5;;640:19;632:28;;;;;;-1:-1:-1;;;;;910:22:35;;;;902:31;;;;;;960:5;;-1:-1:-1;;;;;939:37:35;;;;960:5;939:37;;;;;;;;;;982:5;:16;;-1:-1:-1;;;;;;982:16:35;-1:-1:-1;;;;;982:16:35;;;;;;;;;;834:169::o;27608:133:2:-;27677:7;27704:22;;;:9;:22;;;;;:29;-1:-1:-1;;;;;27704:29:2;;27608:133::o;345:31:27:-;;;;:::o;704:191::-;783:7;829;-1:-1:-1;;;;;829:13:27;;:15;;;;;;;;;;;-1:-1:-1;;;829:15:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;809:56:27;;866:4;879:7;809:79;;;;;;;;-1:-1:-1;;;809:79:27;;;;;;-1:-1:-1;;;;;809:79:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;698:129:33;756:7;783:5;;;801:6;;;;794:14;;;;821:1;698:129;-1:-1:-1;;;698:129:33:o;33214:404:2:-;33291:3;33334:22;;;:9;:22;;;;;33370:21;;;;33395:1;33370:26;33366:246;;;33449:18;;;;:15;;;:18;;;;;;;33439:1;33423:18;;;;;33419:49;;-1:-1:-1;33412:56:2;;33366:246;33598:1;33584:12;:15;33579:1;33558:8;:19;;;:22;33532:8;:21;;;33511:8;:20;;;:42;33510:71;33509:91;;;;;;;;33498:103;;;;30359:2535;30457:4;30546:18;30643:24;;:::i;:::-;30702:25;30886:15;31014:8;31491:9;32263:22;30478:20;30486:11;30478:7;:20::i;:::-;30474:62;;;30521:4;30514:11;;;;30474:62;30602:22;;;;:9;:22;;;;;:29;30567:66;;-1:-1:-1;;;;;30602:29:2;30567:27;:66::i;:::-;30670:22;;;;:10;:22;;;;;;;30546:87;;-1:-1:-1;30643:49:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;30643:49:2;-1:-1:-1;;;;;30643:49:2;-1:-1:-1;;;;;30643:49:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30730:9;:22;30740:11;30730:22;;;;;;;;;;;;;;;;;30702:50;;30807:8;:21;;;30799:5;:29;30791:38;;;;;;;;30911:15;;-1:-1:-1;;;;;30911:15:2;30904:40;30911:15;30904:42;;;;;;;;;;-1:-1:-1;;;30904:42:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;30904:55:2;;30960:6;30904:63;;;;;;;;-1:-1:-1;;;30904:63:2;;;;;;-1:-1:-1;;;;;30904:63:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;30985:18:2;;;;30977:27;;;;;;31025:4;;-1:-1:-1;31043:8:2;;31039:55;;;31073:10;31067:16;;31039:55;-1:-1:-1;;;;;31165:23:2;;;;;;:15;;;:23;;;;;:34;;;:39;31161:82;;31227:5;31220:12;;;;31161:82;31314:21;;;;:14;;;:21;;;;;;31306:30;;:3;;:30;:7;:30;:::i;:::-;31282:21;;;;:14;;;:21;;;;;;:54;;;31389:20;;;;31374:36;;;;;31350:21;;;;:60;;31346:789;;;31503:3;;-1:-1:-1;31543:31:2;31525:14;;;;;;:49;;;;;;;;;31524:215;;;-1:-1:-1;31614:21:2;31596:14;;;;;;:39;;;;;;;;;31595:143;;;;;31712:6;:24;;;31680:6;:29;;;:56;31649:8;:25;;;31642:4;:32;31641:96;;31595:143;31520:563;;;31795:25;;;:32;;;31867:31;31849:14;;;;;;:49;;;;;;;;;31845:224;;31956:6;:24;;;31922:31;;;:58;32002:14;;;:48;;-1:-1:-1;;32002:48:2;32019:31;32002:48;;;31845:224;32096:20;;;:28;;;31346:789;32174:19;;;;32166:28;;:3;;:28;:7;:28;:::i;:::-;32144:19;;;;:50;;;;32208:14;;;;;;:39;;;;;;;;;32204:332;;32329:3;32324;32289:6;:32;;;:38;32288:44;;;;;;;32373:15;;32288:44;;;;-1:-1:-1;;;;;;32373:15:2;32366:29;32373:15;32366:31;;;;;;;;;;-1:-1:-1;;;32366:31:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32451:15;;-1:-1:-1;;;;;32346:67:2;;;;-1:-1:-1;32346:67:2;;-1:-1:-1;;32414:29:2;;;32444:6;;32451:15;;32346:121;;;;;;;-1:-1:-1;;;32346:121:2;;;;;;;;;;;;;-1:-1:-1;;;;;32346:121:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;32481:23:2;;;:44;;;;;;32204:332;32571:140;;;;;;;;;;;;;;;;;;;;;32675:24;32657:14;;;;;;:42;;;;;;;;;32571:140;;-1:-1:-1;;;;;32545:23:2;;;;;;:15;;;:23;;;;;:166;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;32545:166:2;;;;;;;;;;-1:-1:-1;;;;;;32739:52:2;;32752:11;32739:52;32773:5;32780:10;32739:52;;;;;;;;;;;;;;;;;;;;32867:20;32875:11;32867:7;:20::i;:::-;32860:27;;30359:2535;;;;;;;;;;;;;;:::o;281:33339::-;;;;;;;;;;;-1:-1:-1;;;;;281:33339:2;;;;;;;;;;;-1:-1:-1;;;;;281:33339:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;281:33339:2;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;281:33339:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o",
  "source": "pragma solidity ^0.4.18;\n\nimport \"../controller/Reputation.sol\";\nimport \"./IntVoteInterface.sol\";\nimport \"../universalSchemes/UniversalScheme.sol\";\nimport \"./GenesisProtocolFormulasInterface.sol\";\n\n\n/**\n * @title A governance contract -an organization's voting machine scheme.\n */\ncontract GenesisProtocol is IntVoteInterface,UniversalScheme,GenesisProtocolFormulasInterface {\n    using SafeMath for uint;\n\n    enum ProposalState { Closed, Executed, PreBoosted,Boosted,QuietEndingPeriod }\n\n    struct Parameters {\n        uint preBoostedVoteRequiredPercentage; // the absolute vote percentages bar.\n        uint preBoostedVotePeriodLimit; //the time limit for a proposal to be in an absolute voting mode.\n        uint boostedVotePeriodLimit; //the time limit for a proposal to be in an relative voting mode.\n        uint thresholdConstA;\n        uint thresholdConstB;\n        GenesisProtocolFormulasInterface governanceFormulasInterface;\n        uint minimumStakingFee;\n        uint quietEndingPeriod;\n        uint proposingRepRewardConstA;\n        uint proposingRepRewardConstB;\n        uint stakerFeeRatioForVoters; // a value between 0-100\n        uint votersReputationLossRatio;\n        uint votersGainRepRatioFromLostRep; // a value between 0-100\n    }\n    struct Voter {\n        uint vote; // 0 - 'abstain'\n        uint reputation; // amount of voter's reputation\n        bool preBoosted;\n    }\n\n    struct Staker {\n        uint vote; // 0 - 'abstain'\n        uint amount; // amount of voter's reputation\n    }\n\n    struct Proposal {\n        address avatar; // the organization's avatar the proposal is target to.\n        uint numOfChoices;\n        ExecutableInterface executable; // will be executed if the proposal will pass\n        uint totalVotes;\n        uint totalStakes;\n        uint votersStakes;\n        uint lostReputation;\n        uint submittedTime;\n        uint boostedPhaseTime; //the time the proposal shift to relative mode.\n        ProposalState state;\n        uint winningVote; //the winning vote.\n        address proposer;\n        uint boostedVotePeriodLimit;\n        mapping(uint=>uint) votes;\n        mapping(address=>Voter) voters;\n        mapping(uint=>uint) stakes;\n        mapping(address=>Staker) stakers;\n    }\n\n    event NewProposal(bytes32 indexed _proposalId, uint _numOfChoices, address _proposer, bytes32 _paramsHash);\n    event ExecuteProposal(bytes32 indexed _proposalId, uint _decision);\n    event VoteProposal(bytes32 indexed _proposalId, address indexed _voter, uint _vote, uint _reputation);\n    event Stake(bytes32 indexed _proposalId, address indexed _voter,uint _vote,uint _amount);\n    event Redeem(bytes32 indexed _proposalId, address indexed _beneficiary,uint _amount);\n    event RedeemReputation(bytes32 indexed _proposalId, address indexed _beneficiary,int _amount);\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\n    uint constant MAX_NUM_OF_CHOICES = 10;\n    uint proposalsCnt; // Total amount of proposals\n    mapping(address=>uint) public orgBoostedProposalsCnt;\n    StandardToken public stakingToken;\n\n    /**\n     * @dev Constructor\n     */\n    function GenesisProtocol(StandardToken _stakingToken)\n    public\n    {\n        stakingToken = _stakingToken;\n    }\n\n  /**\n   * @dev Check that the proposal is votable (open and not executed yet)\n   */\n    modifier votable(bytes32 _proposalId) {\n        require(isVotable(_proposalId));\n        _;\n    }\n\n    /**\n     * @dev hash the parameters, save them if necessary, and return the hash value\n     * @param _params a parameters array\n     *    _params[0] - _preBoostedVoteRequiredPercentage,\n     *    _params[1] - _preBoostedVotePeriodLimit, //the time limit for a proposal to be in an absolute voting mode.\n     *    _params[2] -_boostedVotePeriodLimit, //the time limit for a proposal to be in an relative voting mode.\n     *    _params[3] -_thresholdConstA,\n     *    _params[4] -_thresholdConstB,\n     *    _params[5] -_minimumStakingFee,\n     *    _params[6] -_quietEndingPeriod,\n     *    _params[7] -_proposingRepRewardConstA,\n     *    _params[8] -_proposingRepRewardConstB,\n     *    _params[9] -_stakerFeeRatioForVoters,\n     *    _params[10] -_votersReputationLossRatio,\n     *    _params[11] -_votersGainRepRatioFromLostRep\n     * @param _governanceFormulasInterface override the default formulas.\n    */\n    function setParameters(\n\n        uint[12] _params, //use array here due to stack too deep issue.\n        GenesisProtocolFormulasInterface _governanceFormulasInterface\n        )\n    public\n    returns(bytes32)\n    {\n        require(_params[0] <= 100 && _params[0] > 0);\n        require(_params[8] > 0); //_proposingRepRewardConstB cannot be zero.\n        bytes32 hashedParameters = getParametersHash(\n            _params,\n            _governanceFormulasInterface\n            );\n        parameters[hashedParameters] = Parameters({\n            preBoostedVoteRequiredPercentage: _params[0],\n            preBoostedVotePeriodLimit: _params[1],\n            boostedVotePeriodLimit: _params[2],\n            thresholdConstA:_params[3],\n            thresholdConstB:_params[4],\n            minimumStakingFee: _params[5],\n            quietEndingPeriod: _params[6],\n            proposingRepRewardConstA: _params[7],\n            proposingRepRewardConstB:_params[8],\n            stakerFeeRatioForVoters:_params[9],\n            votersReputationLossRatio:_params[10],\n            votersGainRepRatioFromLostRep:_params[11],\n            governanceFormulasInterface:_governanceFormulasInterface\n\n        });\n        return hashedParameters;\n    }\n\n  /**\n   * @dev hashParameters returns a hash of the given parameters\n   */\n    function getParametersHash(\n        uint[12] _params, //use array here due to stack too deep issue.\n        GenesisProtocolFormulasInterface _governanceFormulasInterface)\n        public\n        pure\n        returns(bytes32)\n        {\n        return keccak256(\n            _params[0],\n            _params[1],\n            _params[2],\n            _params[3],\n            _params[4],\n            _params[5],\n            _params[6],\n            _params[7],\n            _params[8],\n            _params[9],\n            _params[10],\n            _params[11],\n            _governanceFormulasInterface);\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 _avatar an address to be sent as the payload to the _executable contract.\n     * @param _executable This contract will be executed when vote is over.\n     * @param _proposer address\n     */\n    function propose(uint _numOfChoices, bytes32 _paramsHash, address _avatar, ExecutableInterface _executable,address _proposer) public returns(bytes32) {\n          // Check valid params and number of choices:\n        require(_numOfChoices > 0 && _numOfChoices <= MAX_NUM_OF_CHOICES);\n        require(ExecutableInterface(_executable) != address(0));\n        require(parameters[_paramsHash].preBoostedVoteRequiredPercentage > 0);\n          // Generate a unique ID:\n        bytes32 proposalId = keccak256(this, proposalsCnt);\n        proposalsCnt++;\n          // Open proposal:\n        Proposal memory proposal;\n        proposal.numOfChoices = _numOfChoices;\n        proposal.avatar = _avatar;\n        proposal.executable = _executable;\n        proposal.state = ProposalState.PreBoosted;\n        // solium-disable-next-line security/no-block-members\n        proposal.submittedTime = now;\n        proposal.boostedVotePeriodLimit = parameters[_paramsHash].boostedVotePeriodLimit;\n        proposal.proposer = _proposer;\n        proposals[proposalId] = proposal;\n        NewProposal(proposalId, _numOfChoices, msg.sender, _paramsHash);\n        return proposalId;\n    }\n\n  /**\n   * @dev Cancel a proposal, only the owner can call this function and only if allowOwner flag is true.\n   * @param _proposalId the proposal ID\n   */\n    function cancelProposal(bytes32 _proposalId) public onlyProposalOwner(_proposalId) votable(_proposalId) returns(bool) {\n        //This is not allowed.\n        return false;\n    }\n\n    /**\n     * @dev staking 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 betting amount\n     * @return bool true - the proposal has been executed\n     *              false - otherwise.\n     */\n    function stake(bytes32 _proposalId, uint _vote, uint _amount) public returns(bool) {\n        if (execute(_proposalId)) {\n            return true;\n        }\n        if (proposals[_proposalId].state != ProposalState.PreBoosted) {\n            return false;\n        }\n        Proposal storage proposal = proposals[_proposalId];\n        uint amount = _amount;\n        // Check valid vote:\n        require(_vote < proposal.numOfChoices);\n\n        bytes32 paramsHash = getParametersFromController(Avatar(proposals[_proposalId].avatar));\n        Parameters memory params = parameters[paramsHash];\n        assert(amount > params.minimumStakingFee);\n        stakingToken.transferFrom(msg.sender, address(this), amount);\n\n        proposal.stakers[msg.sender] = Staker({\n            amount: amount,\n            vote: _vote\n        });\n        proposal.votersStakes += (params.stakerFeeRatioForVoters * amount)/100;\n        proposal.stakes[_vote] = amount.add(proposal.stakes[_vote]);\n        amount = ((100-params.stakerFeeRatioForVoters)*amount)/100;\n        proposal.totalStakes = amount.add(proposal.totalStakes);\n      // Event:\n        Stake(_proposalId, msg.sender, _vote, _amount);\n      // execute the proposal if this vote was decisive:\n        return execute(_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   * @return bool true - the proposal has been executed\n   *              false - otherwise.\n   */\n    function vote(bytes32 _proposalId, uint _vote) public votable(_proposalId) returns(bool) {\n        return internalVote(_proposalId, msg.sender, _vote, 0);\n    }\n\n  /**\n   * @dev voting function with owner functionality (can vote on behalf of someone else)\n   * @param _proposalId id of the proposal\n   * @return bool true - the proposal has been executed\n   *              false - otherwise.\n   */\n    function ownerVote(bytes32 _proposalId, uint , address ) public onlyProposalOwner(_proposalId) votable(_proposalId) returns(bool) {\n      //This is not allowed.\n        return false;\n    }\n\n    function voteWithSpecifiedAmounts(bytes32 _proposalId,uint _vote,uint _rep,uint) public votable(_proposalId) returns(bool) {\n        return internalVote(_proposalId,msg.sender,_vote,_rep);\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) public votable(_proposalId) {\n       //this is not allowed\n        return;\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) public votable(_proposalId) returns(bool) {\n        bytes32 paramsHash = getParametersFromController(Avatar(proposals[_proposalId].avatar));\n        Parameters memory params = parameters[paramsHash];\n        Proposal storage proposal = proposals[_proposalId];\n        Proposal memory tmpProposal;\n        uint executionBar = Avatar(proposal.avatar).nativeReputation().totalSupply() * params.preBoostedVoteRequiredPercentage/100;\n\n        if (proposal.state == ProposalState.PreBoosted) {\n            // solium-disable-next-line security/no-block-members\n            if ((now - proposal.submittedTime) >= params.preBoostedVotePeriodLimit) {\n                tmpProposal = proposal;\n                ExecuteProposal(_proposalId, 0);\n                (tmpProposal.executable).execute(_proposalId, tmpProposal.avatar, int(0));\n                proposals[_proposalId].state = ProposalState.Closed;\n                proposal.winningVote = 0;\n                return true;\n             }\n        // Check if someone crossed the absolute vote execution bar.\n            if (proposal.votes[proposal.winningVote] > executionBar) {\n                tmpProposal = proposal;\n                ExecuteProposal(_proposalId, proposal.winningVote);\n                (tmpProposal.executable).execute(_proposalId, tmpProposal.avatar, int(proposal.winningVote));\n                proposals[_proposalId].state = ProposalState.Executed;\n                return true;\n               }\n           //check if the proposal crossed its absolutePhaseScoreLimit or preBoostedVotePeriodLimit\n            if ( shouldBoost(_proposalId)) {\n                //change proposal mode to boosted mode.\n                proposal.state = ProposalState.Boosted;\n                // solium-disable-next-line security/no-block-members\n                proposal.boostedPhaseTime = now;\n                orgBoostedProposalsCnt[proposal.avatar]++;\n              }\n           }\n        if ((proposal.state == ProposalState.Boosted) ||\n            (proposal.state == ProposalState.QuietEndingPeriod)) {\n            // solium-disable-next-line security/no-block-members\n            if ((now - proposal.boostedPhaseTime) >= proposal.boostedVotePeriodLimit) {\n                tmpProposal = proposal;\n                ExecuteProposal(_proposalId, proposal.winningVote);\n                (tmpProposal.executable).execute(_proposalId, tmpProposal.avatar, int(proposal.winningVote));\n                proposals[_proposalId].state = ProposalState.Executed;\n                orgBoostedProposalsCnt[tmpProposal.avatar]--;\n                return true;\n             }\n\n         // Check if someone crossed the absolute vote execution bar.\n            if (proposal.votes[proposal.winningVote] > executionBar) {\n                tmpProposal = proposal;\n                ExecuteProposal(_proposalId, proposal.winningVote);\n                (tmpProposal.executable).execute(_proposalId, tmpProposal.avatar, int(proposal.winningVote));\n                proposal.state = ProposalState.Executed;\n                return true;\n            }\n       }\n        return false;\n    }\n\n    /**\n     * @dev redeem a reward for a successful stake, vote or proposing.\n     * The function use a beneficiary address as a parameter (and not msg.sender) to enable\n     * users to redeem on behalf of someone else.\n     * @param _proposalId the ID of the proposal\n     * @param _beneficiary - the beneficiary address\n     * @return bool true or false.\n     */\n    function redeem(bytes32 _proposalId,address _beneficiary) public returns(bool) {\n        Proposal storage proposal = proposals[_proposalId];\n        require((proposal.state == ProposalState.Executed) || (proposal.state == ProposalState.Closed));\n        uint amount;\n        int reputation;\n        if ((proposal.stakers[_beneficiary].amount>0) &&\n             (proposal.stakers[_beneficiary].vote == proposals[_proposalId].winningVote)) {\n            //as staker\n            amount = redeemAmount(_proposalId,_beneficiary);\n            reputation = redeemStakerRepAmount(_proposalId,_beneficiary);\n            proposals[_proposalId].stakers[_beneficiary].amount = 0;\n        }\n        if ((proposal.numOfChoices == 2) && (proposal.voters[_beneficiary].reputation != 0 )) {\n            //as voter\n            amount += redeemVoterAmount(_proposalId,_beneficiary);\n            reputation += redeemVoterReputation(_proposalId,_beneficiary);\n            proposal.voters[_beneficiary].reputation = 0;\n        }\n\n        if ((proposal.numOfChoices == 2)&&(proposal.proposer == _beneficiary)&&(proposal.winningVote == 1)) {\n            //as proposer\n            reputation += redeemProposerReputation(_proposalId);\n            proposal.proposer = 0;\n\n        }\n        if (amount != 0) {\n            stakingToken.transfer(_beneficiary, amount);\n            Redeem(_proposalId,_beneficiary,amount);\n        }\n        if (reputation != 0 ) {\n            ControllerInterface(Avatar(proposal.avatar).owner()).mintReputation(reputation,_beneficiary,proposal.avatar);\n            RedeemReputation(_proposalId,_beneficiary,reputation);\n        }\n        return true;\n    }\n\n    /**\n     * @dev shouldBoost check if a proposal should be shifted to boosted phase.\n     * @param _proposalId the ID of the proposal\n     * @return bool true or false.\n     */\n    function shouldBoost(bytes32 _proposalId) public view returns(bool) {\n        address avatar = proposals[_proposalId].avatar;\n        bytes32 paramsHash = getParametersFromController(Avatar(avatar));\n        Parameters memory params = parameters[paramsHash];\n        if (params.governanceFormulasInterface == GenesisProtocolFormulasInterface(0)) {\n            return (_score(_proposalId,Avatar(avatar).nativeReputation().totalSupply()) >= threshold(avatar));\n        } else {\n            return (params.governanceFormulasInterface).shouldBoost(_proposalId);\n        }\n    }\n\n    /**\n     * @dev score return the proposal score\n     * @param _proposalId the ID of the proposal\n     * @return uint proposal score.\n     */\n    function score(bytes32 _proposalId) public view returns(int) {\n        bytes32 paramsHash = getParametersFromController(Avatar(proposals[_proposalId].avatar));\n        Parameters memory params = parameters[paramsHash];\n        if (params.governanceFormulasInterface == GenesisProtocolFormulasInterface(0)) {\n            return _score(_proposalId, Avatar(proposals[_proposalId].avatar).nativeReputation().totalSupply());\n        } else {\n            return (params.governanceFormulasInterface).score(_proposalId);\n        }\n    }\n\n    /**\n     * @dev threshold return the organization's score threshold which required by\n     * a proposal to shift to boosted state.\n     * This threshold is dynamically set and it depend on the number of boosted proposal.\n     * @param _avatar the organization avatar\n     * @return int thresholdConstA.\n     */\n    function threshold(address _avatar) public view returns(int) {\n        uint e = 2;\n        bytes32 paramsHash = getParametersFromController(Avatar(_avatar));\n        Parameters memory params = parameters[paramsHash];\n        if (params.governanceFormulasInterface == GenesisProtocolFormulasInterface(0)) {\n            return int(params.thresholdConstA * (e ** (orgBoostedProposalsCnt[_avatar]/params.thresholdConstB)));\n        } else {\n            return int((params.governanceFormulasInterface).threshold(_avatar));\n        }\n    }\n\n    /**\n     * @dev redeemAmount return the redeem amount which a certain staker is entitle to.\n     * @param _proposalId the ID of the proposal\n     * @param _beneficiary the beneficiary .\n     * @return uint redeem amount .\n     */\n    function redeemAmount(bytes32 _proposalId,address _beneficiary) public view returns(uint) {\n        bytes32 paramsHash = getParametersFromController(Avatar(proposals[_proposalId].avatar));\n        Parameters memory params = parameters[paramsHash];\n        if (params.governanceFormulasInterface == GenesisProtocolFormulasInterface(0)) {\n            Proposal storage proposal = proposals[_proposalId];\n            if (proposal.stakes[proposals[_proposalId].winningVote] == 0) {\n              //this can be reached if the winningVote is 0\n                return 0;\n            }\n            return (proposal.stakers[_beneficiary].amount * proposal.totalStakes) / proposal.stakes[proposals[_proposalId].winningVote];\n        } else {\n            return (params.governanceFormulasInterface).redeemAmount(_proposalId,_beneficiary);\n        }\n    }\n\n    /**\n     * @dev redeemProposerReputation return the redeem amount which a proposer is entitle to.\n     * @param _proposalId the ID of the proposal\n     * @return int proposer redeem reputation.\n     */\n    function redeemProposerReputation(bytes32 _proposalId) public view returns(int) {\n        bytes32 paramsHash = getParametersFromController(Avatar(proposals[_proposalId].avatar));\n        Parameters memory params = parameters[paramsHash];\n        int rep;\n        if (params.governanceFormulasInterface == GenesisProtocolFormulasInterface(0)) {\n            Proposal storage proposal = proposals[_proposalId];\n            if (proposal.winningVote == 0) {\n                rep = 0;\n            } else {\n                rep = int(params.proposingRepRewardConstA + params.proposingRepRewardConstB * (proposal.votes[1]-proposal.votes[0]));\n            }\n        } else {\n            rep = int((params.governanceFormulasInterface).redeemProposerReputation(_proposalId));\n        }\n        return rep;\n    }\n\n    /**\n     * @dev redeemVoterAmount return the redeem amount which a voter is entitle to.\n     * @param _proposalId the ID of the proposal\n     * @param _beneficiary the beneficiary .\n     * @return uint proposer redeem reputation amount.\n     */\n    function redeemVoterAmount(bytes32 _proposalId, address _beneficiary) public view returns(uint) {\n        bytes32 paramsHash = getParametersFromController(Avatar(proposals[_proposalId].avatar));\n        Parameters memory params = parameters[paramsHash];\n        Proposal storage proposal = proposals[_proposalId];\n        if (proposal.totalVotes == 0)\n           return 0;\n\n        if (params.governanceFormulasInterface == GenesisProtocolFormulasInterface(0)) {\n            return (proposal.votersStakes * (proposal.voters[_beneficiary].reputation / proposal.totalVotes));\n        } else {\n            return (params.governanceFormulasInterface).redeemVoterAmount(_proposalId,_beneficiary);\n        }\n    }\n\n    /**\n     * @dev redeemVoterReputation return the redeem reputation which a voter is entitle to.\n     * @param _proposalId the ID of the proposal\n     * @param _beneficiary the beneficiary .\n     * @return uint proposer redeem reputation amount.\n     */\n    function redeemVoterReputation(bytes32 _proposalId, address _beneficiary) public view returns(int) {\n        bytes32 paramsHash = getParametersFromController(Avatar(proposals[_proposalId].avatar));\n        Parameters memory params = parameters[paramsHash];\n        Proposal storage proposal = proposals[_proposalId];\n        int rep;\n        if (proposal.state == ProposalState.Closed) {\n           //no reputation flow occurs so give back reputation for the voter\n            return int((proposal.voters[_beneficiary].reputation * params.votersReputationLossRatio)/100);\n        }\n        if (proposal.totalVotes == 0) {\n            return 0;\n         }\n        if (proposal.voters[_beneficiary].preBoosted && (proposal.winningVote == proposal.voters[_beneficiary].vote )) {\n        //give back reputation for the voter\n            rep = int((proposal.voters[_beneficiary].reputation * params.votersReputationLossRatio)/100);\n        }\n\n        //80% (configurable, changeable) of the amount of the lost reputation is divided by the successful PB voters, in proportion to their reputation.\n        return rep + int((proposal.voters[_beneficiary].reputation * ((proposal.lostReputation * params.votersGainRepRatioFromLostRep)/100))/proposal.totalVotes);\n    }\n\n    /**\n     * @dev redeemStakerRepAmount return the redeem amount which a staker is entitle to.\n     * @param _proposalId the ID of the proposal\n     * @param _beneficiary the beneficiary .\n     * @return uint proposer redeem reputation amount.\n     */\n    function redeemStakerRepAmount(bytes32 _proposalId, address _beneficiary) public view returns(int) {\n        bytes32 paramsHash = getParametersFromController(Avatar(proposals[_proposalId].avatar));\n        Parameters memory params = parameters[paramsHash];\n        Proposal storage proposal = proposals[_proposalId];\n        int rep;\n        if ((proposal.stakers[_beneficiary].amount>0) &&\n             (proposal.stakers[_beneficiary].vote == proposal.winningVote)) {\n          //The rest (20%) of lost reputation is divided between the successful staker, in proportion to their stake.\n            rep = int((proposal.stakers[_beneficiary].amount * ((proposal.lostReputation * (100 - params.votersGainRepRatioFromLostRep))/100)) / proposal.stakes[proposal.winningVote]);\n        }\n        return rep;\n    }\n\n  /**\n   * @dev getNumberOfChoices returns the number of choices possible in this proposal\n   * @param _proposalId the ID of the proposals\n   * @return uint that contains number of choices\n   */\n    function getNumberOfChoices(bytes32 _proposalId) public constant returns(uint) {\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 uint vote - the voters vote\n   *        uint reputation - amount of reputation committed by _voter to _proposalId\n   */\n    function voteInfo(bytes32 _proposalId, address _voter) public constant returns(uint, uint) {\n        Voter memory voter = proposals[_proposalId].voters[_voter];\n        return (voter.vote, voter.reputation);\n    }\n\n    /**\n     * @dev votesStatus returns the number of yes, no, and abstain and if the proposal is ended of a given proposal id\n     * @param _proposalId the ID of the proposal\n     * @return votes array of votes for each choice\n     */\n    function votesStatus(bytes32 _proposalId) public constant returns(uint[11] votes) {\n        Proposal storage proposal = proposals[_proposalId];\n        for (uint cnt = 0; cnt < proposal.numOfChoices; cnt++) {\n            votes[cnt] = proposal.votes[cnt];\n        }\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) public constant returns(bool) {\n        return ((proposals[_proposalId].state == ProposalState.PreBoosted)||(proposals[_proposalId].state == ProposalState.Boosted)||(proposals[_proposalId].state == ProposalState.QuietEndingPeriod));\n    }\n\n    /**\n      * @dev proposalStatus return the total votes and stakes for a given proposal\n      * @param _proposalId the ID of the proposal\n      * @return uint totalVotes\n      * @return uint totalStakes\n      * @return uint voterStakes\n    */\n    function proposalStatus(bytes32 _proposalId) public constant returns(uint, uint, uint) {\n        return (proposals[_proposalId].totalVotes, proposals[_proposalId].totalStakes, proposals[_proposalId].votersStakes);\n    }\n\n    /**\n      * @dev totalReputationSupply return the total reputation supply for a given proposal\n      * @param _proposalId the ID of the proposal\n      * @return uint total reputation supply\n    */\n    function totalReputationSupply(bytes32 _proposalId) public constant returns(uint) {\n        return Avatar(proposals[_proposalId].avatar).nativeReputation().totalSupply();\n    }\n\n    /**\n      * @dev proposalAvatar return the avatar for a given proposal\n      * @param _proposalId the ID of the proposal\n      * @return uint total reputation supply\n    */\n    function proposalAvatar(bytes32 _proposalId) public constant returns(address) {\n        return (proposals[_proposalId].avatar);\n    }\n\n    /**\n      * @dev scoreThresholdParams return the score threshold params for a given\n      * organization.\n      * @param _avatar the organization's avatar\n      * @return uint thresholdConstA\n      * @return uint thresholdConstB\n    */\n    function scoreThresholdParams(address _avatar) public constant returns(uint,uint) {\n        bytes32 paramsHash = getParametersFromController(Avatar(_avatar));\n        Parameters memory params = parameters[paramsHash];\n        return (params.thresholdConstA,params.thresholdConstB);\n    }\n\n    /**\n      * @dev staker return the vote and stake amount for a given proposal and staker\n      * @param _proposalId the ID of the proposal\n      * @param _staker staker address\n      * @return uint vote\n      * @return uint amount\n    */\n    function staker(bytes32 _proposalId,address _staker) public constant returns(uint,uint) {\n        return (proposals[_proposalId].stakers[_staker].vote,proposals[_proposalId].stakers[_staker].amount);\n    }\n\n    /**\n      * @dev voteStake return the amount stakes for a given proposal and vote\n      * @param _proposalId the ID of the proposal\n      * @param _vote vote number\n      * @return uint stake amount\n    */\n    function voteStake(bytes32 _proposalId,uint _vote) public constant returns(uint) {\n        return proposals[_proposalId].stakes[_vote];\n    }\n\n    /**\n      * @dev voteStake return the winningVote for a given proposal\n      * @param _proposalId the ID of the proposal\n      * @return uint winningVote\n    */\n    function winningVote(bytes32 _proposalId) public constant returns(uint) {\n        return proposals[_proposalId].winningVote;\n    }\n\n    /**\n      * @dev voteStake return the state for a given proposal\n      * @param _proposalId the ID of the proposal\n      * @return ProposalState proposal state\n    */\n    function state(bytes32 _proposalId) public constant returns(ProposalState) {\n        return proposals[_proposalId].state;\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     * @param _rep how many reputation the voter would like to stake for this vote.\n     *         if  _rep==0 so the voter full reputation will be use.\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, uint _vote, uint _rep) private returns(bool) {\n\n        if (execute(_proposalId)) {\n            return true;\n        }\n\n        bytes32 paramsHash = getParametersFromController(Avatar(proposals[_proposalId].avatar));\n        Parameters memory params = parameters[paramsHash];\n        Proposal storage proposal = proposals[_proposalId];\n        // Check valid vote:\n        require(_vote < proposal.numOfChoices);\n\n        // Check voter has enough reputation:\n        uint reputation = Avatar(proposal.avatar).nativeReputation().reputationOf(_voter);\n        require(reputation >= _rep);\n        uint rep = _rep;\n        if (rep == 0) {\n            rep = reputation;\n        }\n        // If this voter has already voted, return false.\n        if (proposal.voters[_voter].reputation != 0) {\n            return false;\n        }\n        // The voting itself:\n        proposal.votes[_vote] = rep.add(proposal.votes[_vote]);\n        if (proposal.votes[_vote] > proposal.votes[proposal.winningVote]) {\n           // solium-disable-next-line security/no-block-members\n            uint _now = now;\n            if ((proposal.state == ProposalState.QuietEndingPeriod) ||\n               ((proposal.state == ProposalState.Boosted) && ((_now - proposal.boostedPhaseTime) >= (params.boostedVotePeriodLimit - params.quietEndingPeriod)))) {\n                //quietEndingPeriod\n                proposal.boostedPhaseTime = _now;\n                if (proposal.state != ProposalState.QuietEndingPeriod) {\n                    proposal.boostedVotePeriodLimit = params.quietEndingPeriod;\n                    proposal.state = ProposalState.QuietEndingPeriod;\n                }\n            }\n            proposal.winningVote = _vote;\n        }\n        proposal.totalVotes = rep.add(proposal.totalVotes);\n        if (proposal.state != ProposalState.Boosted) {\n            uint reputationDeposit = (params.votersReputationLossRatio * rep)/100;\n            ControllerInterface(Avatar(proposal.avatar).owner()).mintReputation((-1) * int(reputationDeposit),_voter,proposal.avatar);\n            proposal.lostReputation += reputationDeposit;\n        }\n        proposal.voters[_voter] = Voter({\n            reputation: rep,\n            vote: _vote,\n            preBoosted:(proposal.state == ProposalState.PreBoosted)\n        });\n        // Event:\n        VoteProposal(_proposalId, _voter, _vote, reputation);\n        // execute the proposal if this vote was decisive:\n        return execute(_proposalId);\n    }\n\n    /**\n     * @dev _score return the proposal score\n     * For dual choice proposal S = (W+) - (W-)\n     * For multiple choice proposal S = W * (R*R)/(totalRep*totalRep)\n     * @param _proposalId the ID of the proposal\n     * @param _totalSupply reputation total supply\n     * @return int proposal score.\n     */\n    function _score(bytes32 _proposalId, uint _totalSupply) private view returns(int) {\n        Proposal storage proposal = proposals[_proposalId];\n        if (proposal.numOfChoices == 2) {\n            return int(proposal.stakes[1]) - int(proposal.stakes[0]);\n        }else {\n            return int(((proposal.totalStakes+proposal.votersStakes) * (proposal.totalVotes**2))/(_totalSupply**2));\n        }\n    }\n}\n",
  "sourcePath": "/Users/oren/daostack/daostack2/daostack/contracts/VotingMachines/GenesisProtocol.sol",
  "ast": {
    "attributes": {
      "absolutePath": "/Users/oren/daostack/daostack2/daostack/contracts/VotingMachines/GenesisProtocol.sol",
      "exportedSymbols": {
        "GenesisProtocol": [
          3292
        ]
      }
    },
    "children": [
      {
        "attributes": {
          "literals": [
            "solidity",
            "^",
            "0.4",
            ".18"
          ]
        },
        "id": 885,
        "name": "PragmaDirective",
        "src": "0:24:2"
      },
      {
        "attributes": {
          "SourceUnit": 5353,
          "absolutePath": "/Users/oren/daostack/daostack2/daostack/contracts/controller/Reputation.sol",
          "file": "../controller/Reputation.sol",
          "scope": 3293,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 886,
        "name": "ImportDirective",
        "src": "26:38:2"
      },
      {
        "attributes": {
          "SourceUnit": 3460,
          "absolutePath": "/Users/oren/daostack/daostack2/daostack/contracts/VotingMachines/IntVoteInterface.sol",
          "file": "./IntVoteInterface.sol",
          "scope": 3293,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 887,
        "name": "ImportDirective",
        "src": "65:32:2"
      },
      {
        "attributes": {
          "SourceUnit": 9586,
          "absolutePath": "/Users/oren/daostack/daostack2/daostack/contracts/universalSchemes/UniversalScheme.sol",
          "file": "../universalSchemes/UniversalScheme.sol",
          "scope": 3293,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 888,
        "name": "ImportDirective",
        "src": "98:49:2"
      },
      {
        "attributes": {
          "SourceUnit": 3342,
          "absolutePath": "/Users/oren/daostack/daostack2/daostack/contracts/VotingMachines/GenesisProtocolFormulasInterface.sol",
          "file": "./GenesisProtocolFormulasInterface.sol",
          "scope": 3293,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 889,
        "name": "ImportDirective",
        "src": "148:48:2"
      },
      {
        "attributes": {
          "contractDependencies": [
            3341,
            3459,
            9585,
            9604,
            11445
          ],
          "contractKind": "contract",
          "documentation": "@title A governance contract -an organization's voting machine scheme.",
          "fullyImplemented": true,
          "linearizedBaseContracts": [
            3292,
            3341,
            9585,
            9604,
            11445,
            3459
          ],
          "name": "GenesisProtocol",
          "scope": 3293
        },
        "children": [
          {
            "attributes": {
              "arguments": [
                null
              ]
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "IntVoteInterface",
                  "referencedDeclaration": 3459,
                  "type": "contract IntVoteInterface"
                },
                "id": 890,
                "name": "UserDefinedTypeName",
                "src": "309:16:2"
              }
            ],
            "id": 891,
            "name": "InheritanceSpecifier",
            "src": "309:16:2"
          },
          {
            "attributes": {
              "arguments": [
                null
              ]
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "UniversalScheme",
                  "referencedDeclaration": 9585,
                  "type": "contract UniversalScheme"
                },
                "id": 892,
                "name": "UserDefinedTypeName",
                "src": "326:15:2"
              }
            ],
            "id": 893,
            "name": "InheritanceSpecifier",
            "src": "326:15:2"
          },
          {
            "attributes": {
              "arguments": [
                null
              ]
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "GenesisProtocolFormulasInterface",
                  "referencedDeclaration": 3341,
                  "type": "contract GenesisProtocolFormulasInterface"
                },
                "id": 894,
                "name": "UserDefinedTypeName",
                "src": "342:32:2"
              }
            ],
            "id": 895,
            "name": "InheritanceSpecifier",
            "src": "342:32:2"
          },
          {
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "SafeMath",
                  "referencedDeclaration": 11365,
                  "type": "library SafeMath"
                },
                "id": 896,
                "name": "UserDefinedTypeName",
                "src": "387:8:2"
              },
              {
                "attributes": {
                  "name": "uint",
                  "type": "uint256"
                },
                "id": 897,
                "name": "ElementaryTypeName",
                "src": "400:4:2"
              }
            ],
            "id": 898,
            "name": "UsingForDirective",
            "src": "381:24:2"
          },
          {
            "attributes": {
              "canonicalName": "GenesisProtocol.ProposalState",
              "name": "ProposalState"
            },
            "children": [
              {
                "attributes": {
                  "name": "Closed"
                },
                "id": 899,
                "name": "EnumValue",
                "src": "432:6:2"
              },
              {
                "attributes": {
                  "name": "Executed"
                },
                "id": 900,
                "name": "EnumValue",
                "src": "440:8:2"
              },
              {
                "attributes": {
                  "name": "PreBoosted"
                },
                "id": 901,
                "name": "EnumValue",
                "src": "450:10:2"
              },
              {
                "attributes": {
                  "name": "Boosted"
                },
                "id": 902,
                "name": "EnumValue",
                "src": "461:7:2"
              },
              {
                "attributes": {
                  "name": "QuietEndingPeriod"
                },
                "id": 903,
                "name": "EnumValue",
                "src": "469:17:2"
              }
            ],
            "id": 904,
            "name": "EnumDefinition",
            "src": "411:77:2"
          },
          {
            "attributes": {
              "canonicalName": "GenesisProtocol.Parameters",
              "name": "Parameters",
              "scope": 3292,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "constant": false,
                  "name": "preBoostedVoteRequiredPercentage",
                  "scope": 931,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint256",
                  "value": null,
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint",
                      "type": "uint256"
                    },
                    "id": 905,
                    "name": "ElementaryTypeName",
                    "src": "522:4:2"
                  }
                ],
                "id": 906,
                "name": "VariableDeclaration",
                "src": "522:37:2"
              },
              {
                "attributes": {
                  "constant": false,
                  "name": "preBoostedVotePeriodLimit",
                  "scope": 931,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint256",
                  "value": null,
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint",
                      "type": "uint256"
                    },
                    "id": 907,
                    "name": "ElementaryTypeName",
                    "src": "607:4:2"
                  }
                ],
                "id": 908,
                "name": "VariableDeclaration",
                "src": "607:30:2"
              },
              {
                "attributes": {
                  "constant": false,
                  "name": "boostedVotePeriodLimit",
                  "scope": 931,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint256",
                  "value": null,
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint",
                      "type": "uint256"
                    },
                    "id": 909,
                    "name": "ElementaryTypeName",
                    "src": "713:4:2"
                  }
                ],
                "id": 910,
                "name": "VariableDeclaration",
                "src": "713:27:2"
              },
              {
                "attributes": {
                  "constant": false,
                  "name": "thresholdConstA",
                  "scope": 931,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint256",
                  "value": null,
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint",
                      "type": "uint256"
                    },
                    "id": 911,
                    "name": "ElementaryTypeName",
                    "src": "816:4:2"
                  }
                ],
                "id": 912,
                "name": "VariableDeclaration",
                "src": "816:20:2"
              },
              {
                "attributes": {
                  "constant": false,
                  "name": "thresholdConstB",
                  "scope": 931,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint256",
                  "value": null,
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint",
                      "type": "uint256"
                    },
                    "id": 913,
                    "name": "ElementaryTypeName",
                    "src": "846:4:2"
                  }
                ],
                "id": 914,
                "name": "VariableDeclaration",
                "src": "846:20:2"
              },
              {
                "attributes": {
                  "constant": false,
                  "name": "governanceFormulasInterface",
                  "scope": 931,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "contract GenesisProtocolFormulasInterface",
                  "value": null,
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "contractScope": null,
                      "name": "GenesisProtocolFormulasInterface",
                      "referencedDeclaration": 3341,
                      "type": "contract GenesisProtocolFormulasInterface"
                    },
                    "id": 915,
                    "name": "UserDefinedTypeName",
                    "src": "876:32:2"
                  }
                ],
                "id": 916,
                "name": "VariableDeclaration",
                "src": "876:60:2"
              },
              {
                "attributes": {
                  "constant": false,
                  "name": "minimumStakingFee",
                  "scope": 931,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint256",
                  "value": null,
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint",
                      "type": "uint256"
                    },
                    "id": 917,
                    "name": "ElementaryTypeName",
                    "src": "946:4:2"
                  }
                ],
                "id": 918,
                "name": "VariableDeclaration",
                "src": "946:22:2"
              },
              {
                "attributes": {
                  "constant": false,
                  "name": "quietEndingPeriod",
                  "scope": 931,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint256",
                  "value": null,
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint",
                      "type": "uint256"
                    },
                    "id": 919,
                    "name": "ElementaryTypeName",
                    "src": "978:4:2"
                  }
                ],
                "id": 920,
                "name": "VariableDeclaration",
                "src": "978:22:2"
              },
              {
                "attributes": {
                  "constant": false,
                  "name": "proposingRepRewardConstA",
                  "scope": 931,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint256",
                  "value": null,
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint",
                      "type": "uint256"
                    },
                    "id": 921,
                    "name": "ElementaryTypeName",
                    "src": "1010:4:2"
                  }
                ],
                "id": 922,
                "name": "VariableDeclaration",
                "src": "1010:29:2"
              },
              {
                "attributes": {
                  "constant": false,
                  "name": "proposingRepRewardConstB",
                  "scope": 931,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint256",
                  "value": null,
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint",
                      "type": "uint256"
                    },
                    "id": 923,
                    "name": "ElementaryTypeName",
                    "src": "1049:4:2"
                  }
                ],
                "id": 924,
                "name": "VariableDeclaration",
                "src": "1049:29:2"
              },
              {
                "attributes": {
                  "constant": false,
                  "name": "stakerFeeRatioForVoters",
                  "scope": 931,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint256",
                  "value": null,
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint",
                      "type": "uint256"
                    },
                    "id": 925,
                    "name": "ElementaryTypeName",
                    "src": "1088:4:2"
                  }
                ],
                "id": 926,
                "name": "VariableDeclaration",
                "src": "1088:28:2"
              },
              {
                "attributes": {
                  "constant": false,
                  "name": "votersReputationLossRatio",
                  "scope": 931,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint256",
                  "value": null,
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint",
                      "type": "uint256"
                    },
                    "id": 927,
                    "name": "ElementaryTypeName",
                    "src": "1151:4:2"
                  }
                ],
                "id": 928,
                "name": "VariableDeclaration",
                "src": "1151:30:2"
              },
              {
                "attributes": {
                  "constant": false,
                  "name": "votersGainRepRatioFromLostRep",
                  "scope": 931,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint256",
                  "value": null,
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint",
                      "type": "uint256"
                    },
                    "id": 929,
                    "name": "ElementaryTypeName",
                    "src": "1191:4:2"
                  }
                ],
                "id": 930,
                "name": "VariableDeclaration",
                "src": "1191:34:2"
              }
            ],
            "id": 931,
            "name": "StructDefinition",
            "src": "494:763:2"
          },
          {
            "attributes": {
              "canonicalName": "GenesisProtocol.Voter",
              "name": "Voter",
              "scope": 3292,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "constant": false,
                  "name": "vote",
                  "scope": 938,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint256",
                  "value": null,
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint",
                      "type": "uint256"
                    },
                    "id": 932,
                    "name": "ElementaryTypeName",
                    "src": "1285:4:2"
                  }
                ],
                "id": 933,
                "name": "VariableDeclaration",
                "src": "1285:9:2"
              },
              {
                "attributes": {
                  "constant": false,
                  "name": "reputation",
                  "scope": 938,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint256",
                  "value": null,
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint",
                      "type": "uint256"
                    },
                    "id": 934,
                    "name": "ElementaryTypeName",
                    "src": "1321:4:2"
                  }
                ],
                "id": 935,
                "name": "VariableDeclaration",
                "src": "1321:15:2"
              },
              {
                "attributes": {
                  "constant": false,
                  "name": "preBoosted",
                  "scope": 938,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "bool",
                  "value": null,
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "bool",
                      "type": "bool"
                    },
                    "id": 936,
                    "name": "ElementaryTypeName",
                    "src": "1378:4:2"
                  }
                ],
                "id": 937,
                "name": "VariableDeclaration",
                "src": "1378:15:2"
              }
            ],
            "id": 938,
            "name": "StructDefinition",
            "src": "1262:138:2"
          },
          {
            "attributes": {
              "canonicalName": "GenesisProtocol.Staker",
              "name": "Staker",
              "scope": 3292,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "constant": false,
                  "name": "vote",
                  "scope": 943,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint256",
                  "value": null,
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint",
                      "type": "uint256"
                    },
                    "id": 939,
                    "name": "ElementaryTypeName",
                    "src": "1430:4:2"
                  }
                ],
                "id": 940,
                "name": "VariableDeclaration",
                "src": "1430:9:2"
              },
              {
                "attributes": {
                  "constant": false,
                  "name": "amount",
                  "scope": 943,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint256",
                  "value": null,
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint",
                      "type": "uint256"
                    },
                    "id": 941,
                    "name": "ElementaryTypeName",
                    "src": "1466:4:2"
                  }
                ],
                "id": 942,
                "name": "VariableDeclaration",
                "src": "1466:11:2"
              }
            ],
            "id": 943,
            "name": "StructDefinition",
            "src": "1406:110:2"
          },
          {
            "attributes": {
              "canonicalName": "GenesisProtocol.Proposal",
              "name": "Proposal",
              "scope": 3292,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "constant": false,
                  "name": "avatar",
                  "scope": 986,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "address",
                  "value": null,
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "address",
                      "type": "address"
                    },
                    "id": 944,
                    "name": "ElementaryTypeName",
                    "src": "1548:7:2"
                  }
                ],
                "id": 945,
                "name": "VariableDeclaration",
                "src": "1548:14:2"
              },
              {
                "attributes": {
                  "constant": false,
                  "name": "numOfChoices",
                  "scope": 986,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint256",
                  "value": null,
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint",
                      "type": "uint256"
                    },
                    "id": 946,
                    "name": "ElementaryTypeName",
                    "src": "1628:4:2"
                  }
                ],
                "id": 947,
                "name": "VariableDeclaration",
                "src": "1628:17:2"
              },
              {
                "attributes": {
                  "constant": false,
                  "name": "executable",
                  "scope": 986,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "contract ExecutableInterface",
                  "value": null,
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "contractScope": null,
                      "name": "ExecutableInterface",
                      "referencedDeclaration": 8021,
                      "type": "contract ExecutableInterface"
                    },
                    "id": 948,
                    "name": "UserDefinedTypeName",
                    "src": "1655:19:2"
                  }
                ],
                "id": 949,
                "name": "VariableDeclaration",
                "src": "1655:30:2"
              },
              {
                "attributes": {
                  "constant": false,
                  "name": "totalVotes",
                  "scope": 986,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint256",
                  "value": null,
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint",
                      "type": "uint256"
                    },
                    "id": 950,
                    "name": "ElementaryTypeName",
                    "src": "1741:4:2"
                  }
                ],
                "id": 951,
                "name": "VariableDeclaration",
                "src": "1741:15:2"
              },
              {
                "attributes": {
                  "constant": false,
                  "name": "totalStakes",
                  "scope": 986,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint256",
                  "value": null,
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint",
                      "type": "uint256"
                    },
                    "id": 952,
                    "name": "ElementaryTypeName",
                    "src": "1766:4:2"
                  }
                ],
                "id": 953,
                "name": "VariableDeclaration",
                "src": "1766:16:2"
              },
              {
                "attributes": {
                  "constant": false,
                  "name": "votersStakes",
                  "scope": 986,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint256",
                  "value": null,
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint",
                      "type": "uint256"
                    },
                    "id": 954,
                    "name": "ElementaryTypeName",
                    "src": "1792:4:2"
                  }
                ],
                "id": 955,
                "name": "VariableDeclaration",
                "src": "1792:17:2"
              },
              {
                "attributes": {
                  "constant": false,
                  "name": "lostReputation",
                  "scope": 986,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint256",
                  "value": null,
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint",
                      "type": "uint256"
                    },
                    "id": 956,
                    "name": "ElementaryTypeName",
                    "src": "1819:4:2"
                  }
                ],
                "id": 957,
                "name": "VariableDeclaration",
                "src": "1819:19:2"
              },
              {
                "attributes": {
                  "constant": false,
                  "name": "submittedTime",
                  "scope": 986,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint256",
                  "value": null,
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint",
                      "type": "uint256"
                    },
                    "id": 958,
                    "name": "ElementaryTypeName",
                    "src": "1848:4:2"
                  }
                ],
                "id": 959,
                "name": "VariableDeclaration",
                "src": "1848:18:2"
              },
              {
                "attributes": {
                  "constant": false,
                  "name": "boostedPhaseTime",
                  "scope": 986,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint256",
                  "value": null,
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint",
                      "type": "uint256"
                    },
                    "id": 960,
                    "name": "ElementaryTypeName",
                    "src": "1876:4:2"
                  }
                ],
                "id": 961,
                "name": "VariableDeclaration",
                "src": "1876:21:2"
              },
              {
                "attributes": {
                  "constant": false,
                  "name": "state",
                  "scope": 986,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "enum GenesisProtocol.ProposalState",
                  "value": null,
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "contractScope": null,
                      "name": "ProposalState",
                      "referencedDeclaration": 904,
                      "type": "enum GenesisProtocol.ProposalState"
                    },
                    "id": 962,
                    "name": "UserDefinedTypeName",
                    "src": "1955:13:2"
                  }
                ],
                "id": 963,
                "name": "VariableDeclaration",
                "src": "1955:19:2"
              },
              {
                "attributes": {
                  "constant": false,
                  "name": "winningVote",
                  "scope": 986,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint256",
                  "value": null,
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint",
                      "type": "uint256"
                    },
                    "id": 964,
                    "name": "ElementaryTypeName",
                    "src": "1984:4:2"
                  }
                ],
                "id": 965,
                "name": "VariableDeclaration",
                "src": "1984:16:2"
              },
              {
                "attributes": {
                  "constant": false,
                  "name": "proposer",
                  "scope": 986,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "address",
                  "value": null,
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "address",
                      "type": "address"
                    },
                    "id": 966,
                    "name": "ElementaryTypeName",
                    "src": "2030:7:2"
                  }
                ],
                "id": 967,
                "name": "VariableDeclaration",
                "src": "2030:16:2"
              },
              {
                "attributes": {
                  "constant": false,
                  "name": "boostedVotePeriodLimit",
                  "scope": 986,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint256",
                  "value": null,
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint",
                      "type": "uint256"
                    },
                    "id": 968,
                    "name": "ElementaryTypeName",
                    "src": "2056:4:2"
                  }
                ],
                "id": 969,
                "name": "VariableDeclaration",
                "src": "2056:27:2"
              },
              {
                "attributes": {
                  "constant": false,
                  "name": "votes",
                  "scope": 986,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "mapping(uint256 => uint256)",
                  "value": null,
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "type": "mapping(uint256 => uint256)"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 970,
                        "name": "ElementaryTypeName",
                        "src": "2101:4:2"
                      },
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 971,
                        "name": "ElementaryTypeName",
                        "src": "2107:4:2"
                      }
                    ],
                    "id": 972,
                    "name": "Mapping",
                    "src": "2093:19:2"
                  }
                ],
                "id": 973,
                "name": "VariableDeclaration",
                "src": "2093:25:2"
              },
              {
                "attributes": {
                  "constant": false,
                  "name": "voters",
                  "scope": 986,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "mapping(address => struct GenesisProtocol.Voter storage ref)",
                  "value": null,
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "type": "mapping(address => struct GenesisProtocol.Voter storage ref)"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 974,
                        "name": "ElementaryTypeName",
                        "src": "2136:7:2"
                      },
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "Voter",
                          "referencedDeclaration": 938,
                          "type": "struct GenesisProtocol.Voter storage pointer"
                        },
                        "id": 975,
                        "name": "UserDefinedTypeName",
                        "src": "2145:5:2"
                      }
                    ],
                    "id": 976,
                    "name": "Mapping",
                    "src": "2128:23:2"
                  }
                ],
                "id": 977,
                "name": "VariableDeclaration",
                "src": "2128:30:2"
              },
              {
                "attributes": {
                  "constant": false,
                  "name": "stakes",
                  "scope": 986,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "mapping(uint256 => uint256)",
                  "value": null,
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "type": "mapping(uint256 => uint256)"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 978,
                        "name": "ElementaryTypeName",
                        "src": "2176:4:2"
                      },
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 979,
                        "name": "ElementaryTypeName",
                        "src": "2182:4:2"
                      }
                    ],
                    "id": 980,
                    "name": "Mapping",
                    "src": "2168:19:2"
                  }
                ],
                "id": 981,
                "name": "VariableDeclaration",
                "src": "2168:26:2"
              },
              {
                "attributes": {
                  "constant": false,
                  "name": "stakers",
                  "scope": 986,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "mapping(address => struct GenesisProtocol.Staker storage ref)",
                  "value": null,
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "type": "mapping(address => struct GenesisProtocol.Staker storage ref)"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 982,
                        "name": "ElementaryTypeName",
                        "src": "2212:7:2"
                      },
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "Staker",
                          "referencedDeclaration": 943,
                          "type": "struct GenesisProtocol.Staker storage pointer"
                        },
                        "id": 983,
                        "name": "UserDefinedTypeName",
                        "src": "2221:6:2"
                      }
                    ],
                    "id": 984,
                    "name": "Mapping",
                    "src": "2204:24:2"
                  }
                ],
                "id": 985,
                "name": "VariableDeclaration",
                "src": "2204:32:2"
              }
            ],
            "id": 986,
            "name": "StructDefinition",
            "src": "1522:721:2"
          },
          {
            "attributes": {
              "anonymous": false,
              "name": "NewProposal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "name": "_proposalId",
                      "scope": 996,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 987,
                        "name": "ElementaryTypeName",
                        "src": "2267:7:2"
                      }
                    ],
                    "id": 988,
                    "name": "VariableDeclaration",
                    "src": "2267:27:2"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "name": "_numOfChoices",
                      "scope": 996,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 989,
                        "name": "ElementaryTypeName",
                        "src": "2296:4:2"
                      }
                    ],
                    "id": 990,
                    "name": "VariableDeclaration",
                    "src": "2296:18:2"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "name": "_proposer",
                      "scope": 996,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 991,
                        "name": "ElementaryTypeName",
                        "src": "2316:7:2"
                      }
                    ],
                    "id": 992,
                    "name": "VariableDeclaration",
                    "src": "2316:17:2"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "name": "_paramsHash",
                      "scope": 996,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 993,
                        "name": "ElementaryTypeName",
                        "src": "2335:7:2"
                      }
                    ],
                    "id": 994,
                    "name": "VariableDeclaration",
                    "src": "2335:19:2"
                  }
                ],
                "id": 995,
                "name": "ParameterList",
                "src": "2266:89:2"
              }
            ],
            "id": 996,
            "name": "EventDefinition",
            "src": "2249:107:2"
          },
          {
            "attributes": {
              "anonymous": false,
              "name": "ExecuteProposal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "name": "_proposalId",
                      "scope": 1002,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 997,
                        "name": "ElementaryTypeName",
                        "src": "2383:7:2"
                      }
                    ],
                    "id": 998,
                    "name": "VariableDeclaration",
                    "src": "2383:27:2"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "name": "_decision",
                      "scope": 1002,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 999,
                        "name": "ElementaryTypeName",
                        "src": "2412:4:2"
                      }
                    ],
                    "id": 1000,
                    "name": "VariableDeclaration",
                    "src": "2412:14:2"
                  }
                ],
                "id": 1001,
                "name": "ParameterList",
                "src": "2382:45:2"
              }
            ],
            "id": 1002,
            "name": "EventDefinition",
            "src": "2361:67:2"
          },
          {
            "attributes": {
              "anonymous": false,
              "name": "VoteProposal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "name": "_proposalId",
                      "scope": 1012,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 1003,
                        "name": "ElementaryTypeName",
                        "src": "2452:7:2"
                      }
                    ],
                    "id": 1004,
                    "name": "VariableDeclaration",
                    "src": "2452:27:2"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "name": "_voter",
                      "scope": 1012,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 1005,
                        "name": "ElementaryTypeName",
                        "src": "2481:7:2"
                      }
                    ],
                    "id": 1006,
                    "name": "VariableDeclaration",
                    "src": "2481:22:2"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "name": "_vote",
                      "scope": 1012,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 1007,
                        "name": "ElementaryTypeName",
                        "src": "2505:4:2"
                      }
                    ],
                    "id": 1008,
                    "name": "VariableDeclaration",
                    "src": "2505:10:2"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "name": "_reputation",
                      "scope": 1012,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 1009,
                        "name": "ElementaryTypeName",
                        "src": "2517:4:2"
                      }
                    ],
                    "id": 1010,
                    "name": "VariableDeclaration",
                    "src": "2517:16:2"
                  }
                ],
                "id": 1011,
                "name": "ParameterList",
                "src": "2451:83:2"
              }
            ],
            "id": 1012,
            "name": "EventDefinition",
            "src": "2433:102:2"
          },
          {
            "attributes": {
              "anonymous": false,
              "name": "Stake"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "name": "_proposalId",
                      "scope": 1022,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 1013,
                        "name": "ElementaryTypeName",
                        "src": "2552:7:2"
                      }
                    ],
                    "id": 1014,
                    "name": "VariableDeclaration",
                    "src": "2552:27:2"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "name": "_voter",
                      "scope": 1022,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 1015,
                        "name": "ElementaryTypeName",
                        "src": "2581:7:2"
                      }
                    ],
                    "id": 1016,
                    "name": "VariableDeclaration",
                    "src": "2581:22:2"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "name": "_vote",
                      "scope": 1022,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 1017,
                        "name": "ElementaryTypeName",
                        "src": "2604:4:2"
                      }
                    ],
                    "id": 1018,
                    "name": "VariableDeclaration",
                    "src": "2604:10:2"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "name": "_amount",
                      "scope": 1022,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 1019,
                        "name": "ElementaryTypeName",
                        "src": "2615:4:2"
                      }
                    ],
                    "id": 1020,
                    "name": "VariableDeclaration",
                    "src": "2615:12:2"
                  }
                ],
                "id": 1021,
                "name": "ParameterList",
                "src": "2551:77:2"
              }
            ],
            "id": 1022,
            "name": "EventDefinition",
            "src": "2540:89:2"
          },
          {
            "attributes": {
              "anonymous": false,
              "name": "Redeem"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "name": "_proposalId",
                      "scope": 1030,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 1023,
                        "name": "ElementaryTypeName",
                        "src": "2647:7:2"
                      }
                    ],
                    "id": 1024,
                    "name": "VariableDeclaration",
                    "src": "2647:27:2"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "name": "_beneficiary",
                      "scope": 1030,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 1025,
                        "name": "ElementaryTypeName",
                        "src": "2676:7:2"
                      }
                    ],
                    "id": 1026,
                    "name": "VariableDeclaration",
                    "src": "2676:28:2"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "name": "_amount",
                      "scope": 1030,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 1027,
                        "name": "ElementaryTypeName",
                        "src": "2705:4:2"
                      }
                    ],
                    "id": 1028,
                    "name": "VariableDeclaration",
                    "src": "2705:12:2"
                  }
                ],
                "id": 1029,
                "name": "ParameterList",
                "src": "2646:72:2"
              }
            ],
            "id": 1030,
            "name": "EventDefinition",
            "src": "2634:85:2"
          },
          {
            "attributes": {
              "anonymous": false,
              "name": "RedeemReputation"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "name": "_proposalId",
                      "scope": 1038,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 1031,
                        "name": "ElementaryTypeName",
                        "src": "2747:7:2"
                      }
                    ],
                    "id": 1032,
                    "name": "VariableDeclaration",
                    "src": "2747:27:2"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "name": "_beneficiary",
                      "scope": 1038,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 1033,
                        "name": "ElementaryTypeName",
                        "src": "2776:7:2"
                      }
                    ],
                    "id": 1034,
                    "name": "VariableDeclaration",
                    "src": "2776:28:2"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "name": "_amount",
                      "scope": 1038,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "int256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "int",
                          "type": "int256"
                        },
                        "id": 1035,
                        "name": "ElementaryTypeName",
                        "src": "2805:3:2"
                      }
                    ],
                    "id": 1036,
                    "name": "VariableDeclaration",
                    "src": "2805:11:2"
                  }
                ],
                "id": 1037,
                "name": "ParameterList",
                "src": "2746:71:2"
              }
            ],
            "id": 1038,
            "name": "EventDefinition",
            "src": "2724:94:2"
          },
          {
            "attributes": {
              "constant": false,
              "name": "parameters",
              "scope": 3292,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "mapping(bytes32 => struct GenesisProtocol.Parameters storage ref)",
              "value": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "type": "mapping(bytes32 => struct GenesisProtocol.Parameters storage ref)"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "bytes32",
                      "type": "bytes32"
                    },
                    "id": 1039,
                    "name": "ElementaryTypeName",
                    "src": "2832:7:2"
                  },
                  {
                    "attributes": {
                      "contractScope": null,
                      "name": "Parameters",
                      "referencedDeclaration": 931,
                      "type": "struct GenesisProtocol.Parameters storage pointer"
                    },
                    "id": 1040,
                    "name": "UserDefinedTypeName",
                    "src": "2841:10:2"
                  }
                ],
                "id": 1041,
                "name": "Mapping",
                "src": "2824:28:2"
              }
            ],
            "id": 1042,
            "name": "VariableDeclaration",
            "src": "2824:46:2"
          },
          {
            "attributes": {
              "constant": false,
              "name": "proposals",
              "scope": 3292,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "mapping(bytes32 => struct GenesisProtocol.Proposal storage ref)",
              "value": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "type": "mapping(bytes32 => struct GenesisProtocol.Proposal storage ref)"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "bytes32",
                      "type": "bytes32"
                    },
                    "id": 1043,
                    "name": "ElementaryTypeName",
                    "src": "2924:7:2"
                  },
                  {
                    "attributes": {
                      "contractScope": null,
                      "name": "Proposal",
                      "referencedDeclaration": 986,
                      "type": "struct GenesisProtocol.Proposal storage pointer"
                    },
                    "id": 1044,
                    "name": "UserDefinedTypeName",
                    "src": "2933:8:2"
                  }
                ],
                "id": 1045,
                "name": "Mapping",
                "src": "2916:26:2"
              }
            ],
            "id": 1046,
            "name": "VariableDeclaration",
            "src": "2916:43:2"
          },
          {
            "attributes": {
              "constant": true,
              "name": "MAX_NUM_OF_CHOICES",
              "scope": 3292,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "uint256",
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "name": "uint",
                  "type": "uint256"
                },
                "id": 1047,
                "name": "ElementaryTypeName",
                "src": "3029:4:2"
              },
              {
                "attributes": {
                  "argumentTypes": null,
                  "hexvalue": "3130",
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "subdenomination": null,
                  "token": "number",
                  "type": "int_const 10",
                  "value": "10"
                },
                "id": 1048,
                "name": "Literal",
                "src": "3064:2:2"
              }
            ],
            "id": 1049,
            "name": "VariableDeclaration",
            "src": "3029:37:2"
          },
          {
            "attributes": {
              "constant": false,
              "name": "proposalsCnt",
              "scope": 3292,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "uint256",
              "value": null,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "name": "uint",
                  "type": "uint256"
                },
                "id": 1050,
                "name": "ElementaryTypeName",
                "src": "3072:4:2"
              }
            ],
            "id": 1051,
            "name": "VariableDeclaration",
            "src": "3072:17:2"
          },
          {
            "attributes": {
              "constant": false,
              "name": "orgBoostedProposalsCnt",
              "scope": 3292,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "mapping(address => uint256)",
              "value": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "type": "mapping(address => uint256)"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "address",
                      "type": "address"
                    },
                    "id": 1052,
                    "name": "ElementaryTypeName",
                    "src": "3132:7:2"
                  },
                  {
                    "attributes": {
                      "name": "uint",
                      "type": "uint256"
                    },
                    "id": 1053,
                    "name": "ElementaryTypeName",
                    "src": "3141:4:2"
                  }
                ],
                "id": 1054,
                "name": "Mapping",
                "src": "3124:22:2"
              }
            ],
            "id": 1055,
            "name": "VariableDeclaration",
            "src": "3124:52:2"
          },
          {
            "attributes": {
              "constant": false,
              "name": "stakingToken",
              "scope": 3292,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "contract StandardToken",
              "value": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "StandardToken",
                  "referencedDeclaration": 11999,
                  "type": "contract StandardToken"
                },
                "id": 1056,
                "name": "UserDefinedTypeName",
                "src": "3182:13:2"
              }
            ],
            "id": 1057,
            "name": "VariableDeclaration",
            "src": "3182:33:2"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": true,
              "modifiers": [
                null
              ],
              "name": "GenesisProtocol",
              "payable": false,
              "scope": 3292,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_stakingToken",
                      "scope": 1067,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "contract StandardToken",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "StandardToken",
                          "referencedDeclaration": 11999,
                          "type": "contract StandardToken"
                        },
                        "id": 1058,
                        "name": "UserDefinedTypeName",
                        "src": "3287:13:2"
                      }
                    ],
                    "id": 1059,
                    "name": "VariableDeclaration",
                    "src": "3287:27:2"
                  }
                ],
                "id": 1060,
                "name": "ParameterList",
                "src": "3286:29:2"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 1061,
                "name": "ParameterList",
                "src": "3331:0:2"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "contract StandardToken"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1057,
                              "type": "contract StandardToken",
                              "value": "stakingToken"
                            },
                            "id": 1062,
                            "name": "Identifier",
                            "src": "3341:12:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1059,
                              "type": "contract StandardToken",
                              "value": "_stakingToken"
                            },
                            "id": 1063,
                            "name": "Identifier",
                            "src": "3356:13:2"
                          }
                        ],
                        "id": 1064,
                        "name": "Assignment",
                        "src": "3341:28:2"
                      }
                    ],
                    "id": 1065,
                    "name": "ExpressionStatement",
                    "src": "3341:28:2"
                  }
                ],
                "id": 1066,
                "name": "Block",
                "src": "3331:45:2"
              }
            ],
            "id": 1067,
            "name": "FunctionDefinition",
            "src": "3262:114:2"
          },
          {
            "attributes": {
              "name": "votable",
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_proposalId",
                      "scope": 1079,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 1068,
                        "name": "ElementaryTypeName",
                        "src": "3484:7:2"
                      }
                    ],
                    "id": 1069,
                    "name": "VariableDeclaration",
                    "src": "3484:19:2"
                  }
                ],
                "id": 1070,
                "name": "ParameterList",
                "src": "3483:21:2"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12014,
                              "type": "function (bool) pure",
                              "value": "require"
                            },
                            "id": 1071,
                            "name": "Identifier",
                            "src": "3515:7:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bool",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    2805
                                  ],
                                  "referencedDeclaration": 2805,
                                  "type": "function (bytes32) view returns (bool)",
                                  "value": "isVotable"
                                },
                                "id": 1072,
                                "name": "Identifier",
                                "src": "3523:9:2"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1069,
                                  "type": "bytes32",
                                  "value": "_proposalId"
                                },
                                "id": 1073,
                                "name": "Identifier",
                                "src": "3533:11:2"
                              }
                            ],
                            "id": 1074,
                            "name": "FunctionCall",
                            "src": "3523:22:2"
                          }
                        ],
                        "id": 1075,
                        "name": "FunctionCall",
                        "src": "3515:31:2"
                      }
                    ],
                    "id": 1076,
                    "name": "ExpressionStatement",
                    "src": "3515:31:2"
                  },
                  {
                    "id": 1077,
                    "name": "PlaceholderStatement",
                    "src": "3556:1:2"
                  }
                ],
                "id": 1078,
                "name": "Block",
                "src": "3505:59:2"
              }
            ],
            "id": 1079,
            "name": "ModifierDefinition",
            "src": "3467:97:2"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "setParameters",
              "payable": false,
              "scope": 3292,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_params",
                      "scope": 1166,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256[12] memory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "type": "uint256[12] storage pointer"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint",
                              "type": "uint256"
                            },
                            "id": 1080,
                            "name": "ElementaryTypeName",
                            "src": "4519:4:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "3132",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 12",
                              "value": "12"
                            },
                            "id": 1081,
                            "name": "Literal",
                            "src": "4524:2:2"
                          }
                        ],
                        "id": 1082,
                        "name": "ArrayTypeName",
                        "src": "4519:8:2"
                      }
                    ],
                    "id": 1083,
                    "name": "VariableDeclaration",
                    "src": "4519:16:2"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_governanceFormulasInterface",
                      "scope": 1166,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "contract GenesisProtocolFormulasInterface",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "GenesisProtocolFormulasInterface",
                          "referencedDeclaration": 3341,
                          "type": "contract GenesisProtocolFormulasInterface"
                        },
                        "id": 1084,
                        "name": "UserDefinedTypeName",
                        "src": "4591:32:2"
                      }
                    ],
                    "id": 1085,
                    "name": "VariableDeclaration",
                    "src": "4591:61:2"
                  }
                ],
                "id": 1086,
                "name": "ParameterList",
                "src": "4508:154:2"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 1166,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 1087,
                        "name": "ElementaryTypeName",
                        "src": "4686:7:2"
                      }
                    ],
                    "id": 1088,
                    "name": "VariableDeclaration",
                    "src": "4686:7:2"
                  }
                ],
                "id": 1089,
                "name": "ParameterList",
                "src": "4685:9:2"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12014,
                              "type": "function (bool) pure",
                              "value": "require"
                            },
                            "id": 1090,
                            "name": "Identifier",
                            "src": "4709:7:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "&&",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "<=",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1083,
                                          "type": "uint256[12] memory",
                                          "value": "_params"
                                        },
                                        "id": 1091,
                                        "name": "Identifier",
                                        "src": "4717:7:2"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "30",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 0",
                                          "value": "0"
                                        },
                                        "id": 1092,
                                        "name": "Literal",
                                        "src": "4725:1:2"
                                      }
                                    ],
                                    "id": 1093,
                                    "name": "IndexAccess",
                                    "src": "4717:10:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "313030",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 100",
                                      "value": "100"
                                    },
                                    "id": 1094,
                                    "name": "Literal",
                                    "src": "4731:3:2"
                                  }
                                ],
                                "id": 1095,
                                "name": "BinaryOperation",
                                "src": "4717:17:2"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": ">",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1083,
                                          "type": "uint256[12] memory",
                                          "value": "_params"
                                        },
                                        "id": 1096,
                                        "name": "Identifier",
                                        "src": "4738:7:2"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "30",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 0",
                                          "value": "0"
                                        },
                                        "id": 1097,
                                        "name": "Literal",
                                        "src": "4746:1:2"
                                      }
                                    ],
                                    "id": 1098,
                                    "name": "IndexAccess",
                                    "src": "4738:10:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "30",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 0",
                                      "value": "0"
                                    },
                                    "id": 1099,
                                    "name": "Literal",
                                    "src": "4751:1:2"
                                  }
                                ],
                                "id": 1100,
                                "name": "BinaryOperation",
                                "src": "4738:14:2"
                              }
                            ],
                            "id": 1101,
                            "name": "BinaryOperation",
                            "src": "4717:35:2"
                          }
                        ],
                        "id": 1102,
                        "name": "FunctionCall",
                        "src": "4709:44:2"
                      }
                    ],
                    "id": 1103,
                    "name": "ExpressionStatement",
                    "src": "4709:44:2"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12014,
                              "type": "function (bool) pure",
                              "value": "require"
                            },
                            "id": 1104,
                            "name": "Identifier",
                            "src": "4763:7:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": ">",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1083,
                                      "type": "uint256[12] memory",
                                      "value": "_params"
                                    },
                                    "id": 1105,
                                    "name": "Identifier",
                                    "src": "4771:7:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "38",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 8",
                                      "value": "8"
                                    },
                                    "id": 1106,
                                    "name": "Literal",
                                    "src": "4779:1:2"
                                  }
                                ],
                                "id": 1107,
                                "name": "IndexAccess",
                                "src": "4771:10:2"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 1108,
                                "name": "Literal",
                                "src": "4784:1:2"
                              }
                            ],
                            "id": 1109,
                            "name": "BinaryOperation",
                            "src": "4771:14:2"
                          }
                        ],
                        "id": 1110,
                        "name": "FunctionCall",
                        "src": "4763:23:2"
                      }
                    ],
                    "id": 1111,
                    "name": "ExpressionStatement",
                    "src": "4763:23:2"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        1113
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "hashedParameters",
                          "scope": 1166,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "bytes32",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "bytes32",
                              "type": "bytes32"
                            },
                            "id": 1112,
                            "name": "ElementaryTypeName",
                            "src": "4840:7:2"
                          }
                        ],
                        "id": 1113,
                        "name": "VariableDeclaration",
                        "src": "4840:24:2"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bytes32",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_array$_t_uint256_$12_memory_ptr",
                                  "typeString": "uint256[12] memory"
                                },
                                {
                                  "typeIdentifier": "t_contract$_GenesisProtocolFormulasInterface_$3341",
                                  "typeString": "contract GenesisProtocolFormulasInterface"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1218,
                              "type": "function (uint256[12] memory,contract GenesisProtocolFormulasInterface) pure returns (bytes32)",
                              "value": "getParametersHash"
                            },
                            "id": 1114,
                            "name": "Identifier",
                            "src": "4867:17:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1083,
                              "type": "uint256[12] memory",
                              "value": "_params"
                            },
                            "id": 1115,
                            "name": "Identifier",
                            "src": "4898:7:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1085,
                              "type": "contract GenesisProtocolFormulasInterface",
                              "value": "_governanceFormulasInterface"
                            },
                            "id": 1116,
                            "name": "Identifier",
                            "src": "4919:28:2"
                          }
                        ],
                        "id": 1117,
                        "name": "FunctionCall",
                        "src": "4867:94:2"
                      }
                    ],
                    "id": 1118,
                    "name": "VariableDeclarationStatement",
                    "src": "4840:121:2"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "struct GenesisProtocol.Parameters storage ref"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "type": "struct GenesisProtocol.Parameters storage ref"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1042,
                                  "type": "mapping(bytes32 => struct GenesisProtocol.Parameters storage ref)",
                                  "value": "parameters"
                                },
                                "id": 1119,
                                "name": "Identifier",
                                "src": "4971:10:2"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1113,
                                  "type": "bytes32",
                                  "value": "hashedParameters"
                                },
                                "id": 1120,
                                "name": "Identifier",
                                "src": "4982:16:2"
                              }
                            ],
                            "id": 1121,
                            "name": "IndexAccess",
                            "src": "4971:28:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": true,
                              "lValueRequested": false,
                              "names": [
                                "preBoostedVoteRequiredPercentage",
                                "preBoostedVotePeriodLimit",
                                "boostedVotePeriodLimit",
                                "thresholdConstA",
                                "thresholdConstB",
                                "minimumStakingFee",
                                "quietEndingPeriod",
                                "proposingRepRewardConstA",
                                "proposingRepRewardConstB",
                                "stakerFeeRatioForVoters",
                                "votersReputationLossRatio",
                                "votersGainRepRatioFromLostRep",
                                "governanceFormulasInterface"
                              ],
                              "type": "struct GenesisProtocol.Parameters memory",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 931,
                                  "type": "type(struct GenesisProtocol.Parameters storage pointer)",
                                  "value": "Parameters"
                                },
                                "id": 1122,
                                "name": "Identifier",
                                "src": "5002:10:2"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1083,
                                      "type": "uint256[12] memory",
                                      "value": "_params"
                                    },
                                    "id": 1123,
                                    "name": "Identifier",
                                    "src": "5061:7:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "30",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 0",
                                      "value": "0"
                                    },
                                    "id": 1124,
                                    "name": "Literal",
                                    "src": "5069:1:2"
                                  }
                                ],
                                "id": 1125,
                                "name": "IndexAccess",
                                "src": "5061:10:2"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1083,
                                      "type": "uint256[12] memory",
                                      "value": "_params"
                                    },
                                    "id": 1126,
                                    "name": "Identifier",
                                    "src": "5112:7:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "31",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 1",
                                      "value": "1"
                                    },
                                    "id": 1127,
                                    "name": "Literal",
                                    "src": "5120:1:2"
                                  }
                                ],
                                "id": 1128,
                                "name": "IndexAccess",
                                "src": "5112:10:2"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1083,
                                      "type": "uint256[12] memory",
                                      "value": "_params"
                                    },
                                    "id": 1129,
                                    "name": "Identifier",
                                    "src": "5160:7:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "32",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 2",
                                      "value": "2"
                                    },
                                    "id": 1130,
                                    "name": "Literal",
                                    "src": "5168:1:2"
                                  }
                                ],
                                "id": 1131,
                                "name": "IndexAccess",
                                "src": "5160:10:2"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1083,
                                      "type": "uint256[12] memory",
                                      "value": "_params"
                                    },
                                    "id": 1132,
                                    "name": "Identifier",
                                    "src": "5200:7:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "33",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 3",
                                      "value": "3"
                                    },
                                    "id": 1133,
                                    "name": "Literal",
                                    "src": "5208:1:2"
                                  }
                                ],
                                "id": 1134,
                                "name": "IndexAccess",
                                "src": "5200:10:2"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1083,
                                      "type": "uint256[12] memory",
                                      "value": "_params"
                                    },
                                    "id": 1135,
                                    "name": "Identifier",
                                    "src": "5240:7:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "34",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 4",
                                      "value": "4"
                                    },
                                    "id": 1136,
                                    "name": "Literal",
                                    "src": "5248:1:2"
                                  }
                                ],
                                "id": 1137,
                                "name": "IndexAccess",
                                "src": "5240:10:2"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1083,
                                      "type": "uint256[12] memory",
                                      "value": "_params"
                                    },
                                    "id": 1138,
                                    "name": "Identifier",
                                    "src": "5283:7:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "35",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 5",
                                      "value": "5"
                                    },
                                    "id": 1139,
                                    "name": "Literal",
                                    "src": "5291:1:2"
                                  }
                                ],
                                "id": 1140,
                                "name": "IndexAccess",
                                "src": "5283:10:2"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1083,
                                      "type": "uint256[12] memory",
                                      "value": "_params"
                                    },
                                    "id": 1141,
                                    "name": "Identifier",
                                    "src": "5326:7:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "36",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 6",
                                      "value": "6"
                                    },
                                    "id": 1142,
                                    "name": "Literal",
                                    "src": "5334:1:2"
                                  }
                                ],
                                "id": 1143,
                                "name": "IndexAccess",
                                "src": "5326:10:2"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1083,
                                      "type": "uint256[12] memory",
                                      "value": "_params"
                                    },
                                    "id": 1144,
                                    "name": "Identifier",
                                    "src": "5376:7:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "37",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 7",
                                      "value": "7"
                                    },
                                    "id": 1145,
                                    "name": "Literal",
                                    "src": "5384:1:2"
                                  }
                                ],
                                "id": 1146,
                                "name": "IndexAccess",
                                "src": "5376:10:2"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1083,
                                      "type": "uint256[12] memory",
                                      "value": "_params"
                                    },
                                    "id": 1147,
                                    "name": "Identifier",
                                    "src": "5425:7:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "38",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 8",
                                      "value": "8"
                                    },
                                    "id": 1148,
                                    "name": "Literal",
                                    "src": "5433:1:2"
                                  }
                                ],
                                "id": 1149,
                                "name": "IndexAccess",
                                "src": "5425:10:2"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1083,
                                      "type": "uint256[12] memory",
                                      "value": "_params"
                                    },
                                    "id": 1150,
                                    "name": "Identifier",
                                    "src": "5473:7:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "39",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 9",
                                      "value": "9"
                                    },
                                    "id": 1151,
                                    "name": "Literal",
                                    "src": "5481:1:2"
                                  }
                                ],
                                "id": 1152,
                                "name": "IndexAccess",
                                "src": "5473:10:2"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1083,
                                      "type": "uint256[12] memory",
                                      "value": "_params"
                                    },
                                    "id": 1153,
                                    "name": "Identifier",
                                    "src": "5523:7:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "3130",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 10",
                                      "value": "10"
                                    },
                                    "id": 1154,
                                    "name": "Literal",
                                    "src": "5531:2:2"
                                  }
                                ],
                                "id": 1155,
                                "name": "IndexAccess",
                                "src": "5523:11:2"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1083,
                                      "type": "uint256[12] memory",
                                      "value": "_params"
                                    },
                                    "id": 1156,
                                    "name": "Identifier",
                                    "src": "5578:7:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "3131",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 11",
                                      "value": "11"
                                    },
                                    "id": 1157,
                                    "name": "Literal",
                                    "src": "5586:2:2"
                                  }
                                ],
                                "id": 1158,
                                "name": "IndexAccess",
                                "src": "5578:11:2"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1085,
                                  "type": "contract GenesisProtocolFormulasInterface",
                                  "value": "_governanceFormulasInterface"
                                },
                                "id": 1159,
                                "name": "Identifier",
                                "src": "5631:28:2"
                              }
                            ],
                            "id": 1160,
                            "name": "FunctionCall",
                            "src": "5002:669:2"
                          }
                        ],
                        "id": 1161,
                        "name": "Assignment",
                        "src": "4971:700:2"
                      }
                    ],
                    "id": 1162,
                    "name": "ExpressionStatement",
                    "src": "4971:700:2"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 1089
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 1113,
                          "type": "bytes32",
                          "value": "hashedParameters"
                        },
                        "id": 1163,
                        "name": "Identifier",
                        "src": "5688:16:2"
                      }
                    ],
                    "id": 1164,
                    "name": "Return",
                    "src": "5681:23:2"
                  }
                ],
                "id": 1165,
                "name": "Block",
                "src": "4699:1012:2"
              }
            ],
            "id": 1166,
            "name": "FunctionDefinition",
            "src": "4486:1225:2"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "getParametersHash",
              "payable": false,
              "scope": 3292,
              "stateMutability": "pure",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_params",
                      "scope": 1218,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256[12] memory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "type": "uint256[12] storage pointer"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint",
                              "type": "uint256"
                            },
                            "id": 1167,
                            "name": "ElementaryTypeName",
                            "src": "5829:4:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "3132",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 12",
                              "value": "12"
                            },
                            "id": 1168,
                            "name": "Literal",
                            "src": "5834:2:2"
                          }
                        ],
                        "id": 1169,
                        "name": "ArrayTypeName",
                        "src": "5829:8:2"
                      }
                    ],
                    "id": 1170,
                    "name": "VariableDeclaration",
                    "src": "5829:16:2"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_governanceFormulasInterface",
                      "scope": 1218,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "contract GenesisProtocolFormulasInterface",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "GenesisProtocolFormulasInterface",
                          "referencedDeclaration": 3341,
                          "type": "contract GenesisProtocolFormulasInterface"
                        },
                        "id": 1171,
                        "name": "UserDefinedTypeName",
                        "src": "5901:32:2"
                      }
                    ],
                    "id": 1172,
                    "name": "VariableDeclaration",
                    "src": "5901:61:2"
                  }
                ],
                "id": 1173,
                "name": "ParameterList",
                "src": "5819:144:2"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 1218,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 1174,
                        "name": "ElementaryTypeName",
                        "src": "6008:7:2"
                      }
                    ],
                    "id": 1175,
                    "name": "VariableDeclaration",
                    "src": "6008:7:2"
                  }
                ],
                "id": 1176,
                "name": "ParameterList",
                "src": "6007:9:2"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 1176
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bytes32",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_contract$_GenesisProtocolFormulasInterface_$3341",
                                  "typeString": "contract GenesisProtocolFormulasInterface"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12005,
                              "type": "function () pure returns (bytes32)",
                              "value": "keccak256"
                            },
                            "id": 1177,
                            "name": "Identifier",
                            "src": "6042:9:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1170,
                                  "type": "uint256[12] memory",
                                  "value": "_params"
                                },
                                "id": 1178,
                                "name": "Identifier",
                                "src": "6065:7:2"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 1179,
                                "name": "Literal",
                                "src": "6073:1:2"
                              }
                            ],
                            "id": 1180,
                            "name": "IndexAccess",
                            "src": "6065:10:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1170,
                                  "type": "uint256[12] memory",
                                  "value": "_params"
                                },
                                "id": 1181,
                                "name": "Identifier",
                                "src": "6089:7:2"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "31",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 1",
                                  "value": "1"
                                },
                                "id": 1182,
                                "name": "Literal",
                                "src": "6097:1:2"
                              }
                            ],
                            "id": 1183,
                            "name": "IndexAccess",
                            "src": "6089:10:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1170,
                                  "type": "uint256[12] memory",
                                  "value": "_params"
                                },
                                "id": 1184,
                                "name": "Identifier",
                                "src": "6113:7:2"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "32",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 2",
                                  "value": "2"
                                },
                                "id": 1185,
                                "name": "Literal",
                                "src": "6121:1:2"
                              }
                            ],
                            "id": 1186,
                            "name": "IndexAccess",
                            "src": "6113:10:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1170,
                                  "type": "uint256[12] memory",
                                  "value": "_params"
                                },
                                "id": 1187,
                                "name": "Identifier",
                                "src": "6137:7:2"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "33",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 3",
                                  "value": "3"
                                },
                                "id": 1188,
                                "name": "Literal",
                                "src": "6145:1:2"
                              }
                            ],
                            "id": 1189,
                            "name": "IndexAccess",
                            "src": "6137:10:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1170,
                                  "type": "uint256[12] memory",
                                  "value": "_params"
                                },
                                "id": 1190,
                                "name": "Identifier",
                                "src": "6161:7:2"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "34",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 4",
                                  "value": "4"
                                },
                                "id": 1191,
                                "name": "Literal",
                                "src": "6169:1:2"
                              }
                            ],
                            "id": 1192,
                            "name": "IndexAccess",
                            "src": "6161:10:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1170,
                                  "type": "uint256[12] memory",
                                  "value": "_params"
                                },
                                "id": 1193,
                                "name": "Identifier",
                                "src": "6185:7:2"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "35",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 5",
                                  "value": "5"
                                },
                                "id": 1194,
                                "name": "Literal",
                                "src": "6193:1:2"
                              }
                            ],
                            "id": 1195,
                            "name": "IndexAccess",
                            "src": "6185:10:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1170,
                                  "type": "uint256[12] memory",
                                  "value": "_params"
                                },
                                "id": 1196,
                                "name": "Identifier",
                                "src": "6209:7:2"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "36",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 6",
                                  "value": "6"
                                },
                                "id": 1197,
                                "name": "Literal",
                                "src": "6217:1:2"
                              }
                            ],
                            "id": 1198,
                            "name": "IndexAccess",
                            "src": "6209:10:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1170,
                                  "type": "uint256[12] memory",
                                  "value": "_params"
                                },
                                "id": 1199,
                                "name": "Identifier",
                                "src": "6233:7:2"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "37",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 7",
                                  "value": "7"
                                },
                                "id": 1200,
                                "name": "Literal",
                                "src": "6241:1:2"
                              }
                            ],
                            "id": 1201,
                            "name": "IndexAccess",
                            "src": "6233:10:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1170,
                                  "type": "uint256[12] memory",
                                  "value": "_params"
                                },
                                "id": 1202,
                                "name": "Identifier",
                                "src": "6257:7:2"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "38",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 8",
                                  "value": "8"
                                },
                                "id": 1203,
                                "name": "Literal",
                                "src": "6265:1:2"
                              }
                            ],
                            "id": 1204,
                            "name": "IndexAccess",
                            "src": "6257:10:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1170,
                                  "type": "uint256[12] memory",
                                  "value": "_params"
                                },
                                "id": 1205,
                                "name": "Identifier",
                                "src": "6281:7:2"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "39",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 9",
                                  "value": "9"
                                },
                                "id": 1206,
                                "name": "Literal",
                                "src": "6289:1:2"
                              }
                            ],
                            "id": 1207,
                            "name": "IndexAccess",
                            "src": "6281:10:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1170,
                                  "type": "uint256[12] memory",
                                  "value": "_params"
                                },
                                "id": 1208,
                                "name": "Identifier",
                                "src": "6305:7:2"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "3130",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 10",
                                  "value": "10"
                                },
                                "id": 1209,
                                "name": "Literal",
                                "src": "6313:2:2"
                              }
                            ],
                            "id": 1210,
                            "name": "IndexAccess",
                            "src": "6305:11:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1170,
                                  "type": "uint256[12] memory",
                                  "value": "_params"
                                },
                                "id": 1211,
                                "name": "Identifier",
                                "src": "6330:7:2"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "3131",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 11",
                                  "value": "11"
                                },
                                "id": 1212,
                                "name": "Literal",
                                "src": "6338:2:2"
                              }
                            ],
                            "id": 1213,
                            "name": "IndexAccess",
                            "src": "6330:11:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1172,
                              "type": "contract GenesisProtocolFormulasInterface",
                              "value": "_governanceFormulasInterface"
                            },
                            "id": 1214,
                            "name": "Identifier",
                            "src": "6355:28:2"
                          }
                        ],
                        "id": 1215,
                        "name": "FunctionCall",
                        "src": "6042:342:2"
                      }
                    ],
                    "id": 1216,
                    "name": "Return",
                    "src": "6035:349:2"
                  }
                ],
                "id": 1217,
                "name": "Block",
                "src": "6025:366:2"
              }
            ],
            "id": 1218,
            "name": "FunctionDefinition",
            "src": "5793:598:2"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "propose",
              "payable": false,
              "scope": 3292,
              "stateMutability": "nonpayable",
              "superFunction": 3371,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_numOfChoices",
                      "scope": 1338,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 1219,
                        "name": "ElementaryTypeName",
                        "src": "6950:4:2"
                      }
                    ],
                    "id": 1220,
                    "name": "VariableDeclaration",
                    "src": "6950:18:2"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_paramsHash",
                      "scope": 1338,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 1221,
                        "name": "ElementaryTypeName",
                        "src": "6970:7:2"
                      }
                    ],
                    "id": 1222,
                    "name": "VariableDeclaration",
                    "src": "6970:19:2"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_avatar",
                      "scope": 1338,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 1223,
                        "name": "ElementaryTypeName",
                        "src": "6991:7:2"
                      }
                    ],
                    "id": 1224,
                    "name": "VariableDeclaration",
                    "src": "6991:15:2"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_executable",
                      "scope": 1338,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "contract ExecutableInterface",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "ExecutableInterface",
                          "referencedDeclaration": 8021,
                          "type": "contract ExecutableInterface"
                        },
                        "id": 1225,
                        "name": "UserDefinedTypeName",
                        "src": "7008:19:2"
                      }
                    ],
                    "id": 1226,
                    "name": "VariableDeclaration",
                    "src": "7008:31:2"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_proposer",
                      "scope": 1338,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 1227,
                        "name": "ElementaryTypeName",
                        "src": "7040:7:2"
                      }
                    ],
                    "id": 1228,
                    "name": "VariableDeclaration",
                    "src": "7040:17:2"
                  }
                ],
                "id": 1229,
                "name": "ParameterList",
                "src": "6949:109:2"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 1338,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 1230,
                        "name": "ElementaryTypeName",
                        "src": "7074:7:2"
                      }
                    ],
                    "id": 1231,
                    "name": "VariableDeclaration",
                    "src": "7074:7:2"
                  }
                ],
                "id": 1232,
                "name": "ParameterList",
                "src": "7073:9:2"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12014,
                              "type": "function (bool) pure",
                              "value": "require"
                            },
                            "id": 1233,
                            "name": "Identifier",
                            "src": "7148:7:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "&&",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": ">",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1220,
                                      "type": "uint256",
                                      "value": "_numOfChoices"
                                    },
                                    "id": 1234,
                                    "name": "Identifier",
                                    "src": "7156:13:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "30",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 0",
                                      "value": "0"
                                    },
                                    "id": 1235,
                                    "name": "Literal",
                                    "src": "7172:1:2"
                                  }
                                ],
                                "id": 1236,
                                "name": "BinaryOperation",
                                "src": "7156:17:2"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "<=",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1220,
                                      "type": "uint256",
                                      "value": "_numOfChoices"
                                    },
                                    "id": 1237,
                                    "name": "Identifier",
                                    "src": "7177:13:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1049,
                                      "type": "uint256",
                                      "value": "MAX_NUM_OF_CHOICES"
                                    },
                                    "id": 1238,
                                    "name": "Identifier",
                                    "src": "7194:18:2"
                                  }
                                ],
                                "id": 1239,
                                "name": "BinaryOperation",
                                "src": "7177:35:2"
                              }
                            ],
                            "id": 1240,
                            "name": "BinaryOperation",
                            "src": "7156:56:2"
                          }
                        ],
                        "id": 1241,
                        "name": "FunctionCall",
                        "src": "7148:65:2"
                      }
                    ],
                    "id": 1242,
                    "name": "ExpressionStatement",
                    "src": "7148:65:2"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12014,
                              "type": "function (bool) pure",
                              "value": "require"
                            },
                            "id": 1243,
                            "name": "Identifier",
                            "src": "7223:7:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "!=",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "contract ExecutableInterface",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_ExecutableInterface_$8021",
                                          "typeString": "contract ExecutableInterface"
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 8021,
                                      "type": "type(contract ExecutableInterface)",
                                      "value": "ExecutableInterface"
                                    },
                                    "id": 1244,
                                    "name": "Identifier",
                                    "src": "7231:19:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1226,
                                      "type": "contract ExecutableInterface",
                                      "value": "_executable"
                                    },
                                    "id": 1245,
                                    "name": "Identifier",
                                    "src": "7251:11:2"
                                  }
                                ],
                                "id": 1246,
                                "name": "FunctionCall",
                                "src": "7231:32:2"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "address",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "type": "type(address)",
                                      "value": "address"
                                    },
                                    "id": 1247,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "7267:7:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "30",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 0",
                                      "value": "0"
                                    },
                                    "id": 1248,
                                    "name": "Literal",
                                    "src": "7275:1:2"
                                  }
                                ],
                                "id": 1249,
                                "name": "FunctionCall",
                                "src": "7267:10:2"
                              }
                            ],
                            "id": 1250,
                            "name": "BinaryOperation",
                            "src": "7231:46:2"
                          }
                        ],
                        "id": 1251,
                        "name": "FunctionCall",
                        "src": "7223:55:2"
                      }
                    ],
                    "id": 1252,
                    "name": "ExpressionStatement",
                    "src": "7223:55:2"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12014,
                              "type": "function (bool) pure",
                              "value": "require"
                            },
                            "id": 1253,
                            "name": "Identifier",
                            "src": "7288:7:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": ">",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "preBoostedVoteRequiredPercentage",
                                  "referencedDeclaration": 906,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "type": "struct GenesisProtocol.Parameters storage ref"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1042,
                                          "type": "mapping(bytes32 => struct GenesisProtocol.Parameters storage ref)",
                                          "value": "parameters"
                                        },
                                        "id": 1254,
                                        "name": "Identifier",
                                        "src": "7296:10:2"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1222,
                                          "type": "bytes32",
                                          "value": "_paramsHash"
                                        },
                                        "id": 1255,
                                        "name": "Identifier",
                                        "src": "7307:11:2"
                                      }
                                    ],
                                    "id": 1256,
                                    "name": "IndexAccess",
                                    "src": "7296:23:2"
                                  }
                                ],
                                "id": 1257,
                                "name": "MemberAccess",
                                "src": "7296:56:2"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 1258,
                                "name": "Literal",
                                "src": "7355:1:2"
                              }
                            ],
                            "id": 1259,
                            "name": "BinaryOperation",
                            "src": "7296:60:2"
                          }
                        ],
                        "id": 1260,
                        "name": "FunctionCall",
                        "src": "7288:69:2"
                      }
                    ],
                    "id": 1261,
                    "name": "ExpressionStatement",
                    "src": "7288:69:2"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        1263
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "proposalId",
                          "scope": 1338,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "bytes32",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "bytes32",
                              "type": "bytes32"
                            },
                            "id": 1262,
                            "name": "ElementaryTypeName",
                            "src": "7402:7:2"
                          }
                        ],
                        "id": 1263,
                        "name": "VariableDeclaration",
                        "src": "7402:18:2"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bytes32",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_GenesisProtocol_$3292",
                                  "typeString": "contract GenesisProtocol"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12005,
                              "type": "function () pure returns (bytes32)",
                              "value": "keccak256"
                            },
                            "id": 1264,
                            "name": "Identifier",
                            "src": "7423:9:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12068,
                              "type": "contract GenesisProtocol",
                              "value": "this"
                            },
                            "id": 1265,
                            "name": "Identifier",
                            "src": "7433:4:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1051,
                              "type": "uint256",
                              "value": "proposalsCnt"
                            },
                            "id": 1266,
                            "name": "Identifier",
                            "src": "7439:12:2"
                          }
                        ],
                        "id": 1267,
                        "name": "FunctionCall",
                        "src": "7423:29:2"
                      }
                    ],
                    "id": 1268,
                    "name": "VariableDeclarationStatement",
                    "src": "7402:50:2"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "++",
                          "prefix": false,
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1051,
                              "type": "uint256",
                              "value": "proposalsCnt"
                            },
                            "id": 1269,
                            "name": "Identifier",
                            "src": "7462:12:2"
                          }
                        ],
                        "id": 1270,
                        "name": "UnaryOperation",
                        "src": "7462:14:2"
                      }
                    ],
                    "id": 1271,
                    "name": "ExpressionStatement",
                    "src": "7462:14:2"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        null
                      ],
                      "initialValue": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "proposal",
                          "scope": 1338,
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "type": "struct GenesisProtocol.Proposal memory",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "Proposal",
                              "referencedDeclaration": 986,
                              "type": "struct GenesisProtocol.Proposal storage pointer"
                            },
                            "id": 1272,
                            "name": "UserDefinedTypeName",
                            "src": "7514:8:2"
                          }
                        ],
                        "id": 1273,
                        "name": "VariableDeclaration",
                        "src": "7514:24:2"
                      }
                    ],
                    "id": 1274,
                    "name": "VariableDeclarationStatement",
                    "src": "7514:24:2"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "numOfChoices",
                              "referencedDeclaration": 947,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1273,
                                  "type": "struct GenesisProtocol.Proposal memory",
                                  "value": "proposal"
                                },
                                "id": 1275,
                                "name": "Identifier",
                                "src": "7548:8:2"
                              }
                            ],
                            "id": 1277,
                            "name": "MemberAccess",
                            "src": "7548:21:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1220,
                              "type": "uint256",
                              "value": "_numOfChoices"
                            },
                            "id": 1278,
                            "name": "Identifier",
                            "src": "7572:13:2"
                          }
                        ],
                        "id": 1279,
                        "name": "Assignment",
                        "src": "7548:37:2"
                      }
                    ],
                    "id": 1280,
                    "name": "ExpressionStatement",
                    "src": "7548:37:2"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "address"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "avatar",
                              "referencedDeclaration": 945,
                              "type": "address"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1273,
                                  "type": "struct GenesisProtocol.Proposal memory",
                                  "value": "proposal"
                                },
                                "id": 1281,
                                "name": "Identifier",
                                "src": "7595:8:2"
                              }
                            ],
                            "id": 1283,
                            "name": "MemberAccess",
                            "src": "7595:15:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1224,
                              "type": "address",
                              "value": "_avatar"
                            },
                            "id": 1284,
                            "name": "Identifier",
                            "src": "7613:7:2"
                          }
                        ],
                        "id": 1285,
                        "name": "Assignment",
                        "src": "7595:25:2"
                      }
                    ],
                    "id": 1286,
                    "name": "ExpressionStatement",
                    "src": "7595:25:2"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "contract ExecutableInterface"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "executable",
                              "referencedDeclaration": 949,
                              "type": "contract ExecutableInterface"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1273,
                                  "type": "struct GenesisProtocol.Proposal memory",
                                  "value": "proposal"
                                },
                                "id": 1287,
                                "name": "Identifier",
                                "src": "7630:8:2"
                              }
                            ],
                            "id": 1289,
                            "name": "MemberAccess",
                            "src": "7630:19:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1226,
                              "type": "contract ExecutableInterface",
                              "value": "_executable"
                            },
                            "id": 1290,
                            "name": "Identifier",
                            "src": "7652:11:2"
                          }
                        ],
                        "id": 1291,
                        "name": "Assignment",
                        "src": "7630:33:2"
                      }
                    ],
                    "id": 1292,
                    "name": "ExpressionStatement",
                    "src": "7630:33:2"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "enum GenesisProtocol.ProposalState"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "state",
                              "referencedDeclaration": 963,
                              "type": "enum GenesisProtocol.ProposalState"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1273,
                                  "type": "struct GenesisProtocol.Proposal memory",
                                  "value": "proposal"
                                },
                                "id": 1293,
                                "name": "Identifier",
                                "src": "7673:8:2"
                              }
                            ],
                            "id": 1295,
                            "name": "MemberAccess",
                            "src": "7673:14:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "member_name": "PreBoosted",
                              "referencedDeclaration": null,
                              "type": "enum GenesisProtocol.ProposalState"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 904,
                                  "type": "type(enum GenesisProtocol.ProposalState)",
                                  "value": "ProposalState"
                                },
                                "id": 1296,
                                "name": "Identifier",
                                "src": "7690:13:2"
                              }
                            ],
                            "id": 1297,
                            "name": "MemberAccess",
                            "src": "7690:24:2"
                          }
                        ],
                        "id": 1298,
                        "name": "Assignment",
                        "src": "7673:41:2"
                      }
                    ],
                    "id": 1299,
                    "name": "ExpressionStatement",
                    "src": "7673:41:2"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "submittedTime",
                              "referencedDeclaration": 959,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1273,
                                  "type": "struct GenesisProtocol.Proposal memory",
                                  "value": "proposal"
                                },
                                "id": 1300,
                                "name": "Identifier",
                                "src": "7786:8:2"
                              }
                            ],
                            "id": 1302,
                            "name": "MemberAccess",
                            "src": "7786:22:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12013,
                              "type": "uint256",
                              "value": "now"
                            },
                            "id": 1303,
                            "name": "Identifier",
                            "src": "7811:3:2"
                          }
                        ],
                        "id": 1304,
                        "name": "Assignment",
                        "src": "7786:28:2"
                      }
                    ],
                    "id": 1305,
                    "name": "ExpressionStatement",
                    "src": "7786:28:2"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "boostedVotePeriodLimit",
                              "referencedDeclaration": 969,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1273,
                                  "type": "struct GenesisProtocol.Proposal memory",
                                  "value": "proposal"
                                },
                                "id": 1306,
                                "name": "Identifier",
                                "src": "7824:8:2"
                              }
                            ],
                            "id": 1308,
                            "name": "MemberAccess",
                            "src": "7824:31:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "boostedVotePeriodLimit",
                              "referencedDeclaration": 910,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "struct GenesisProtocol.Parameters storage ref"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1042,
                                      "type": "mapping(bytes32 => struct GenesisProtocol.Parameters storage ref)",
                                      "value": "parameters"
                                    },
                                    "id": 1309,
                                    "name": "Identifier",
                                    "src": "7858:10:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1222,
                                      "type": "bytes32",
                                      "value": "_paramsHash"
                                    },
                                    "id": 1310,
                                    "name": "Identifier",
                                    "src": "7869:11:2"
                                  }
                                ],
                                "id": 1311,
                                "name": "IndexAccess",
                                "src": "7858:23:2"
                              }
                            ],
                            "id": 1312,
                            "name": "MemberAccess",
                            "src": "7858:46:2"
                          }
                        ],
                        "id": 1313,
                        "name": "Assignment",
                        "src": "7824:80:2"
                      }
                    ],
                    "id": 1314,
                    "name": "ExpressionStatement",
                    "src": "7824:80:2"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "address"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "proposer",
                              "referencedDeclaration": 967,
                              "type": "address"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1273,
                                  "type": "struct GenesisProtocol.Proposal memory",
                                  "value": "proposal"
                                },
                                "id": 1315,
                                "name": "Identifier",
                                "src": "7914:8:2"
                              }
                            ],
                            "id": 1317,
                            "name": "MemberAccess",
                            "src": "7914:17:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1228,
                              "type": "address",
                              "value": "_proposer"
                            },
                            "id": 1318,
                            "name": "Identifier",
                            "src": "7934:9:2"
                          }
                        ],
                        "id": 1319,
                        "name": "Assignment",
                        "src": "7914:29:2"
                      }
                    ],
                    "id": 1320,
                    "name": "ExpressionStatement",
                    "src": "7914:29:2"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "struct GenesisProtocol.Proposal storage ref"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "type": "struct GenesisProtocol.Proposal storage ref"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1046,
                                  "type": "mapping(bytes32 => struct GenesisProtocol.Proposal storage ref)",
                                  "value": "proposals"
                                },
                                "id": 1321,
                                "name": "Identifier",
                                "src": "7953:9:2"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1263,
                                  "type": "bytes32",
                                  "value": "proposalId"
                                },
                                "id": 1322,
                                "name": "Identifier",
                                "src": "7963:10:2"
                              }
                            ],
                            "id": 1323,
                            "name": "IndexAccess",
                            "src": "7953:21:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1273,
                              "type": "struct GenesisProtocol.Proposal memory",
                              "value": "proposal"
                            },
                            "id": 1324,
                            "name": "Identifier",
                            "src": "7977:8:2"
                          }
                        ],
                        "id": 1325,
                        "name": "Assignment",
                        "src": "7953:32:2"
                      }
                    ],
                    "id": 1326,
                    "name": "ExpressionStatement",
                    "src": "7953:32:2"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "overloadedDeclarations": [
                                996,
                                9552
                              ],
                              "referencedDeclaration": 996,
                              "type": "function (bytes32,uint256,address,bytes32)",
                              "value": "NewProposal"
                            },
                            "id": 1327,
                            "name": "Identifier",
                            "src": "7995:11:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1263,
                              "type": "bytes32",
                              "value": "proposalId"
                            },
                            "id": 1328,
                            "name": "Identifier",
                            "src": "8007:10:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1220,
                              "type": "uint256",
                              "value": "_numOfChoices"
                            },
                            "id": 1329,
                            "name": "Identifier",
                            "src": "8019:13:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "sender",
                              "referencedDeclaration": null,
                              "type": "address"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12011,
                                  "type": "msg",
                                  "value": "msg"
                                },
                                "id": 1330,
                                "name": "Identifier",
                                "src": "8034:3:2"
                              }
                            ],
                            "id": 1331,
                            "name": "MemberAccess",
                            "src": "8034:10:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1222,
                              "type": "bytes32",
                              "value": "_paramsHash"
                            },
                            "id": 1332,
                            "name": "Identifier",
                            "src": "8046:11:2"
                          }
                        ],
                        "id": 1333,
                        "name": "FunctionCall",
                        "src": "7995:63:2"
                      }
                    ],
                    "id": 1334,
                    "name": "ExpressionStatement",
                    "src": "7995:63:2"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 1232
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 1263,
                          "type": "bytes32",
                          "value": "proposalId"
                        },
                        "id": 1335,
                        "name": "Identifier",
                        "src": "8075:10:2"
                      }
                    ],
                    "id": 1336,
                    "name": "Return",
                    "src": "8068:17:2"
                  }
                ],
                "id": 1337,
                "name": "Block",
                "src": "7083:1009:2"
              }
            ],
            "id": 1338,
            "name": "FunctionDefinition",
            "src": "6933:1159:2"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "name": "cancelProposal",
              "payable": false,
              "scope": 3292,
              "stateMutability": "nonpayable",
              "superFunction": 3384,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_proposalId",
                      "scope": 1354,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 1339,
                        "name": "ElementaryTypeName",
                        "src": "8278:7:2"
                      }
                    ],
                    "id": 1340,
                    "name": "VariableDeclaration",
                    "src": "8278:19:2"
                  }
                ],
                "id": 1341,
                "name": "ParameterList",
                "src": "8277:21:2"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 1354,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 1348,
                        "name": "ElementaryTypeName",
                        "src": "8366:4:2"
                      }
                    ],
                    "id": 1349,
                    "name": "VariableDeclaration",
                    "src": "8366:4:2"
                  }
                ],
                "id": 1350,
                "name": "ParameterList",
                "src": "8365:6:2"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 3350,
                      "type": "modifier (bytes32)",
                      "value": "onlyProposalOwner"
                    },
                    "id": 1342,
                    "name": "Identifier",
                    "src": "8306:17:2"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 1340,
                      "type": "bytes32",
                      "value": "_proposalId"
                    },
                    "id": 1343,
                    "name": "Identifier",
                    "src": "8324:11:2"
                  }
                ],
                "id": 1344,
                "name": "ModifierInvocation",
                "src": "8306:30:2"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 1079,
                      "type": "modifier (bytes32)",
                      "value": "votable"
                    },
                    "id": 1345,
                    "name": "Identifier",
                    "src": "8337:7:2"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 1340,
                      "type": "bytes32",
                      "value": "_proposalId"
                    },
                    "id": 1346,
                    "name": "Identifier",
                    "src": "8345:11:2"
                  }
                ],
                "id": 1347,
                "name": "ModifierInvocation",
                "src": "8337:20:2"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 1350
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "hexvalue": "66616c7365",
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "subdenomination": null,
                          "token": "bool",
                          "type": "bool",
                          "value": "false"
                        },
                        "id": 1351,
                        "name": "Literal",
                        "src": "8420:5:2"
                      }
                    ],
                    "id": 1352,
                    "name": "Return",
                    "src": "8413:12:2"
                  }
                ],
                "id": 1353,
                "name": "Block",
                "src": "8372:60:2"
              }
            ],
            "id": 1354,
            "name": "FunctionDefinition",
            "src": "8254:178:2"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "stake",
              "payable": false,
              "scope": 3292,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_proposalId",
                      "scope": 1509,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 1355,
                        "name": "ElementaryTypeName",
                        "src": "8758:7:2"
                      }
                    ],
                    "id": 1356,
                    "name": "VariableDeclaration",
                    "src": "8758:19:2"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_vote",
                      "scope": 1509,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 1357,
                        "name": "ElementaryTypeName",
                        "src": "8779:4:2"
                      }
                    ],
                    "id": 1358,
                    "name": "VariableDeclaration",
                    "src": "8779:10:2"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_amount",
                      "scope": 1509,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 1359,
                        "name": "ElementaryTypeName",
                        "src": "8791:4:2"
                      }
                    ],
                    "id": 1360,
                    "name": "VariableDeclaration",
                    "src": "8791:12:2"
                  }
                ],
                "id": 1361,
                "name": "ParameterList",
                "src": "8757:47:2"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 1509,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 1362,
                        "name": "ElementaryTypeName",
                        "src": "8820:4:2"
                      }
                    ],
                    "id": 1363,
                    "name": "VariableDeclaration",
                    "src": "8820:4:2"
                  }
                ],
                "id": 1364,
                "name": "ParameterList",
                "src": "8819:6:2"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bool",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "overloadedDeclarations": [
                                1865
                              ],
                              "referencedDeclaration": 1865,
                              "type": "function (bytes32) returns (bool)",
                              "value": "execute"
                            },
                            "id": 1365,
                            "name": "Identifier",
                            "src": "8840:7:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1356,
                              "type": "bytes32",
                              "value": "_proposalId"
                            },
                            "id": 1366,
                            "name": "Identifier",
                            "src": "8848:11:2"
                          }
                        ],
                        "id": 1367,
                        "name": "FunctionCall",
                        "src": "8840:20:2"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "functionReturnParameters": 1364
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "74727565",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "bool",
                                  "type": "bool",
                                  "value": "true"
                                },
                                "id": 1368,
                                "name": "Literal",
                                "src": "8883:4:2"
                              }
                            ],
                            "id": 1369,
                            "name": "Return",
                            "src": "8876:11:2"
                          }
                        ],
                        "id": 1370,
                        "name": "Block",
                        "src": "8862:36:2"
                      }
                    ],
                    "id": 1371,
                    "name": "IfStatement",
                    "src": "8836:62:2"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ProposalState_$904",
                            "typeString": "enum GenesisProtocol.ProposalState"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "!=",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "state",
                              "referencedDeclaration": 963,
                              "type": "enum GenesisProtocol.ProposalState"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "struct GenesisProtocol.Proposal storage ref"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1046,
                                      "type": "mapping(bytes32 => struct GenesisProtocol.Proposal storage ref)",
                                      "value": "proposals"
                                    },
                                    "id": 1372,
                                    "name": "Identifier",
                                    "src": "8911:9:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1356,
                                      "type": "bytes32",
                                      "value": "_proposalId"
                                    },
                                    "id": 1373,
                                    "name": "Identifier",
                                    "src": "8921:11:2"
                                  }
                                ],
                                "id": 1374,
                                "name": "IndexAccess",
                                "src": "8911:22:2"
                              }
                            ],
                            "id": 1375,
                            "name": "MemberAccess",
                            "src": "8911:28:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "member_name": "PreBoosted",
                              "referencedDeclaration": null,
                              "type": "enum GenesisProtocol.ProposalState"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 904,
                                  "type": "type(enum GenesisProtocol.ProposalState)",
                                  "value": "ProposalState"
                                },
                                "id": 1376,
                                "name": "Identifier",
                                "src": "8943:13:2"
                              }
                            ],
                            "id": 1377,
                            "name": "MemberAccess",
                            "src": "8943:24:2"
                          }
                        ],
                        "id": 1378,
                        "name": "BinaryOperation",
                        "src": "8911:56:2"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "functionReturnParameters": 1364
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "66616c7365",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "bool",
                                  "type": "bool",
                                  "value": "false"
                                },
                                "id": 1379,
                                "name": "Literal",
                                "src": "8990:5:2"
                              }
                            ],
                            "id": 1380,
                            "name": "Return",
                            "src": "8983:12:2"
                          }
                        ],
                        "id": 1381,
                        "name": "Block",
                        "src": "8969:37:2"
                      }
                    ],
                    "id": 1382,
                    "name": "IfStatement",
                    "src": "8907:99:2"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        1384
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "proposal",
                          "scope": 1509,
                          "stateVariable": false,
                          "storageLocation": "storage",
                          "type": "struct GenesisProtocol.Proposal storage pointer",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "Proposal",
                              "referencedDeclaration": 986,
                              "type": "struct GenesisProtocol.Proposal storage pointer"
                            },
                            "id": 1383,
                            "name": "UserDefinedTypeName",
                            "src": "9015:8:2"
                          }
                        ],
                        "id": 1384,
                        "name": "VariableDeclaration",
                        "src": "9015:25:2"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "struct GenesisProtocol.Proposal storage ref"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1046,
                              "type": "mapping(bytes32 => struct GenesisProtocol.Proposal storage ref)",
                              "value": "proposals"
                            },
                            "id": 1385,
                            "name": "Identifier",
                            "src": "9043:9:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1356,
                              "type": "bytes32",
                              "value": "_proposalId"
                            },
                            "id": 1386,
                            "name": "Identifier",
                            "src": "9053:11:2"
                          }
                        ],
                        "id": 1387,
                        "name": "IndexAccess",
                        "src": "9043:22:2"
                      }
                    ],
                    "id": 1388,
                    "name": "VariableDeclarationStatement",
                    "src": "9015:50:2"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        1390
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "amount",
                          "scope": 1509,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint",
                              "type": "uint256"
                            },
                            "id": 1389,
                            "name": "ElementaryTypeName",
                            "src": "9075:4:2"
                          }
                        ],
                        "id": 1390,
                        "name": "VariableDeclaration",
                        "src": "9075:11:2"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 1360,
                          "type": "uint256",
                          "value": "_amount"
                        },
                        "id": 1391,
                        "name": "Identifier",
                        "src": "9089:7:2"
                      }
                    ],
                    "id": 1392,
                    "name": "VariableDeclarationStatement",
                    "src": "9075:21:2"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12014,
                              "type": "function (bool) pure",
                              "value": "require"
                            },
                            "id": 1393,
                            "name": "Identifier",
                            "src": "9135:7:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "<",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1358,
                                  "type": "uint256",
                                  "value": "_vote"
                                },
                                "id": 1394,
                                "name": "Identifier",
                                "src": "9143:5:2"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "numOfChoices",
                                  "referencedDeclaration": 947,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1384,
                                      "type": "struct GenesisProtocol.Proposal storage pointer",
                                      "value": "proposal"
                                    },
                                    "id": 1395,
                                    "name": "Identifier",
                                    "src": "9151:8:2"
                                  }
                                ],
                                "id": 1396,
                                "name": "MemberAccess",
                                "src": "9151:21:2"
                              }
                            ],
                            "id": 1397,
                            "name": "BinaryOperation",
                            "src": "9143:29:2"
                          }
                        ],
                        "id": 1398,
                        "name": "FunctionCall",
                        "src": "9135:38:2"
                      }
                    ],
                    "id": 1399,
                    "name": "ExpressionStatement",
                    "src": "9135:38:2"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        1401
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "paramsHash",
                          "scope": 1509,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "bytes32",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "bytes32",
                              "type": "bytes32"
                            },
                            "id": 1400,
                            "name": "ElementaryTypeName",
                            "src": "9184:7:2"
                          }
                        ],
                        "id": 1401,
                        "name": "VariableDeclaration",
                        "src": "9184:18:2"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bytes32",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_Avatar_$3873",
                                  "typeString": "contract Avatar"
                                }
                              ],
                              "overloadedDeclarations": [
                                9584
                              ],
                              "referencedDeclaration": 9584,
                              "type": "function (contract Avatar) view returns (bytes32)",
                              "value": "getParametersFromController"
                            },
                            "id": 1402,
                            "name": "Identifier",
                            "src": "9205:27:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "contract Avatar",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3873,
                                  "type": "type(contract Avatar)",
                                  "value": "Avatar"
                                },
                                "id": 1403,
                                "name": "Identifier",
                                "src": "9233:6:2"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "avatar",
                                  "referencedDeclaration": 945,
                                  "type": "address"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "type": "struct GenesisProtocol.Proposal storage ref"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1046,
                                          "type": "mapping(bytes32 => struct GenesisProtocol.Proposal storage ref)",
                                          "value": "proposals"
                                        },
                                        "id": 1404,
                                        "name": "Identifier",
                                        "src": "9240:9:2"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1356,
                                          "type": "bytes32",
                                          "value": "_proposalId"
                                        },
                                        "id": 1405,
                                        "name": "Identifier",
                                        "src": "9250:11:2"
                                      }
                                    ],
                                    "id": 1406,
                                    "name": "IndexAccess",
                                    "src": "9240:22:2"
                                  }
                                ],
                                "id": 1407,
                                "name": "MemberAccess",
                                "src": "9240:29:2"
                              }
                            ],
                            "id": 1408,
                            "name": "FunctionCall",
                            "src": "9233:37:2"
                          }
                        ],
                        "id": 1409,
                        "name": "FunctionCall",
                        "src": "9205:66:2"
                      }
                    ],
                    "id": 1410,
                    "name": "VariableDeclarationStatement",
                    "src": "9184:87:2"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        1412
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "params",
                          "scope": 1509,
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "type": "struct GenesisProtocol.Parameters memory",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "Parameters",
                              "referencedDeclaration": 931,
                              "type": "struct GenesisProtocol.Parameters storage pointer"
                            },
                            "id": 1411,
                            "name": "UserDefinedTypeName",
                            "src": "9281:10:2"
                          }
                        ],
                        "id": 1412,
                        "name": "VariableDeclaration",
                        "src": "9281:24:2"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "struct GenesisProtocol.Parameters storage ref"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1042,
                              "type": "mapping(bytes32 => struct GenesisProtocol.Parameters storage ref)",
                              "value": "parameters"
                            },
                            "id": 1413,
                            "name": "Identifier",
                            "src": "9308:10:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1401,
                              "type": "bytes32",
                              "value": "paramsHash"
                            },
                            "id": 1414,
                            "name": "Identifier",
                            "src": "9319:10:2"
                          }
                        ],
                        "id": 1415,
                        "name": "IndexAccess",
                        "src": "9308:22:2"
                      }
                    ],
                    "id": 1416,
                    "name": "VariableDeclarationStatement",
                    "src": "9281:49:2"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12002,
                              "type": "function (bool) pure",
                              "value": "assert"
                            },
                            "id": 1417,
                            "name": "Identifier",
                            "src": "9340:6:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": ">",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1390,
                                  "type": "uint256",
                                  "value": "amount"
                                },
                                "id": 1418,
                                "name": "Identifier",
                                "src": "9347:6:2"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "minimumStakingFee",
                                  "referencedDeclaration": 918,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1412,
                                      "type": "struct GenesisProtocol.Parameters memory",
                                      "value": "params"
                                    },
                                    "id": 1419,
                                    "name": "Identifier",
                                    "src": "9356:6:2"
                                  }
                                ],
                                "id": 1420,
                                "name": "MemberAccess",
                                "src": "9356:24:2"
                              }
                            ],
                            "id": 1421,
                            "name": "BinaryOperation",
                            "src": "9347:33:2"
                          }
                        ],
                        "id": 1422,
                        "name": "FunctionCall",
                        "src": "9340:41:2"
                      }
                    ],
                    "id": 1423,
                    "name": "ExpressionStatement",
                    "src": "9340:41:2"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bool",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "transferFrom",
                              "referencedDeclaration": 11853,
                              "type": "function (address,address,uint256) external returns (bool)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1057,
                                  "type": "contract StandardToken",
                                  "value": "stakingToken"
                                },
                                "id": 1424,
                                "name": "Identifier",
                                "src": "9391:12:2"
                              }
                            ],
                            "id": 1426,
                            "name": "MemberAccess",
                            "src": "9391:25:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "sender",
                              "referencedDeclaration": null,
                              "type": "address"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12011,
                                  "type": "msg",
                                  "value": "msg"
                                },
                                "id": 1427,
                                "name": "Identifier",
                                "src": "9417:3:2"
                              }
                            ],
                            "id": 1428,
                            "name": "MemberAccess",
                            "src": "9417:10:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "address",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_GenesisProtocol_$3292",
                                      "typeString": "contract GenesisProtocol"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(address)",
                                  "value": "address"
                                },
                                "id": 1429,
                                "name": "ElementaryTypeNameExpression",
                                "src": "9429:7:2"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12068,
                                  "type": "contract GenesisProtocol",
                                  "value": "this"
                                },
                                "id": 1430,
                                "name": "Identifier",
                                "src": "9437:4:2"
                              }
                            ],
                            "id": 1431,
                            "name": "FunctionCall",
                            "src": "9429:13:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1390,
                              "type": "uint256",
                              "value": "amount"
                            },
                            "id": 1432,
                            "name": "Identifier",
                            "src": "9444:6:2"
                          }
                        ],
                        "id": 1433,
                        "name": "FunctionCall",
                        "src": "9391:60:2"
                      }
                    ],
                    "id": 1434,
                    "name": "ExpressionStatement",
                    "src": "9391:60:2"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "struct GenesisProtocol.Staker storage ref"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "type": "struct GenesisProtocol.Staker storage ref"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "stakers",
                                  "referencedDeclaration": 985,
                                  "type": "mapping(address => struct GenesisProtocol.Staker storage ref)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1384,
                                      "type": "struct GenesisProtocol.Proposal storage pointer",
                                      "value": "proposal"
                                    },
                                    "id": 1435,
                                    "name": "Identifier",
                                    "src": "9462:8:2"
                                  }
                                ],
                                "id": 1439,
                                "name": "MemberAccess",
                                "src": "9462:16:2"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "sender",
                                  "referencedDeclaration": null,
                                  "type": "address"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 12011,
                                      "type": "msg",
                                      "value": "msg"
                                    },
                                    "id": 1437,
                                    "name": "Identifier",
                                    "src": "9479:3:2"
                                  }
                                ],
                                "id": 1438,
                                "name": "MemberAccess",
                                "src": "9479:10:2"
                              }
                            ],
                            "id": 1440,
                            "name": "IndexAccess",
                            "src": "9462:28:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": true,
                              "lValueRequested": false,
                              "names": [
                                "amount",
                                "vote"
                              ],
                              "type": "struct GenesisProtocol.Staker memory",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 943,
                                  "type": "type(struct GenesisProtocol.Staker storage pointer)",
                                  "value": "Staker"
                                },
                                "id": 1441,
                                "name": "Identifier",
                                "src": "9493:6:2"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1390,
                                  "type": "uint256",
                                  "value": "amount"
                                },
                                "id": 1442,
                                "name": "Identifier",
                                "src": "9522:6:2"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1358,
                                  "type": "uint256",
                                  "value": "_vote"
                                },
                                "id": 1443,
                                "name": "Identifier",
                                "src": "9548:5:2"
                              }
                            ],
                            "id": 1444,
                            "name": "FunctionCall",
                            "src": "9493:71:2"
                          }
                        ],
                        "id": 1445,
                        "name": "Assignment",
                        "src": "9462:102:2"
                      }
                    ],
                    "id": 1446,
                    "name": "ExpressionStatement",
                    "src": "9462:102:2"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "+=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "votersStakes",
                              "referencedDeclaration": 955,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1384,
                                  "type": "struct GenesisProtocol.Proposal storage pointer",
                                  "value": "proposal"
                                },
                                "id": 1447,
                                "name": "Identifier",
                                "src": "9574:8:2"
                              }
                            ],
                            "id": 1449,
                            "name": "MemberAccess",
                            "src": "9574:21:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "/",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "*",
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "stakerFeeRatioForVoters",
                                          "referencedDeclaration": 926,
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1412,
                                              "type": "struct GenesisProtocol.Parameters memory",
                                              "value": "params"
                                            },
                                            "id": 1450,
                                            "name": "Identifier",
                                            "src": "9600:6:2"
                                          }
                                        ],
                                        "id": 1451,
                                        "name": "MemberAccess",
                                        "src": "9600:30:2"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1390,
                                          "type": "uint256",
                                          "value": "amount"
                                        },
                                        "id": 1452,
                                        "name": "Identifier",
                                        "src": "9633:6:2"
                                      }
                                    ],
                                    "id": 1453,
                                    "name": "BinaryOperation",
                                    "src": "9600:39:2"
                                  }
                                ],
                                "id": 1454,
                                "name": "TupleExpression",
                                "src": "9599:41:2"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "313030",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 100",
                                  "value": "100"
                                },
                                "id": 1455,
                                "name": "Literal",
                                "src": "9641:3:2"
                              }
                            ],
                            "id": 1456,
                            "name": "BinaryOperation",
                            "src": "9599:45:2"
                          }
                        ],
                        "id": 1457,
                        "name": "Assignment",
                        "src": "9574:70:2"
                      }
                    ],
                    "id": 1458,
                    "name": "ExpressionStatement",
                    "src": "9574:70:2"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "stakes",
                                  "referencedDeclaration": 981,
                                  "type": "mapping(uint256 => uint256)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1384,
                                      "type": "struct GenesisProtocol.Proposal storage pointer",
                                      "value": "proposal"
                                    },
                                    "id": 1459,
                                    "name": "Identifier",
                                    "src": "9654:8:2"
                                  }
                                ],
                                "id": 1462,
                                "name": "MemberAccess",
                                "src": "9654:15:2"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1358,
                                  "type": "uint256",
                                  "value": "_vote"
                                },
                                "id": 1461,
                                "name": "Identifier",
                                "src": "9670:5:2"
                              }
                            ],
                            "id": 1463,
                            "name": "IndexAccess",
                            "src": "9654:22:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "uint256",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "add",
                                  "referencedDeclaration": 11364,
                                  "type": "function (uint256,uint256) pure returns (uint256)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1390,
                                      "type": "uint256",
                                      "value": "amount"
                                    },
                                    "id": 1464,
                                    "name": "Identifier",
                                    "src": "9679:6:2"
                                  }
                                ],
                                "id": 1465,
                                "name": "MemberAccess",
                                "src": "9679:10:2"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "stakes",
                                      "referencedDeclaration": 981,
                                      "type": "mapping(uint256 => uint256)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1384,
                                          "type": "struct GenesisProtocol.Proposal storage pointer",
                                          "value": "proposal"
                                        },
                                        "id": 1466,
                                        "name": "Identifier",
                                        "src": "9690:8:2"
                                      }
                                    ],
                                    "id": 1467,
                                    "name": "MemberAccess",
                                    "src": "9690:15:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1358,
                                      "type": "uint256",
                                      "value": "_vote"
                                    },
                                    "id": 1468,
                                    "name": "Identifier",
                                    "src": "9706:5:2"
                                  }
                                ],
                                "id": 1469,
                                "name": "IndexAccess",
                                "src": "9690:22:2"
                              }
                            ],
                            "id": 1470,
                            "name": "FunctionCall",
                            "src": "9679:34:2"
                          }
                        ],
                        "id": 1471,
                        "name": "Assignment",
                        "src": "9654:59:2"
                      }
                    ],
                    "id": 1472,
                    "name": "ExpressionStatement",
                    "src": "9654:59:2"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1390,
                              "type": "uint256",
                              "value": "amount"
                            },
                            "id": 1473,
                            "name": "Identifier",
                            "src": "9723:6:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "/",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "*",
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "operator": "-",
                                              "type": "uint256"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "hexvalue": "313030",
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "subdenomination": null,
                                                  "token": "number",
                                                  "type": "int_const 100",
                                                  "value": "100"
                                                },
                                                "id": 1474,
                                                "name": "Literal",
                                                "src": "9734:3:2"
                                              },
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "member_name": "stakerFeeRatioForVoters",
                                                  "referencedDeclaration": 926,
                                                  "type": "uint256"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 1412,
                                                      "type": "struct GenesisProtocol.Parameters memory",
                                                      "value": "params"
                                                    },
                                                    "id": 1475,
                                                    "name": "Identifier",
                                                    "src": "9738:6:2"
                                                  }
                                                ],
                                                "id": 1476,
                                                "name": "MemberAccess",
                                                "src": "9738:30:2"
                                              }
                                            ],
                                            "id": 1477,
                                            "name": "BinaryOperation",
                                            "src": "9734:34:2"
                                          }
                                        ],
                                        "id": 1478,
                                        "name": "TupleExpression",
                                        "src": "9733:36:2"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1390,
                                          "type": "uint256",
                                          "value": "amount"
                                        },
                                        "id": 1479,
                                        "name": "Identifier",
                                        "src": "9770:6:2"
                                      }
                                    ],
                                    "id": 1480,
                                    "name": "BinaryOperation",
                                    "src": "9733:43:2"
                                  }
                                ],
                                "id": 1481,
                                "name": "TupleExpression",
                                "src": "9732:45:2"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "313030",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 100",
                                  "value": "100"
                                },
                                "id": 1482,
                                "name": "Literal",
                                "src": "9778:3:2"
                              }
                            ],
                            "id": 1483,
                            "name": "BinaryOperation",
                            "src": "9732:49:2"
                          }
                        ],
                        "id": 1484,
                        "name": "Assignment",
                        "src": "9723:58:2"
                      }
                    ],
                    "id": 1485,
                    "name": "ExpressionStatement",
                    "src": "9723:58:2"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "totalStakes",
                              "referencedDeclaration": 953,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1384,
                                  "type": "struct GenesisProtocol.Proposal storage pointer",
                                  "value": "proposal"
                                },
                                "id": 1486,
                                "name": "Identifier",
                                "src": "9791:8:2"
                              }
                            ],
                            "id": 1488,
                            "name": "MemberAccess",
                            "src": "9791:20:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "uint256",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "add",
                                  "referencedDeclaration": 11364,
                                  "type": "function (uint256,uint256) pure returns (uint256)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1390,
                                      "type": "uint256",
                                      "value": "amount"
                                    },
                                    "id": 1489,
                                    "name": "Identifier",
                                    "src": "9814:6:2"
                                  }
                                ],
                                "id": 1490,
                                "name": "MemberAccess",
                                "src": "9814:10:2"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "totalStakes",
                                  "referencedDeclaration": 953,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1384,
                                      "type": "struct GenesisProtocol.Proposal storage pointer",
                                      "value": "proposal"
                                    },
                                    "id": 1491,
                                    "name": "Identifier",
                                    "src": "9825:8:2"
                                  }
                                ],
                                "id": 1492,
                                "name": "MemberAccess",
                                "src": "9825:20:2"
                              }
                            ],
                            "id": 1493,
                            "name": "FunctionCall",
                            "src": "9814:32:2"
                          }
                        ],
                        "id": 1494,
                        "name": "Assignment",
                        "src": "9791:55:2"
                      }
                    ],
                    "id": 1495,
                    "name": "ExpressionStatement",
                    "src": "9791:55:2"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1022,
                              "type": "function (bytes32,address,uint256,uint256)",
                              "value": "Stake"
                            },
                            "id": 1496,
                            "name": "Identifier",
                            "src": "9872:5:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1356,
                              "type": "bytes32",
                              "value": "_proposalId"
                            },
                            "id": 1497,
                            "name": "Identifier",
                            "src": "9878:11:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "sender",
                              "referencedDeclaration": null,
                              "type": "address"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12011,
                                  "type": "msg",
                                  "value": "msg"
                                },
                                "id": 1498,
                                "name": "Identifier",
                                "src": "9891:3:2"
                              }
                            ],
                            "id": 1499,
                            "name": "MemberAccess",
                            "src": "9891:10:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1358,
                              "type": "uint256",
                              "value": "_vote"
                            },
                            "id": 1500,
                            "name": "Identifier",
                            "src": "9903:5:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1360,
                              "type": "uint256",
                              "value": "_amount"
                            },
                            "id": 1501,
                            "name": "Identifier",
                            "src": "9910:7:2"
                          }
                        ],
                        "id": 1502,
                        "name": "FunctionCall",
                        "src": "9872:46:2"
                      }
                    ],
                    "id": 1503,
                    "name": "ExpressionStatement",
                    "src": "9872:46:2"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 1364
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bool",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "overloadedDeclarations": [
                                1865
                              ],
                              "referencedDeclaration": 1865,
                              "type": "function (bytes32) returns (bool)",
                              "value": "execute"
                            },
                            "id": 1504,
                            "name": "Identifier",
                            "src": "9992:7:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1356,
                              "type": "bytes32",
                              "value": "_proposalId"
                            },
                            "id": 1505,
                            "name": "Identifier",
                            "src": "10000:11:2"
                          }
                        ],
                        "id": 1506,
                        "name": "FunctionCall",
                        "src": "9992:20:2"
                      }
                    ],
                    "id": 1507,
                    "name": "Return",
                    "src": "9985:27:2"
                  }
                ],
                "id": 1508,
                "name": "Block",
                "src": "8826:1193:2"
              }
            ],
            "id": 1509,
            "name": "FunctionDefinition",
            "src": "8743:1276:2"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "name": "vote",
              "payable": false,
              "scope": 3292,
              "stateMutability": "nonpayable",
              "superFunction": 3410,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_proposalId",
                      "scope": 1530,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 1510,
                        "name": "ElementaryTypeName",
                        "src": "10288:7:2"
                      }
                    ],
                    "id": 1511,
                    "name": "VariableDeclaration",
                    "src": "10288:19:2"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_vote",
                      "scope": 1530,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 1512,
                        "name": "ElementaryTypeName",
                        "src": "10309:4:2"
                      }
                    ],
                    "id": 1513,
                    "name": "VariableDeclaration",
                    "src": "10309:10:2"
                  }
                ],
                "id": 1514,
                "name": "ParameterList",
                "src": "10287:33:2"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 1530,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 1518,
                        "name": "ElementaryTypeName",
                        "src": "10357:4:2"
                      }
                    ],
                    "id": 1519,
                    "name": "VariableDeclaration",
                    "src": "10357:4:2"
                  }
                ],
                "id": 1520,
                "name": "ParameterList",
                "src": "10356:6:2"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 1079,
                      "type": "modifier (bytes32)",
                      "value": "votable"
                    },
                    "id": 1515,
                    "name": "Identifier",
                    "src": "10328:7:2"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 1511,
                      "type": "bytes32",
                      "value": "_proposalId"
                    },
                    "id": 1516,
                    "name": "Identifier",
                    "src": "10336:11:2"
                  }
                ],
                "id": 1517,
                "name": "ModifierInvocation",
                "src": "10328:20:2"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 1520
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bool",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3233,
                              "type": "function (bytes32,address,uint256,uint256) returns (bool)",
                              "value": "internalVote"
                            },
                            "id": 1521,
                            "name": "Identifier",
                            "src": "10380:12:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1511,
                              "type": "bytes32",
                              "value": "_proposalId"
                            },
                            "id": 1522,
                            "name": "Identifier",
                            "src": "10393:11:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "sender",
                              "referencedDeclaration": null,
                              "type": "address"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12011,
                                  "type": "msg",
                                  "value": "msg"
                                },
                                "id": 1523,
                                "name": "Identifier",
                                "src": "10406:3:2"
                              }
                            ],
                            "id": 1524,
                            "name": "MemberAccess",
                            "src": "10406:10:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1513,
                              "type": "uint256",
                              "value": "_vote"
                            },
                            "id": 1525,
                            "name": "Identifier",
                            "src": "10418:5:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 1526,
                            "name": "Literal",
                            "src": "10425:1:2"
                          }
                        ],
                        "id": 1527,
                        "name": "FunctionCall",
                        "src": "10380:47:2"
                      }
                    ],
                    "id": 1528,
                    "name": "Return",
                    "src": "10373:54:2"
                  }
                ],
                "id": 1529,
                "name": "Block",
                "src": "10363:71:2"
              }
            ],
            "id": 1530,
            "name": "FunctionDefinition",
            "src": "10274:160:2"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "name": "ownerVote",
              "payable": false,
              "scope": 3292,
              "stateMutability": "nonpayable",
              "superFunction": 3398,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_proposalId",
                      "scope": 1550,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 1531,
                        "name": "ElementaryTypeName",
                        "src": "10695:7:2"
                      }
                    ],
                    "id": 1532,
                    "name": "VariableDeclaration",
                    "src": "10695:19:2"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 1550,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 1533,
                        "name": "ElementaryTypeName",
                        "src": "10716:4:2"
                      }
                    ],
                    "id": 1534,
                    "name": "VariableDeclaration",
                    "src": "10716:4:2"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 1550,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 1535,
                        "name": "ElementaryTypeName",
                        "src": "10723:7:2"
                      }
                    ],
                    "id": 1536,
                    "name": "VariableDeclaration",
                    "src": "10723:7:2"
                  }
                ],
                "id": 1537,
                "name": "ParameterList",
                "src": "10694:38:2"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 1550,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 1544,
                        "name": "ElementaryTypeName",
                        "src": "10800:4:2"
                      }
                    ],
                    "id": 1545,
                    "name": "VariableDeclaration",
                    "src": "10800:4:2"
                  }
                ],
                "id": 1546,
                "name": "ParameterList",
                "src": "10799:6:2"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 3350,
                      "type": "modifier (bytes32)",
                      "value": "onlyProposalOwner"
                    },
                    "id": 1538,
                    "name": "Identifier",
                    "src": "10740:17:2"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 1532,
                      "type": "bytes32",
                      "value": "_proposalId"
                    },
                    "id": 1539,
                    "name": "Identifier",
                    "src": "10758:11:2"
                  }
                ],
                "id": 1540,
                "name": "ModifierInvocation",
                "src": "10740:30:2"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 1079,
                      "type": "modifier (bytes32)",
                      "value": "votable"
                    },
                    "id": 1541,
                    "name": "Identifier",
                    "src": "10771:7:2"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 1532,
                      "type": "bytes32",
                      "value": "_proposalId"
                    },
                    "id": 1542,
                    "name": "Identifier",
                    "src": "10779:11:2"
                  }
                ],
                "id": 1543,
                "name": "ModifierInvocation",
                "src": "10771:20:2"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 1546
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "hexvalue": "66616c7365",
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "subdenomination": null,
                          "token": "bool",
                          "type": "bool",
                          "value": "false"
                        },
                        "id": 1547,
                        "name": "Literal",
                        "src": "10852:5:2"
                      }
                    ],
                    "id": 1548,
                    "name": "Return",
                    "src": "10845:12:2"
                  }
                ],
                "id": 1549,
                "name": "Block",
                "src": "10806:58:2"
              }
            ],
            "id": 1550,
            "name": "FunctionDefinition",
            "src": "10676:188:2"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "name": "voteWithSpecifiedAmounts",
              "payable": false,
              "scope": 3292,
              "stateMutability": "nonpayable",
              "superFunction": 3426,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_proposalId",
                      "scope": 1575,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 1551,
                        "name": "ElementaryTypeName",
                        "src": "10904:7:2"
                      }
                    ],
                    "id": 1552,
                    "name": "VariableDeclaration",
                    "src": "10904:19:2"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_vote",
                      "scope": 1575,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 1553,
                        "name": "ElementaryTypeName",
                        "src": "10924:4:2"
                      }
                    ],
                    "id": 1554,
                    "name": "VariableDeclaration",
                    "src": "10924:10:2"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_rep",
                      "scope": 1575,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 1555,
                        "name": "ElementaryTypeName",
                        "src": "10935:4:2"
                      }
                    ],
                    "id": 1556,
                    "name": "VariableDeclaration",
                    "src": "10935:9:2"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 1575,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 1557,
                        "name": "ElementaryTypeName",
                        "src": "10945:4:2"
                      }
                    ],
                    "id": 1558,
                    "name": "VariableDeclaration",
                    "src": "10945:4:2"
                  }
                ],
                "id": 1559,
                "name": "ParameterList",
                "src": "10903:47:2"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 1575,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 1563,
                        "name": "ElementaryTypeName",
                        "src": "10987:4:2"
                      }
                    ],
                    "id": 1564,
                    "name": "VariableDeclaration",
                    "src": "10987:4:2"
                  }
                ],
                "id": 1565,
                "name": "ParameterList",
                "src": "10986:6:2"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 1079,
                      "type": "modifier (bytes32)",
                      "value": "votable"
                    },
                    "id": 1560,
                    "name": "Identifier",
                    "src": "10958:7:2"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 1552,
                      "type": "bytes32",
                      "value": "_proposalId"
                    },
                    "id": 1561,
                    "name": "Identifier",
                    "src": "10966:11:2"
                  }
                ],
                "id": 1562,
                "name": "ModifierInvocation",
                "src": "10958:20:2"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 1565
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bool",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3233,
                              "type": "function (bytes32,address,uint256,uint256) returns (bool)",
                              "value": "internalVote"
                            },
                            "id": 1566,
                            "name": "Identifier",
                            "src": "11010:12:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1552,
                              "type": "bytes32",
                              "value": "_proposalId"
                            },
                            "id": 1567,
                            "name": "Identifier",
                            "src": "11023:11:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "sender",
                              "referencedDeclaration": null,
                              "type": "address"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12011,
                                  "type": "msg",
                                  "value": "msg"
                                },
                                "id": 1568,
                                "name": "Identifier",
                                "src": "11035:3:2"
                              }
                            ],
                            "id": 1569,
                            "name": "MemberAccess",
                            "src": "11035:10:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1554,
                              "type": "uint256",
                              "value": "_vote"
                            },
                            "id": 1570,
                            "name": "Identifier",
                            "src": "11046:5:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1556,
                              "type": "uint256",
                              "value": "_rep"
                            },
                            "id": 1571,
                            "name": "Identifier",
                            "src": "11052:4:2"
                          }
                        ],
                        "id": 1572,
                        "name": "FunctionCall",
                        "src": "11010:47:2"
                      }
                    ],
                    "id": 1573,
                    "name": "Return",
                    "src": "11003:54:2"
                  }
                ],
                "id": 1574,
                "name": "Block",
                "src": "10993:71:2"
              }
            ],
            "id": 1575,
            "name": "FunctionDefinition",
            "src": "10870:194:2"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "name": "cancelVote",
              "payable": false,
              "scope": 3292,
              "stateMutability": "nonpayable",
              "superFunction": 3434,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_proposalId",
                      "scope": 1585,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 1576,
                        "name": "ElementaryTypeName",
                        "src": "11287:7:2"
                      }
                    ],
                    "id": 1577,
                    "name": "VariableDeclaration",
                    "src": "11287:19:2"
                  }
                ],
                "id": 1578,
                "name": "ParameterList",
                "src": "11286:21:2"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 1582,
                "name": "ParameterList",
                "src": "11336:0:2"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 1079,
                      "type": "modifier (bytes32)",
                      "value": "votable"
                    },
                    "id": 1579,
                    "name": "Identifier",
                    "src": "11315:7:2"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 1577,
                      "type": "bytes32",
                      "value": "_proposalId"
                    },
                    "id": 1580,
                    "name": "Identifier",
                    "src": "11323:11:2"
                  }
                ],
                "id": 1581,
                "name": "ModifierInvocation",
                "src": "11315:20:2"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "expression": null,
                      "functionReturnParameters": 1582
                    },
                    "id": 1583,
                    "name": "Return",
                    "src": "11375:7:2"
                  }
                ],
                "id": 1584,
                "name": "Block",
                "src": "11336:52:2"
              }
            ],
            "id": 1585,
            "name": "FunctionDefinition",
            "src": "11267:121:2"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "name": "execute",
              "payable": false,
              "scope": 3292,
              "stateMutability": "nonpayable",
              "superFunction": 3444,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_proposalId",
                      "scope": 1865,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 1586,
                        "name": "ElementaryTypeName",
                        "src": "11657:7:2"
                      }
                    ],
                    "id": 1587,
                    "name": "VariableDeclaration",
                    "src": "11657:19:2"
                  }
                ],
                "id": 1588,
                "name": "ParameterList",
                "src": "11656:21:2"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 1865,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 1592,
                        "name": "ElementaryTypeName",
                        "src": "11714:4:2"
                      }
                    ],
                    "id": 1593,
                    "name": "VariableDeclaration",
                    "src": "11714:4:2"
                  }
                ],
                "id": 1594,
                "name": "ParameterList",
                "src": "11713:6:2"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 1079,
                      "type": "modifier (bytes32)",
                      "value": "votable"
                    },
                    "id": 1589,
                    "name": "Identifier",
                    "src": "11685:7:2"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 1587,
                      "type": "bytes32",
                      "value": "_proposalId"
                    },
                    "id": 1590,
                    "name": "Identifier",
                    "src": "11693:11:2"
                  }
                ],
                "id": 1591,
                "name": "ModifierInvocation",
                "src": "11685:20:2"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        1596
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "paramsHash",
                          "scope": 1865,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "bytes32",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "bytes32",
                              "type": "bytes32"
                            },
                            "id": 1595,
                            "name": "ElementaryTypeName",
                            "src": "11730:7:2"
                          }
                        ],
                        "id": 1596,
                        "name": "VariableDeclaration",
                        "src": "11730:18:2"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bytes32",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_Avatar_$3873",
                                  "typeString": "contract Avatar"
                                }
                              ],
                              "overloadedDeclarations": [
                                9584
                              ],
                              "referencedDeclaration": 9584,
                              "type": "function (contract Avatar) view returns (bytes32)",
                              "value": "getParametersFromController"
                            },
                            "id": 1597,
                            "name": "Identifier",
                            "src": "11751:27:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "contract Avatar",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3873,
                                  "type": "type(contract Avatar)",
                                  "value": "Avatar"
                                },
                                "id": 1598,
                                "name": "Identifier",
                                "src": "11779:6:2"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "avatar",
                                  "referencedDeclaration": 945,
                                  "type": "address"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "type": "struct GenesisProtocol.Proposal storage ref"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1046,
                                          "type": "mapping(bytes32 => struct GenesisProtocol.Proposal storage ref)",
                                          "value": "proposals"
                                        },
                                        "id": 1599,
                                        "name": "Identifier",
                                        "src": "11786:9:2"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1587,
                                          "type": "bytes32",
                                          "value": "_proposalId"
                                        },
                                        "id": 1600,
                                        "name": "Identifier",
                                        "src": "11796:11:2"
                                      }
                                    ],
                                    "id": 1601,
                                    "name": "IndexAccess",
                                    "src": "11786:22:2"
                                  }
                                ],
                                "id": 1602,
                                "name": "MemberAccess",
                                "src": "11786:29:2"
                              }
                            ],
                            "id": 1603,
                            "name": "FunctionCall",
                            "src": "11779:37:2"
                          }
                        ],
                        "id": 1604,
                        "name": "FunctionCall",
                        "src": "11751:66:2"
                      }
                    ],
                    "id": 1605,
                    "name": "VariableDeclarationStatement",
                    "src": "11730:87:2"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        1607
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "params",
                          "scope": 1865,
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "type": "struct GenesisProtocol.Parameters memory",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "Parameters",
                              "referencedDeclaration": 931,
                              "type": "struct GenesisProtocol.Parameters storage pointer"
                            },
                            "id": 1606,
                            "name": "UserDefinedTypeName",
                            "src": "11827:10:2"
                          }
                        ],
                        "id": 1607,
                        "name": "VariableDeclaration",
                        "src": "11827:24:2"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "struct GenesisProtocol.Parameters storage ref"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1042,
                              "type": "mapping(bytes32 => struct GenesisProtocol.Parameters storage ref)",
                              "value": "parameters"
                            },
                            "id": 1608,
                            "name": "Identifier",
                            "src": "11854:10:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1596,
                              "type": "bytes32",
                              "value": "paramsHash"
                            },
                            "id": 1609,
                            "name": "Identifier",
                            "src": "11865:10:2"
                          }
                        ],
                        "id": 1610,
                        "name": "IndexAccess",
                        "src": "11854:22:2"
                      }
                    ],
                    "id": 1611,
                    "name": "VariableDeclarationStatement",
                    "src": "11827:49:2"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        1613
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "proposal",
                          "scope": 1865,
                          "stateVariable": false,
                          "storageLocation": "storage",
                          "type": "struct GenesisProtocol.Proposal storage pointer",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "Proposal",
                              "referencedDeclaration": 986,
                              "type": "struct GenesisProtocol.Proposal storage pointer"
                            },
                            "id": 1612,
                            "name": "UserDefinedTypeName",
                            "src": "11886:8:2"
                          }
                        ],
                        "id": 1613,
                        "name": "VariableDeclaration",
                        "src": "11886:25:2"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "struct GenesisProtocol.Proposal storage ref"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1046,
                              "type": "mapping(bytes32 => struct GenesisProtocol.Proposal storage ref)",
                              "value": "proposals"
                            },
                            "id": 1614,
                            "name": "Identifier",
                            "src": "11914:9:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1587,
                              "type": "bytes32",
                              "value": "_proposalId"
                            },
                            "id": 1615,
                            "name": "Identifier",
                            "src": "11924:11:2"
                          }
                        ],
                        "id": 1616,
                        "name": "IndexAccess",
                        "src": "11914:22:2"
                      }
                    ],
                    "id": 1617,
                    "name": "VariableDeclarationStatement",
                    "src": "11886:50:2"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        null
                      ],
                      "initialValue": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "tmpProposal",
                          "scope": 1865,
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "type": "struct GenesisProtocol.Proposal memory",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "Proposal",
                              "referencedDeclaration": 986,
                              "type": "struct GenesisProtocol.Proposal storage pointer"
                            },
                            "id": 1618,
                            "name": "UserDefinedTypeName",
                            "src": "11946:8:2"
                          }
                        ],
                        "id": 1619,
                        "name": "VariableDeclaration",
                        "src": "11946:27:2"
                      }
                    ],
                    "id": 1620,
                    "name": "VariableDeclarationStatement",
                    "src": "11946:27:2"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        1622
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "executionBar",
                          "scope": 1865,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint",
                              "type": "uint256"
                            },
                            "id": 1621,
                            "name": "ElementaryTypeName",
                            "src": "11983:4:2"
                          }
                        ],
                        "id": 1622,
                        "name": "VariableDeclaration",
                        "src": "11983:17:2"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "/",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "*",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "uint256",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        null
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "totalSupply",
                                      "referencedDeclaration": 5218,
                                      "type": "function () view external returns (uint256)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            null
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "isStructConstructorCall": false,
                                          "lValueRequested": false,
                                          "names": [
                                            null
                                          ],
                                          "type": "contract Reputation",
                                          "type_conversion": false
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": [
                                                null
                                              ],
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "nativeReputation",
                                              "referencedDeclaration": 3606,
                                              "type": "function () view external returns (contract Reputation)"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "isStructConstructorCall": false,
                                                  "lValueRequested": false,
                                                  "names": [
                                                    null
                                                  ],
                                                  "type": "contract Avatar",
                                                  "type_conversion": true
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": [
                                                        {
                                                          "typeIdentifier": "t_address",
                                                          "typeString": "address"
                                                        }
                                                      ],
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 3873,
                                                      "type": "type(contract Avatar)",
                                                      "value": "Avatar"
                                                    },
                                                    "id": 1623,
                                                    "name": "Identifier",
                                                    "src": "12003:6:2"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "member_name": "avatar",
                                                      "referencedDeclaration": 945,
                                                      "type": "address"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "argumentTypes": null,
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 1613,
                                                          "type": "struct GenesisProtocol.Proposal storage pointer",
                                                          "value": "proposal"
                                                        },
                                                        "id": 1624,
                                                        "name": "Identifier",
                                                        "src": "12010:8:2"
                                                      }
                                                    ],
                                                    "id": 1625,
                                                    "name": "MemberAccess",
                                                    "src": "12010:15:2"
                                                  }
                                                ],
                                                "id": 1626,
                                                "name": "FunctionCall",
                                                "src": "12003:23:2"
                                              }
                                            ],
                                            "id": 1627,
                                            "name": "MemberAccess",
                                            "src": "12003:40:2"
                                          }
                                        ],
                                        "id": 1628,
                                        "name": "FunctionCall",
                                        "src": "12003:42:2"
                                      }
                                    ],
                                    "id": 1629,
                                    "name": "MemberAccess",
                                    "src": "12003:54:2"
                                  }
                                ],
                                "id": 1630,
                                "name": "FunctionCall",
                                "src": "12003:56:2"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "preBoostedVoteRequiredPercentage",
                                  "referencedDeclaration": 906,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1607,
                                      "type": "struct GenesisProtocol.Parameters memory",
                                      "value": "params"
                                    },
                                    "id": 1631,
                                    "name": "Identifier",
                                    "src": "12062:6:2"
                                  }
                                ],
                                "id": 1632,
                                "name": "MemberAccess",
                                "src": "12062:39:2"
                              }
                            ],
                            "id": 1633,
                            "name": "BinaryOperation",
                            "src": "12003:98:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "313030",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 100",
                              "value": "100"
                            },
                            "id": 1634,
                            "name": "Literal",
                            "src": "12102:3:2"
                          }
                        ],
                        "id": 1635,
                        "name": "BinaryOperation",
                        "src": "12003:102:2"
                      }
                    ],
                    "id": 1636,
                    "name": "VariableDeclarationStatement",
                    "src": "11983:122:2"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ProposalState_$904",
                            "typeString": "enum GenesisProtocol.ProposalState"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "==",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "state",
                              "referencedDeclaration": 963,
                              "type": "enum GenesisProtocol.ProposalState"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1613,
                                  "type": "struct GenesisProtocol.Proposal storage pointer",
                                  "value": "proposal"
                                },
                                "id": 1637,
                                "name": "Identifier",
                                "src": "12120:8:2"
                              }
                            ],
                            "id": 1638,
                            "name": "MemberAccess",
                            "src": "12120:14:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "member_name": "PreBoosted",
                              "referencedDeclaration": null,
                              "type": "enum GenesisProtocol.ProposalState"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 904,
                                  "type": "type(enum GenesisProtocol.ProposalState)",
                                  "value": "ProposalState"
                                },
                                "id": 1639,
                                "name": "Identifier",
                                "src": "12138:13:2"
                              }
                            ],
                            "id": 1640,
                            "name": "MemberAccess",
                            "src": "12138:24:2"
                          }
                        ],
                        "id": 1641,
                        "name": "BinaryOperation",
                        "src": "12120:42:2"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "falseBody": null
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": ">=",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "-",
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 12013,
                                              "type": "uint256",
                                              "value": "now"
                                            },
                                            "id": 1642,
                                            "name": "Identifier",
                                            "src": "12249:3:2"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "submittedTime",
                                              "referencedDeclaration": 959,
                                              "type": "uint256"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 1613,
                                                  "type": "struct GenesisProtocol.Proposal storage pointer",
                                                  "value": "proposal"
                                                },
                                                "id": 1643,
                                                "name": "Identifier",
                                                "src": "12255:8:2"
                                              }
                                            ],
                                            "id": 1644,
                                            "name": "MemberAccess",
                                            "src": "12255:22:2"
                                          }
                                        ],
                                        "id": 1645,
                                        "name": "BinaryOperation",
                                        "src": "12249:28:2"
                                      }
                                    ],
                                    "id": 1646,
                                    "name": "TupleExpression",
                                    "src": "12248:30:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "preBoostedVotePeriodLimit",
                                      "referencedDeclaration": 908,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1607,
                                          "type": "struct GenesisProtocol.Parameters memory",
                                          "value": "params"
                                        },
                                        "id": 1647,
                                        "name": "Identifier",
                                        "src": "12282:6:2"
                                      }
                                    ],
                                    "id": 1648,
                                    "name": "MemberAccess",
                                    "src": "12282:32:2"
                                  }
                                ],
                                "id": 1649,
                                "name": "BinaryOperation",
                                "src": "12248:66:2"
                              },
                              {
                                "children": [
                                  {
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "=",
                                          "type": "struct GenesisProtocol.Proposal memory"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1619,
                                              "type": "struct GenesisProtocol.Proposal memory",
                                              "value": "tmpProposal"
                                            },
                                            "id": 1650,
                                            "name": "Identifier",
                                            "src": "12334:11:2"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1613,
                                              "type": "struct GenesisProtocol.Proposal storage pointer",
                                              "value": "proposal"
                                            },
                                            "id": 1651,
                                            "name": "Identifier",
                                            "src": "12348:8:2"
                                          }
                                        ],
                                        "id": 1652,
                                        "name": "Assignment",
                                        "src": "12334:22:2"
                                      }
                                    ],
                                    "id": 1653,
                                    "name": "ExpressionStatement",
                                    "src": "12334:22:2"
                                  },
                                  {
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "isStructConstructorCall": false,
                                          "lValueRequested": false,
                                          "names": [
                                            null
                                          ],
                                          "type": "tuple()",
                                          "type_conversion": false
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_bytes32",
                                                  "typeString": "bytes32"
                                                },
                                                {
                                                  "typeIdentifier": "t_rational_0_by_1",
                                                  "typeString": "int_const 0"
                                                }
                                              ],
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1002,
                                              "type": "function (bytes32,uint256)",
                                              "value": "ExecuteProposal"
                                            },
                                            "id": 1654,
                                            "name": "Identifier",
                                            "src": "12374:15:2"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1587,
                                              "type": "bytes32",
                                              "value": "_proposalId"
                                            },
                                            "id": 1655,
                                            "name": "Identifier",
                                            "src": "12390:11:2"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "hexvalue": "30",
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "subdenomination": null,
                                              "token": "number",
                                              "type": "int_const 0",
                                              "value": "0"
                                            },
                                            "id": 1656,
                                            "name": "Literal",
                                            "src": "12403:1:2"
                                          }
                                        ],
                                        "id": 1657,
                                        "name": "FunctionCall",
                                        "src": "12374:31:2"
                                      }
                                    ],
                                    "id": 1658,
                                    "name": "ExpressionStatement",
                                    "src": "12374:31:2"
                                  },
                                  {
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "isStructConstructorCall": false,
                                          "lValueRequested": false,
                                          "names": [
                                            null
                                          ],
                                          "type": "bool",
                                          "type_conversion": false
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_bytes32",
                                                  "typeString": "bytes32"
                                                },
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                },
                                                {
                                                  "typeIdentifier": "t_int256",
                                                  "typeString": "int256"
                                                }
                                              ],
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "execute",
                                              "referencedDeclaration": 8020,
                                              "type": "function (bytes32,address,int256) external returns (bool)"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "isConstant": false,
                                                  "isInlineArray": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "type": "contract ExecutableInterface"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "member_name": "executable",
                                                      "referencedDeclaration": 949,
                                                      "type": "contract ExecutableInterface"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "argumentTypes": null,
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 1619,
                                                          "type": "struct GenesisProtocol.Proposal memory",
                                                          "value": "tmpProposal"
                                                        },
                                                        "id": 1659,
                                                        "name": "Identifier",
                                                        "src": "12424:11:2"
                                                      }
                                                    ],
                                                    "id": 1660,
                                                    "name": "MemberAccess",
                                                    "src": "12424:22:2"
                                                  }
                                                ],
                                                "id": 1661,
                                                "name": "TupleExpression",
                                                "src": "12423:24:2"
                                              }
                                            ],
                                            "id": 1662,
                                            "name": "MemberAccess",
                                            "src": "12423:32:2"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1587,
                                              "type": "bytes32",
                                              "value": "_proposalId"
                                            },
                                            "id": 1663,
                                            "name": "Identifier",
                                            "src": "12456:11:2"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "avatar",
                                              "referencedDeclaration": 945,
                                              "type": "address"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 1619,
                                                  "type": "struct GenesisProtocol.Proposal memory",
                                                  "value": "tmpProposal"
                                                },
                                                "id": 1664,
                                                "name": "Identifier",
                                                "src": "12469:11:2"
                                              }
                                            ],
                                            "id": 1665,
                                            "name": "MemberAccess",
                                            "src": "12469:18:2"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "isStructConstructorCall": false,
                                              "lValueRequested": false,
                                              "names": [
                                                null
                                              ],
                                              "type": "int256",
                                              "type_conversion": true
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_rational_0_by_1",
                                                      "typeString": "int_const 0"
                                                    }
                                                  ],
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "type": "type(int256)",
                                                  "value": "int"
                                                },
                                                "id": 1666,
                                                "name": "ElementaryTypeNameExpression",
                                                "src": "12489:3:2"
                                              },
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "hexvalue": "30",
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "subdenomination": null,
                                                  "token": "number",
                                                  "type": "int_const 0",
                                                  "value": "0"
                                                },
                                                "id": 1667,
                                                "name": "Literal",
                                                "src": "12493:1:2"
                                              }
                                            ],
                                            "id": 1668,
                                            "name": "FunctionCall",
                                            "src": "12489:6:2"
                                          }
                                        ],
                                        "id": 1669,
                                        "name": "FunctionCall",
                                        "src": "12423:73:2"
                                      }
                                    ],
                                    "id": 1670,
                                    "name": "ExpressionStatement",
                                    "src": "12423:73:2"
                                  },
                                  {
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "=",
                                          "type": "enum GenesisProtocol.ProposalState"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "member_name": "state",
                                              "referencedDeclaration": 963,
                                              "type": "enum GenesisProtocol.ProposalState"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "type": "struct GenesisProtocol.Proposal storage ref"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 1046,
                                                      "type": "mapping(bytes32 => struct GenesisProtocol.Proposal storage ref)",
                                                      "value": "proposals"
                                                    },
                                                    "id": 1671,
                                                    "name": "Identifier",
                                                    "src": "12514:9:2"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 1587,
                                                      "type": "bytes32",
                                                      "value": "_proposalId"
                                                    },
                                                    "id": 1672,
                                                    "name": "Identifier",
                                                    "src": "12524:11:2"
                                                  }
                                                ],
                                                "id": 1673,
                                                "name": "IndexAccess",
                                                "src": "12514:22:2"
                                              }
                                            ],
                                            "id": 1674,
                                            "name": "MemberAccess",
                                            "src": "12514:28:2"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "member_name": "Closed",
                                              "referencedDeclaration": null,
                                              "type": "enum GenesisProtocol.ProposalState"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 904,
                                                  "type": "type(enum GenesisProtocol.ProposalState)",
                                                  "value": "ProposalState"
                                                },
                                                "id": 1675,
                                                "name": "Identifier",
                                                "src": "12545:13:2"
                                              }
                                            ],
                                            "id": 1676,
                                            "name": "MemberAccess",
                                            "src": "12545:20:2"
                                          }
                                        ],
                                        "id": 1677,
                                        "name": "Assignment",
                                        "src": "12514:51:2"
                                      }
                                    ],
                                    "id": 1678,
                                    "name": "ExpressionStatement",
                                    "src": "12514:51:2"
                                  },
                                  {
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "=",
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "member_name": "winningVote",
                                              "referencedDeclaration": 965,
                                              "type": "uint256"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 1613,
                                                  "type": "struct GenesisProtocol.Proposal storage pointer",
                                                  "value": "proposal"
                                                },
                                                "id": 1679,
                                                "name": "Identifier",
                                                "src": "12583:8:2"
                                              }
                                            ],
                                            "id": 1681,
                                            "name": "MemberAccess",
                                            "src": "12583:20:2"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "hexvalue": "30",
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "subdenomination": null,
                                              "token": "number",
                                              "type": "int_const 0",
                                              "value": "0"
                                            },
                                            "id": 1682,
                                            "name": "Literal",
                                            "src": "12606:1:2"
                                          }
                                        ],
                                        "id": 1683,
                                        "name": "Assignment",
                                        "src": "12583:24:2"
                                      }
                                    ],
                                    "id": 1684,
                                    "name": "ExpressionStatement",
                                    "src": "12583:24:2"
                                  },
                                  {
                                    "attributes": {
                                      "functionReturnParameters": 1594
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "74727565",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "bool",
                                          "type": "bool",
                                          "value": "true"
                                        },
                                        "id": 1685,
                                        "name": "Literal",
                                        "src": "12632:4:2"
                                      }
                                    ],
                                    "id": 1686,
                                    "name": "Return",
                                    "src": "12625:11:2"
                                  }
                                ],
                                "id": 1687,
                                "name": "Block",
                                "src": "12316:336:2"
                              }
                            ],
                            "id": 1688,
                            "name": "IfStatement",
                            "src": "12244:408:2"
                          },
                          {
                            "attributes": {
                              "falseBody": null
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": ">",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "votes",
                                          "referencedDeclaration": 973,
                                          "type": "mapping(uint256 => uint256)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1613,
                                              "type": "struct GenesisProtocol.Proposal storage pointer",
                                              "value": "proposal"
                                            },
                                            "id": 1689,
                                            "name": "Identifier",
                                            "src": "12738:8:2"
                                          }
                                        ],
                                        "id": 1690,
                                        "name": "MemberAccess",
                                        "src": "12738:14:2"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "winningVote",
                                          "referencedDeclaration": 965,
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1613,
                                              "type": "struct GenesisProtocol.Proposal storage pointer",
                                              "value": "proposal"
                                            },
                                            "id": 1691,
                                            "name": "Identifier",
                                            "src": "12753:8:2"
                                          }
                                        ],
                                        "id": 1692,
                                        "name": "MemberAccess",
                                        "src": "12753:20:2"
                                      }
                                    ],
                                    "id": 1693,
                                    "name": "IndexAccess",
                                    "src": "12738:36:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1622,
                                      "type": "uint256",
                                      "value": "executionBar"
                                    },
                                    "id": 1694,
                                    "name": "Identifier",
                                    "src": "12777:12:2"
                                  }
                                ],
                                "id": 1695,
                                "name": "BinaryOperation",
                                "src": "12738:51:2"
                              },
                              {
                                "children": [
                                  {
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "=",
                                          "type": "struct GenesisProtocol.Proposal memory"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1619,
                                              "type": "struct GenesisProtocol.Proposal memory",
                                              "value": "tmpProposal"
                                            },
                                            "id": 1696,
                                            "name": "Identifier",
                                            "src": "12809:11:2"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1613,
                                              "type": "struct GenesisProtocol.Proposal storage pointer",
                                              "value": "proposal"
                                            },
                                            "id": 1697,
                                            "name": "Identifier",
                                            "src": "12823:8:2"
                                          }
                                        ],
                                        "id": 1698,
                                        "name": "Assignment",
                                        "src": "12809:22:2"
                                      }
                                    ],
                                    "id": 1699,
                                    "name": "ExpressionStatement",
                                    "src": "12809:22:2"
                                  },
                                  {
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "isStructConstructorCall": false,
                                          "lValueRequested": false,
                                          "names": [
                                            null
                                          ],
                                          "type": "tuple()",
                                          "type_conversion": false
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_bytes32",
                                                  "typeString": "bytes32"
                                                },
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1002,
                                              "type": "function (bytes32,uint256)",
                                              "value": "ExecuteProposal"
                                            },
                                            "id": 1700,
                                            "name": "Identifier",
                                            "src": "12849:15:2"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1587,
                                              "type": "bytes32",
                                              "value": "_proposalId"
                                            },
                                            "id": 1701,
                                            "name": "Identifier",
                                            "src": "12865:11:2"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "winningVote",
                                              "referencedDeclaration": 965,
                                              "type": "uint256"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 1613,
                                                  "type": "struct GenesisProtocol.Proposal storage pointer",
                                                  "value": "proposal"
                                                },
                                                "id": 1702,
                                                "name": "Identifier",
                                                "src": "12878:8:2"
                                              }
                                            ],
                                            "id": 1703,
                                            "name": "MemberAccess",
                                            "src": "12878:20:2"
                                          }
                                        ],
                                        "id": 1704,
                                        "name": "FunctionCall",
                                        "src": "12849:50:2"
                                      }
                                    ],
                                    "id": 1705,
                                    "name": "ExpressionStatement",
                                    "src": "12849:50:2"
                                  },
                                  {
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "isStructConstructorCall": false,
                                          "lValueRequested": false,
                                          "names": [
                                            null
                                          ],
                                          "type": "bool",
                                          "type_conversion": false
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_bytes32",
                                                  "typeString": "bytes32"
                                                },
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                },
                                                {
                                                  "typeIdentifier": "t_int256",
                                                  "typeString": "int256"
                                                }
                                              ],
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "execute",
                                              "referencedDeclaration": 8020,
                                              "type": "function (bytes32,address,int256) external returns (bool)"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "isConstant": false,
                                                  "isInlineArray": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "type": "contract ExecutableInterface"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "member_name": "executable",
                                                      "referencedDeclaration": 949,
                                                      "type": "contract ExecutableInterface"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "argumentTypes": null,
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 1619,
                                                          "type": "struct GenesisProtocol.Proposal memory",
                                                          "value": "tmpProposal"
                                                        },
                                                        "id": 1706,
                                                        "name": "Identifier",
                                                        "src": "12918:11:2"
                                                      }
                                                    ],
                                                    "id": 1707,
                                                    "name": "MemberAccess",
                                                    "src": "12918:22:2"
                                                  }
                                                ],
                                                "id": 1708,
                                                "name": "TupleExpression",
                                                "src": "12917:24:2"
                                              }
                                            ],
                                            "id": 1709,
                                            "name": "MemberAccess",
                                            "src": "12917:32:2"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1587,
                                              "type": "bytes32",
                                              "value": "_proposalId"
                                            },
                                            "id": 1710,
                                            "name": "Identifier",
                                            "src": "12950:11:2"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "avatar",
                                              "referencedDeclaration": 945,
                                              "type": "address"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 1619,
                                                  "type": "struct GenesisProtocol.Proposal memory",
                                                  "value": "tmpProposal"
                                                },
                                                "id": 1711,
                                                "name": "Identifier",
                                                "src": "12963:11:2"
                                              }
                                            ],
                                            "id": 1712,
                                            "name": "MemberAccess",
                                            "src": "12963:18:2"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "isStructConstructorCall": false,
                                              "lValueRequested": false,
                                              "names": [
                                                null
                                              ],
                                              "type": "int256",
                                              "type_conversion": true
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  ],
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "type": "type(int256)",
                                                  "value": "int"
                                                },
                                                "id": 1713,
                                                "name": "ElementaryTypeNameExpression",
                                                "src": "12983:3:2"
                                              },
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "member_name": "winningVote",
                                                  "referencedDeclaration": 965,
                                                  "type": "uint256"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 1613,
                                                      "type": "struct GenesisProtocol.Proposal storage pointer",
                                                      "value": "proposal"
                                                    },
                                                    "id": 1714,
                                                    "name": "Identifier",
                                                    "src": "12987:8:2"
                                                  }
                                                ],
                                                "id": 1715,
                                                "name": "MemberAccess",
                                                "src": "12987:20:2"
                                              }
                                            ],
                                            "id": 1716,
                                            "name": "FunctionCall",
                                            "src": "12983:25:2"
                                          }
                                        ],
                                        "id": 1717,
                                        "name": "FunctionCall",
                                        "src": "12917:92:2"
                                      }
                                    ],
                                    "id": 1718,
                                    "name": "ExpressionStatement",
                                    "src": "12917:92:2"
                                  },
                                  {
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "=",
                                          "type": "enum GenesisProtocol.ProposalState"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "member_name": "state",
                                              "referencedDeclaration": 963,
                                              "type": "enum GenesisProtocol.ProposalState"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "type": "struct GenesisProtocol.Proposal storage ref"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 1046,
                                                      "type": "mapping(bytes32 => struct GenesisProtocol.Proposal storage ref)",
                                                      "value": "proposals"
                                                    },
                                                    "id": 1719,
                                                    "name": "Identifier",
                                                    "src": "13027:9:2"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 1587,
                                                      "type": "bytes32",
                                                      "value": "_proposalId"
                                                    },
                                                    "id": 1720,
                                                    "name": "Identifier",
                                                    "src": "13037:11:2"
                                                  }
                                                ],
                                                "id": 1721,
                                                "name": "IndexAccess",
                                                "src": "13027:22:2"
                                              }
                                            ],
                                            "id": 1722,
                                            "name": "MemberAccess",
                                            "src": "13027:28:2"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "member_name": "Executed",
                                              "referencedDeclaration": null,
                                              "type": "enum GenesisProtocol.ProposalState"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 904,
                                                  "type": "type(enum GenesisProtocol.ProposalState)",
                                                  "value": "ProposalState"
                                                },
                                                "id": 1723,
                                                "name": "Identifier",
                                                "src": "13058:13:2"
                                              }
                                            ],
                                            "id": 1724,
                                            "name": "MemberAccess",
                                            "src": "13058:22:2"
                                          }
                                        ],
                                        "id": 1725,
                                        "name": "Assignment",
                                        "src": "13027:53:2"
                                      }
                                    ],
                                    "id": 1726,
                                    "name": "ExpressionStatement",
                                    "src": "13027:53:2"
                                  },
                                  {
                                    "attributes": {
                                      "functionReturnParameters": 1594
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "74727565",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "bool",
                                          "type": "bool",
                                          "value": "true"
                                        },
                                        "id": 1727,
                                        "name": "Literal",
                                        "src": "13105:4:2"
                                      }
                                    ],
                                    "id": 1728,
                                    "name": "Return",
                                    "src": "13098:11:2"
                                  }
                                ],
                                "id": 1729,
                                "name": "Block",
                                "src": "12791:336:2"
                              }
                            ],
                            "id": 1730,
                            "name": "IfStatement",
                            "src": "12734:393:2"
                          },
                          {
                            "attributes": {
                              "falseBody": null
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "bool",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        2126
                                      ],
                                      "referencedDeclaration": 2126,
                                      "type": "function (bytes32) view returns (bool)",
                                      "value": "shouldBoost"
                                    },
                                    "id": 1731,
                                    "name": "Identifier",
                                    "src": "13245:11:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1587,
                                      "type": "bytes32",
                                      "value": "_proposalId"
                                    },
                                    "id": 1732,
                                    "name": "Identifier",
                                    "src": "13257:11:2"
                                  }
                                ],
                                "id": 1733,
                                "name": "FunctionCall",
                                "src": "13245:24:2"
                              },
                              {
                                "children": [
                                  {
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "=",
                                          "type": "enum GenesisProtocol.ProposalState"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "member_name": "state",
                                              "referencedDeclaration": 963,
                                              "type": "enum GenesisProtocol.ProposalState"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 1613,
                                                  "type": "struct GenesisProtocol.Proposal storage pointer",
                                                  "value": "proposal"
                                                },
                                                "id": 1734,
                                                "name": "Identifier",
                                                "src": "13345:8:2"
                                              }
                                            ],
                                            "id": 1736,
                                            "name": "MemberAccess",
                                            "src": "13345:14:2"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "member_name": "Boosted",
                                              "referencedDeclaration": null,
                                              "type": "enum GenesisProtocol.ProposalState"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 904,
                                                  "type": "type(enum GenesisProtocol.ProposalState)",
                                                  "value": "ProposalState"
                                                },
                                                "id": 1737,
                                                "name": "Identifier",
                                                "src": "13362:13:2"
                                              }
                                            ],
                                            "id": 1738,
                                            "name": "MemberAccess",
                                            "src": "13362:21:2"
                                          }
                                        ],
                                        "id": 1739,
                                        "name": "Assignment",
                                        "src": "13345:38:2"
                                      }
                                    ],
                                    "id": 1740,
                                    "name": "ExpressionStatement",
                                    "src": "13345:38:2"
                                  },
                                  {
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "=",
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "member_name": "boostedPhaseTime",
                                              "referencedDeclaration": 961,
                                              "type": "uint256"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 1613,
                                                  "type": "struct GenesisProtocol.Proposal storage pointer",
                                                  "value": "proposal"
                                                },
                                                "id": 1741,
                                                "name": "Identifier",
                                                "src": "13471:8:2"
                                              }
                                            ],
                                            "id": 1743,
                                            "name": "MemberAccess",
                                            "src": "13471:25:2"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 12013,
                                              "type": "uint256",
                                              "value": "now"
                                            },
                                            "id": 1744,
                                            "name": "Identifier",
                                            "src": "13499:3:2"
                                          }
                                        ],
                                        "id": 1745,
                                        "name": "Assignment",
                                        "src": "13471:31:2"
                                      }
                                    ],
                                    "id": 1746,
                                    "name": "ExpressionStatement",
                                    "src": "13471:31:2"
                                  },
                                  {
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "++",
                                          "prefix": false,
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "type": "uint256"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 1055,
                                                  "type": "mapping(address => uint256)",
                                                  "value": "orgBoostedProposalsCnt"
                                                },
                                                "id": 1747,
                                                "name": "Identifier",
                                                "src": "13520:22:2"
                                              },
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "member_name": "avatar",
                                                  "referencedDeclaration": 945,
                                                  "type": "address"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 1613,
                                                      "type": "struct GenesisProtocol.Proposal storage pointer",
                                                      "value": "proposal"
                                                    },
                                                    "id": 1748,
                                                    "name": "Identifier",
                                                    "src": "13543:8:2"
                                                  }
                                                ],
                                                "id": 1749,
                                                "name": "MemberAccess",
                                                "src": "13543:15:2"
                                              }
                                            ],
                                            "id": 1750,
                                            "name": "IndexAccess",
                                            "src": "13520:39:2"
                                          }
                                        ],
                                        "id": 1751,
                                        "name": "UnaryOperation",
                                        "src": "13520:41:2"
                                      }
                                    ],
                                    "id": 1752,
                                    "name": "ExpressionStatement",
                                    "src": "13520:41:2"
                                  }
                                ],
                                "id": 1753,
                                "name": "Block",
                                "src": "13271:307:2"
                              }
                            ],
                            "id": 1754,
                            "name": "IfStatement",
                            "src": "13240:338:2"
                          }
                        ],
                        "id": 1755,
                        "name": "Block",
                        "src": "12164:1427:2"
                      }
                    ],
                    "id": 1756,
                    "name": "IfStatement",
                    "src": "12116:1475:2"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "||",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_enum$_ProposalState_$904",
                                    "typeString": "enum GenesisProtocol.ProposalState"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "==",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "state",
                                      "referencedDeclaration": 963,
                                      "type": "enum GenesisProtocol.ProposalState"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1613,
                                          "type": "struct GenesisProtocol.Proposal storage pointer",
                                          "value": "proposal"
                                        },
                                        "id": 1757,
                                        "name": "Identifier",
                                        "src": "13605:8:2"
                                      }
                                    ],
                                    "id": 1758,
                                    "name": "MemberAccess",
                                    "src": "13605:14:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "member_name": "Boosted",
                                      "referencedDeclaration": null,
                                      "type": "enum GenesisProtocol.ProposalState"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 904,
                                          "type": "type(enum GenesisProtocol.ProposalState)",
                                          "value": "ProposalState"
                                        },
                                        "id": 1759,
                                        "name": "Identifier",
                                        "src": "13623:13:2"
                                      }
                                    ],
                                    "id": 1760,
                                    "name": "MemberAccess",
                                    "src": "13623:21:2"
                                  }
                                ],
                                "id": 1761,
                                "name": "BinaryOperation",
                                "src": "13605:39:2"
                              }
                            ],
                            "id": 1762,
                            "name": "TupleExpression",
                            "src": "13604:41:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_enum$_ProposalState_$904",
                                    "typeString": "enum GenesisProtocol.ProposalState"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "==",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "state",
                                      "referencedDeclaration": 963,
                                      "type": "enum GenesisProtocol.ProposalState"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1613,
                                          "type": "struct GenesisProtocol.Proposal storage pointer",
                                          "value": "proposal"
                                        },
                                        "id": 1763,
                                        "name": "Identifier",
                                        "src": "13662:8:2"
                                      }
                                    ],
                                    "id": 1764,
                                    "name": "MemberAccess",
                                    "src": "13662:14:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "member_name": "QuietEndingPeriod",
                                      "referencedDeclaration": null,
                                      "type": "enum GenesisProtocol.ProposalState"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 904,
                                          "type": "type(enum GenesisProtocol.ProposalState)",
                                          "value": "ProposalState"
                                        },
                                        "id": 1765,
                                        "name": "Identifier",
                                        "src": "13680:13:2"
                                      }
                                    ],
                                    "id": 1766,
                                    "name": "MemberAccess",
                                    "src": "13680:31:2"
                                  }
                                ],
                                "id": 1767,
                                "name": "BinaryOperation",
                                "src": "13662:49:2"
                              }
                            ],
                            "id": 1768,
                            "name": "TupleExpression",
                            "src": "13661:51:2"
                          }
                        ],
                        "id": 1769,
                        "name": "BinaryOperation",
                        "src": "13604:108:2"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "falseBody": null
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": ">=",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "-",
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 12013,
                                              "type": "uint256",
                                              "value": "now"
                                            },
                                            "id": 1770,
                                            "name": "Identifier",
                                            "src": "13799:3:2"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "boostedPhaseTime",
                                              "referencedDeclaration": 961,
                                              "type": "uint256"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 1613,
                                                  "type": "struct GenesisProtocol.Proposal storage pointer",
                                                  "value": "proposal"
                                                },
                                                "id": 1771,
                                                "name": "Identifier",
                                                "src": "13805:8:2"
                                              }
                                            ],
                                            "id": 1772,
                                            "name": "MemberAccess",
                                            "src": "13805:25:2"
                                          }
                                        ],
                                        "id": 1773,
                                        "name": "BinaryOperation",
                                        "src": "13799:31:2"
                                      }
                                    ],
                                    "id": 1774,
                                    "name": "TupleExpression",
                                    "src": "13798:33:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "boostedVotePeriodLimit",
                                      "referencedDeclaration": 969,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1613,
                                          "type": "struct GenesisProtocol.Proposal storage pointer",
                                          "value": "proposal"
                                        },
                                        "id": 1775,
                                        "name": "Identifier",
                                        "src": "13835:8:2"
                                      }
                                    ],
                                    "id": 1776,
                                    "name": "MemberAccess",
                                    "src": "13835:31:2"
                                  }
                                ],
                                "id": 1777,
                                "name": "BinaryOperation",
                                "src": "13798:68:2"
                              },
                              {
                                "children": [
                                  {
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "=",
                                          "type": "struct GenesisProtocol.Proposal memory"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1619,
                                              "type": "struct GenesisProtocol.Proposal memory",
                                              "value": "tmpProposal"
                                            },
                                            "id": 1778,
                                            "name": "Identifier",
                                            "src": "13886:11:2"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1613,
                                              "type": "struct GenesisProtocol.Proposal storage pointer",
                                              "value": "proposal"
                                            },
                                            "id": 1779,
                                            "name": "Identifier",
                                            "src": "13900:8:2"
                                          }
                                        ],
                                        "id": 1780,
                                        "name": "Assignment",
                                        "src": "13886:22:2"
                                      }
                                    ],
                                    "id": 1781,
                                    "name": "ExpressionStatement",
                                    "src": "13886:22:2"
                                  },
                                  {
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "isStructConstructorCall": false,
                                          "lValueRequested": false,
                                          "names": [
                                            null
                                          ],
                                          "type": "tuple()",
                                          "type_conversion": false
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_bytes32",
                                                  "typeString": "bytes32"
                                                },
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1002,
                                              "type": "function (bytes32,uint256)",
                                              "value": "ExecuteProposal"
                                            },
                                            "id": 1782,
                                            "name": "Identifier",
                                            "src": "13926:15:2"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1587,
                                              "type": "bytes32",
                                              "value": "_proposalId"
                                            },
                                            "id": 1783,
                                            "name": "Identifier",
                                            "src": "13942:11:2"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "winningVote",
                                              "referencedDeclaration": 965,
                                              "type": "uint256"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 1613,
                                                  "type": "struct GenesisProtocol.Proposal storage pointer",
                                                  "value": "proposal"
                                                },
                                                "id": 1784,
                                                "name": "Identifier",
                                                "src": "13955:8:2"
                                              }
                                            ],
                                            "id": 1785,
                                            "name": "MemberAccess",
                                            "src": "13955:20:2"
                                          }
                                        ],
                                        "id": 1786,
                                        "name": "FunctionCall",
                                        "src": "13926:50:2"
                                      }
                                    ],
                                    "id": 1787,
                                    "name": "ExpressionStatement",
                                    "src": "13926:50:2"
                                  },
                                  {
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "isStructConstructorCall": false,
                                          "lValueRequested": false,
                                          "names": [
                                            null
                                          ],
                                          "type": "bool",
                                          "type_conversion": false
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_bytes32",
                                                  "typeString": "bytes32"
                                                },
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                },
                                                {
                                                  "typeIdentifier": "t_int256",
                                                  "typeString": "int256"
                                                }
                                              ],
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "execute",
                                              "referencedDeclaration": 8020,
                                              "type": "function (bytes32,address,int256) external returns (bool)"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "isConstant": false,
                                                  "isInlineArray": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "type": "contract ExecutableInterface"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "member_name": "executable",
                                                      "referencedDeclaration": 949,
                                                      "type": "contract ExecutableInterface"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "argumentTypes": null,
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 1619,
                                                          "type": "struct GenesisProtocol.Proposal memory",
                                                          "value": "tmpProposal"
                                                        },
                                                        "id": 1788,
                                                        "name": "Identifier",
                                                        "src": "13995:11:2"
                                                      }
                                                    ],
                                                    "id": 1789,
                                                    "name": "MemberAccess",
                                                    "src": "13995:22:2"
                                                  }
                                                ],
                                                "id": 1790,
                                                "name": "TupleExpression",
                                                "src": "13994:24:2"
                                              }
                                            ],
                                            "id": 1791,
                                            "name": "MemberAccess",
                                            "src": "13994:32:2"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1587,
                                              "type": "bytes32",
                                              "value": "_proposalId"
                                            },
                                            "id": 1792,
                                            "name": "Identifier",
                                            "src": "14027:11:2"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "avatar",
                                              "referencedDeclaration": 945,
                                              "type": "address"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 1619,
                                                  "type": "struct GenesisProtocol.Proposal memory",
                                                  "value": "tmpProposal"
                                                },
                                                "id": 1793,
                                                "name": "Identifier",
                                                "src": "14040:11:2"
                                              }
                                            ],
                                            "id": 1794,
                                            "name": "MemberAccess",
                                            "src": "14040:18:2"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "isStructConstructorCall": false,
                                              "lValueRequested": false,
                                              "names": [
                                                null
                                              ],
                                              "type": "int256",
                                              "type_conversion": true
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  ],
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "type": "type(int256)",
                                                  "value": "int"
                                                },
                                                "id": 1795,
                                                "name": "ElementaryTypeNameExpression",
                                                "src": "14060:3:2"
                                              },
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "member_name": "winningVote",
                                                  "referencedDeclaration": 965,
                                                  "type": "uint256"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 1613,
                                                      "type": "struct GenesisProtocol.Proposal storage pointer",
                                                      "value": "proposal"
                                                    },
                                                    "id": 1796,
                                                    "name": "Identifier",
                                                    "src": "14064:8:2"
                                                  }
                                                ],
                                                "id": 1797,
                                                "name": "MemberAccess",
                                                "src": "14064:20:2"
                                              }
                                            ],
                                            "id": 1798,
                                            "name": "FunctionCall",
                                            "src": "14060:25:2"
                                          }
                                        ],
                                        "id": 1799,
                                        "name": "FunctionCall",
                                        "src": "13994:92:2"
                                      }
                                    ],
                                    "id": 1800,
                                    "name": "ExpressionStatement",
                                    "src": "13994:92:2"
                                  },
                                  {
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "=",
                                          "type": "enum GenesisProtocol.ProposalState"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "member_name": "state",
                                              "referencedDeclaration": 963,
                                              "type": "enum GenesisProtocol.ProposalState"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "type": "struct GenesisProtocol.Proposal storage ref"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 1046,
                                                      "type": "mapping(bytes32 => struct GenesisProtocol.Proposal storage ref)",
                                                      "value": "proposals"
                                                    },
                                                    "id": 1801,
                                                    "name": "Identifier",
                                                    "src": "14104:9:2"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 1587,
                                                      "type": "bytes32",
                                                      "value": "_proposalId"
                                                    },
                                                    "id": 1802,
                                                    "name": "Identifier",
                                                    "src": "14114:11:2"
                                                  }
                                                ],
                                                "id": 1803,
                                                "name": "IndexAccess",
                                                "src": "14104:22:2"
                                              }
                                            ],
                                            "id": 1804,
                                            "name": "MemberAccess",
                                            "src": "14104:28:2"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "member_name": "Executed",
                                              "referencedDeclaration": null,
                                              "type": "enum GenesisProtocol.ProposalState"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 904,
                                                  "type": "type(enum GenesisProtocol.ProposalState)",
                                                  "value": "ProposalState"
                                                },
                                                "id": 1805,
                                                "name": "Identifier",
                                                "src": "14135:13:2"
                                              }
                                            ],
                                            "id": 1806,
                                            "name": "MemberAccess",
                                            "src": "14135:22:2"
                                          }
                                        ],
                                        "id": 1807,
                                        "name": "Assignment",
                                        "src": "14104:53:2"
                                      }
                                    ],
                                    "id": 1808,
                                    "name": "ExpressionStatement",
                                    "src": "14104:53:2"
                                  },
                                  {
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "--",
                                          "prefix": false,
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "type": "uint256"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 1055,
                                                  "type": "mapping(address => uint256)",
                                                  "value": "orgBoostedProposalsCnt"
                                                },
                                                "id": 1809,
                                                "name": "Identifier",
                                                "src": "14175:22:2"
                                              },
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "member_name": "avatar",
                                                  "referencedDeclaration": 945,
                                                  "type": "address"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 1619,
                                                      "type": "struct GenesisProtocol.Proposal memory",
                                                      "value": "tmpProposal"
                                                    },
                                                    "id": 1810,
                                                    "name": "Identifier",
                                                    "src": "14198:11:2"
                                                  }
                                                ],
                                                "id": 1811,
                                                "name": "MemberAccess",
                                                "src": "14198:18:2"
                                              }
                                            ],
                                            "id": 1812,
                                            "name": "IndexAccess",
                                            "src": "14175:42:2"
                                          }
                                        ],
                                        "id": 1813,
                                        "name": "UnaryOperation",
                                        "src": "14175:44:2"
                                      }
                                    ],
                                    "id": 1814,
                                    "name": "ExpressionStatement",
                                    "src": "14175:44:2"
                                  },
                                  {
                                    "attributes": {
                                      "functionReturnParameters": 1594
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "74727565",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "bool",
                                          "type": "bool",
                                          "value": "true"
                                        },
                                        "id": 1815,
                                        "name": "Literal",
                                        "src": "14244:4:2"
                                      }
                                    ],
                                    "id": 1816,
                                    "name": "Return",
                                    "src": "14237:11:2"
                                  }
                                ],
                                "id": 1817,
                                "name": "Block",
                                "src": "13868:396:2"
                              }
                            ],
                            "id": 1818,
                            "name": "IfStatement",
                            "src": "13794:470:2"
                          },
                          {
                            "attributes": {
                              "falseBody": null
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": ">",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "votes",
                                          "referencedDeclaration": 973,
                                          "type": "mapping(uint256 => uint256)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1613,
                                              "type": "struct GenesisProtocol.Proposal storage pointer",
                                              "value": "proposal"
                                            },
                                            "id": 1819,
                                            "name": "Identifier",
                                            "src": "14352:8:2"
                                          }
                                        ],
                                        "id": 1820,
                                        "name": "MemberAccess",
                                        "src": "14352:14:2"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "winningVote",
                                          "referencedDeclaration": 965,
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1613,
                                              "type": "struct GenesisProtocol.Proposal storage pointer",
                                              "value": "proposal"
                                            },
                                            "id": 1821,
                                            "name": "Identifier",
                                            "src": "14367:8:2"
                                          }
                                        ],
                                        "id": 1822,
                                        "name": "MemberAccess",
                                        "src": "14367:20:2"
                                      }
                                    ],
                                    "id": 1823,
                                    "name": "IndexAccess",
                                    "src": "14352:36:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1622,
                                      "type": "uint256",
                                      "value": "executionBar"
                                    },
                                    "id": 1824,
                                    "name": "Identifier",
                                    "src": "14391:12:2"
                                  }
                                ],
                                "id": 1825,
                                "name": "BinaryOperation",
                                "src": "14352:51:2"
                              },
                              {
                                "children": [
                                  {
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "=",
                                          "type": "struct GenesisProtocol.Proposal memory"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1619,
                                              "type": "struct GenesisProtocol.Proposal memory",
                                              "value": "tmpProposal"
                                            },
                                            "id": 1826,
                                            "name": "Identifier",
                                            "src": "14423:11:2"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1613,
                                              "type": "struct GenesisProtocol.Proposal storage pointer",
                                              "value": "proposal"
                                            },
                                            "id": 1827,
                                            "name": "Identifier",
                                            "src": "14437:8:2"
                                          }
                                        ],
                                        "id": 1828,
                                        "name": "Assignment",
                                        "src": "14423:22:2"
                                      }
                                    ],
                                    "id": 1829,
                                    "name": "ExpressionStatement",
                                    "src": "14423:22:2"
                                  },
                                  {
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "isStructConstructorCall": false,
                                          "lValueRequested": false,
                                          "names": [
                                            null
                                          ],
                                          "type": "tuple()",
                                          "type_conversion": false
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_bytes32",
                                                  "typeString": "bytes32"
                                                },
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1002,
                                              "type": "function (bytes32,uint256)",
                                              "value": "ExecuteProposal"
                                            },
                                            "id": 1830,
                                            "name": "Identifier",
                                            "src": "14463:15:2"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1587,
                                              "type": "bytes32",
                                              "value": "_proposalId"
                                            },
                                            "id": 1831,
                                            "name": "Identifier",
                                            "src": "14479:11:2"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "winningVote",
                                              "referencedDeclaration": 965,
                                              "type": "uint256"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 1613,
                                                  "type": "struct GenesisProtocol.Proposal storage pointer",
                                                  "value": "proposal"
                                                },
                                                "id": 1832,
                                                "name": "Identifier",
                                                "src": "14492:8:2"
                                              }
                                            ],
                                            "id": 1833,
                                            "name": "MemberAccess",
                                            "src": "14492:20:2"
                                          }
                                        ],
                                        "id": 1834,
                                        "name": "FunctionCall",
                                        "src": "14463:50:2"
                                      }
                                    ],
                                    "id": 1835,
                                    "name": "ExpressionStatement",
                                    "src": "14463:50:2"
                                  },
                                  {
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "isStructConstructorCall": false,
                                          "lValueRequested": false,
                                          "names": [
                                            null
                                          ],
                                          "type": "bool",
                                          "type_conversion": false
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_bytes32",
                                                  "typeString": "bytes32"
                                                },
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                },
                                                {
                                                  "typeIdentifier": "t_int256",
                                                  "typeString": "int256"
                                                }
                                              ],
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "execute",
                                              "referencedDeclaration": 8020,
                                              "type": "function (bytes32,address,int256) external returns (bool)"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "isConstant": false,
                                                  "isInlineArray": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "type": "contract ExecutableInterface"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "member_name": "executable",
                                                      "referencedDeclaration": 949,
                                                      "type": "contract ExecutableInterface"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "argumentTypes": null,
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 1619,
                                                          "type": "struct GenesisProtocol.Proposal memory",
                                                          "value": "tmpProposal"
                                                        },
                                                        "id": 1836,
                                                        "name": "Identifier",
                                                        "src": "14532:11:2"
                                                      }
                                                    ],
                                                    "id": 1837,
                                                    "name": "MemberAccess",
                                                    "src": "14532:22:2"
                                                  }
                                                ],
                                                "id": 1838,
                                                "name": "TupleExpression",
                                                "src": "14531:24:2"
                                              }
                                            ],
                                            "id": 1839,
                                            "name": "MemberAccess",
                                            "src": "14531:32:2"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1587,
                                              "type": "bytes32",
                                              "value": "_proposalId"
                                            },
                                            "id": 1840,
                                            "name": "Identifier",
                                            "src": "14564:11:2"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "avatar",
                                              "referencedDeclaration": 945,
                                              "type": "address"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 1619,
                                                  "type": "struct GenesisProtocol.Proposal memory",
                                                  "value": "tmpProposal"
                                                },
                                                "id": 1841,
                                                "name": "Identifier",
                                                "src": "14577:11:2"
                                              }
                                            ],
                                            "id": 1842,
                                            "name": "MemberAccess",
                                            "src": "14577:18:2"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "isStructConstructorCall": false,
                                              "lValueRequested": false,
                                              "names": [
                                                null
                                              ],
                                              "type": "int256",
                                              "type_conversion": true
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  ],
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "type": "type(int256)",
                                                  "value": "int"
                                                },
                                                "id": 1843,
                                                "name": "ElementaryTypeNameExpression",
                                                "src": "14597:3:2"
                                              },
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "member_name": "winningVote",
                                                  "referencedDeclaration": 965,
                                                  "type": "uint256"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 1613,
                                                      "type": "struct GenesisProtocol.Proposal storage pointer",
                                                      "value": "proposal"
                                                    },
                                                    "id": 1844,
                                                    "name": "Identifier",
                                                    "src": "14601:8:2"
                                                  }
                                                ],
                                                "id": 1845,
                                                "name": "MemberAccess",
                                                "src": "14601:20:2"
                                              }
                                            ],
                                            "id": 1846,
                                            "name": "FunctionCall",
                                            "src": "14597:25:2"
                                          }
                                        ],
                                        "id": 1847,
                                        "name": "FunctionCall",
                                        "src": "14531:92:2"
                                      }
                                    ],
                                    "id": 1848,
                                    "name": "ExpressionStatement",
                                    "src": "14531:92:2"
                                  },
                                  {
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "=",
                                          "type": "enum GenesisProtocol.ProposalState"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "member_name": "state",
                                              "referencedDeclaration": 963,
                                              "type": "enum GenesisProtocol.ProposalState"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 1613,
                                                  "type": "struct GenesisProtocol.Proposal storage pointer",
                                                  "value": "proposal"
                                                },
                                                "id": 1849,
                                                "name": "Identifier",
                                                "src": "14641:8:2"
                                              }
                                            ],
                                            "id": 1851,
                                            "name": "MemberAccess",
                                            "src": "14641:14:2"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "member_name": "Executed",
                                              "referencedDeclaration": null,
                                              "type": "enum GenesisProtocol.ProposalState"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 904,
                                                  "type": "type(enum GenesisProtocol.ProposalState)",
                                                  "value": "ProposalState"
                                                },
                                                "id": 1852,
                                                "name": "Identifier",
                                                "src": "14658:13:2"
                                              }
                                            ],
                                            "id": 1853,
                                            "name": "MemberAccess",
                                            "src": "14658:22:2"
                                          }
                                        ],
                                        "id": 1854,
                                        "name": "Assignment",
                                        "src": "14641:39:2"
                                      }
                                    ],
                                    "id": 1855,
                                    "name": "ExpressionStatement",
                                    "src": "14641:39:2"
                                  },
                                  {
                                    "attributes": {
                                      "functionReturnParameters": 1594
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "74727565",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "bool",
                                          "type": "bool",
                                          "value": "true"
                                        },
                                        "id": 1856,
                                        "name": "Literal",
                                        "src": "14705:4:2"
                                      }
                                    ],
                                    "id": 1857,
                                    "name": "Return",
                                    "src": "14698:11:2"
                                  }
                                ],
                                "id": 1858,
                                "name": "Block",
                                "src": "14405:319:2"
                              }
                            ],
                            "id": 1859,
                            "name": "IfStatement",
                            "src": "14348:376:2"
                          }
                        ],
                        "id": 1860,
                        "name": "Block",
                        "src": "13714:1019:2"
                      }
                    ],
                    "id": 1861,
                    "name": "IfStatement",
                    "src": "13600:1133:2"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 1594
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "hexvalue": "66616c7365",
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "subdenomination": null,
                          "token": "bool",
                          "type": "bool",
                          "value": "false"
                        },
                        "id": 1862,
                        "name": "Literal",
                        "src": "14749:5:2"
                      }
                    ],
                    "id": 1863,
                    "name": "Return",
                    "src": "14742:12:2"
                  }
                ],
                "id": 1864,
                "name": "Block",
                "src": "11720:3041:2"
              }
            ],
            "id": 1865,
            "name": "FunctionDefinition",
            "src": "11640:3121:2"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "redeem",
              "payable": false,
              "scope": 3292,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_proposalId",
                      "scope": 2065,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 1866,
                        "name": "ElementaryTypeName",
                        "src": "15149:7:2"
                      }
                    ],
                    "id": 1867,
                    "name": "VariableDeclaration",
                    "src": "15149:19:2"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_beneficiary",
                      "scope": 2065,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 1868,
                        "name": "ElementaryTypeName",
                        "src": "15169:7:2"
                      }
                    ],
                    "id": 1869,
                    "name": "VariableDeclaration",
                    "src": "15169:20:2"
                  }
                ],
                "id": 1870,
                "name": "ParameterList",
                "src": "15148:42:2"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 2065,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 1871,
                        "name": "ElementaryTypeName",
                        "src": "15206:4:2"
                      }
                    ],
                    "id": 1872,
                    "name": "VariableDeclaration",
                    "src": "15206:4:2"
                  }
                ],
                "id": 1873,
                "name": "ParameterList",
                "src": "15205:6:2"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        1875
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "proposal",
                          "scope": 2065,
                          "stateVariable": false,
                          "storageLocation": "storage",
                          "type": "struct GenesisProtocol.Proposal storage pointer",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "Proposal",
                              "referencedDeclaration": 986,
                              "type": "struct GenesisProtocol.Proposal storage pointer"
                            },
                            "id": 1874,
                            "name": "UserDefinedTypeName",
                            "src": "15222:8:2"
                          }
                        ],
                        "id": 1875,
                        "name": "VariableDeclaration",
                        "src": "15222:25:2"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "struct GenesisProtocol.Proposal storage ref"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1046,
                              "type": "mapping(bytes32 => struct GenesisProtocol.Proposal storage ref)",
                              "value": "proposals"
                            },
                            "id": 1876,
                            "name": "Identifier",
                            "src": "15250:9:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1867,
                              "type": "bytes32",
                              "value": "_proposalId"
                            },
                            "id": 1877,
                            "name": "Identifier",
                            "src": "15260:11:2"
                          }
                        ],
                        "id": 1878,
                        "name": "IndexAccess",
                        "src": "15250:22:2"
                      }
                    ],
                    "id": 1879,
                    "name": "VariableDeclarationStatement",
                    "src": "15222:50:2"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12014,
                              "type": "function (bool) pure",
                              "value": "require"
                            },
                            "id": 1880,
                            "name": "Identifier",
                            "src": "15282:7:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "||",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_enum$_ProposalState_$904",
                                        "typeString": "enum GenesisProtocol.ProposalState"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "==",
                                      "type": "bool"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "state",
                                          "referencedDeclaration": 963,
                                          "type": "enum GenesisProtocol.ProposalState"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1875,
                                              "type": "struct GenesisProtocol.Proposal storage pointer",
                                              "value": "proposal"
                                            },
                                            "id": 1881,
                                            "name": "Identifier",
                                            "src": "15291:8:2"
                                          }
                                        ],
                                        "id": 1882,
                                        "name": "MemberAccess",
                                        "src": "15291:14:2"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "member_name": "Executed",
                                          "referencedDeclaration": null,
                                          "type": "enum GenesisProtocol.ProposalState"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 904,
                                              "type": "type(enum GenesisProtocol.ProposalState)",
                                              "value": "ProposalState"
                                            },
                                            "id": 1883,
                                            "name": "Identifier",
                                            "src": "15309:13:2"
                                          }
                                        ],
                                        "id": 1884,
                                        "name": "MemberAccess",
                                        "src": "15309:22:2"
                                      }
                                    ],
                                    "id": 1885,
                                    "name": "BinaryOperation",
                                    "src": "15291:40:2"
                                  }
                                ],
                                "id": 1886,
                                "name": "TupleExpression",
                                "src": "15290:42:2"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_enum$_ProposalState_$904",
                                        "typeString": "enum GenesisProtocol.ProposalState"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "==",
                                      "type": "bool"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "state",
                                          "referencedDeclaration": 963,
                                          "type": "enum GenesisProtocol.ProposalState"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1875,
                                              "type": "struct GenesisProtocol.Proposal storage pointer",
                                              "value": "proposal"
                                            },
                                            "id": 1887,
                                            "name": "Identifier",
                                            "src": "15337:8:2"
                                          }
                                        ],
                                        "id": 1888,
                                        "name": "MemberAccess",
                                        "src": "15337:14:2"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "member_name": "Closed",
                                          "referencedDeclaration": null,
                                          "type": "enum GenesisProtocol.ProposalState"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 904,
                                              "type": "type(enum GenesisProtocol.ProposalState)",
                                              "value": "ProposalState"
                                            },
                                            "id": 1889,
                                            "name": "Identifier",
                                            "src": "15355:13:2"
                                          }
                                        ],
                                        "id": 1890,
                                        "name": "MemberAccess",
                                        "src": "15355:20:2"
                                      }
                                    ],
                                    "id": 1891,
                                    "name": "BinaryOperation",
                                    "src": "15337:38:2"
                                  }
                                ],
                                "id": 1892,
                                "name": "TupleExpression",
                                "src": "15336:40:2"
                              }
                            ],
                            "id": 1893,
                            "name": "BinaryOperation",
                            "src": "15290:86:2"
                          }
                        ],
                        "id": 1894,
                        "name": "FunctionCall",
                        "src": "15282:95:2"
                      }
                    ],
                    "id": 1895,
                    "name": "ExpressionStatement",
                    "src": "15282:95:2"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        null
                      ],
                      "initialValue": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "amount",
                          "scope": 2065,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint",
                              "type": "uint256"
                            },
                            "id": 1896,
                            "name": "ElementaryTypeName",
                            "src": "15387:4:2"
                          }
                        ],
                        "id": 1897,
                        "name": "VariableDeclaration",
                        "src": "15387:11:2"
                      }
                    ],
                    "id": 1898,
                    "name": "VariableDeclarationStatement",
                    "src": "15387:11:2"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        null
                      ],
                      "initialValue": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "reputation",
                          "scope": 2065,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "int256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "int",
                              "type": "int256"
                            },
                            "id": 1899,
                            "name": "ElementaryTypeName",
                            "src": "15408:3:2"
                          }
                        ],
                        "id": 1900,
                        "name": "VariableDeclaration",
                        "src": "15408:14:2"
                      }
                    ],
                    "id": 1901,
                    "name": "VariableDeclarationStatement",
                    "src": "15408:14:2"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "&&",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": ">",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "amount",
                                      "referencedDeclaration": 942,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "type": "struct GenesisProtocol.Staker storage ref"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "stakers",
                                              "referencedDeclaration": 985,
                                              "type": "mapping(address => struct GenesisProtocol.Staker storage ref)"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 1875,
                                                  "type": "struct GenesisProtocol.Proposal storage pointer",
                                                  "value": "proposal"
                                                },
                                                "id": 1902,
                                                "name": "Identifier",
                                                "src": "15437:8:2"
                                              }
                                            ],
                                            "id": 1903,
                                            "name": "MemberAccess",
                                            "src": "15437:16:2"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1869,
                                              "type": "address",
                                              "value": "_beneficiary"
                                            },
                                            "id": 1904,
                                            "name": "Identifier",
                                            "src": "15454:12:2"
                                          }
                                        ],
                                        "id": 1905,
                                        "name": "IndexAccess",
                                        "src": "15437:30:2"
                                      }
                                    ],
                                    "id": 1906,
                                    "name": "MemberAccess",
                                    "src": "15437:37:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "30",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 0",
                                      "value": "0"
                                    },
                                    "id": 1907,
                                    "name": "Literal",
                                    "src": "15475:1:2"
                                  }
                                ],
                                "id": 1908,
                                "name": "BinaryOperation",
                                "src": "15437:39:2"
                              }
                            ],
                            "id": 1909,
                            "name": "TupleExpression",
                            "src": "15436:41:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "==",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "vote",
                                      "referencedDeclaration": 940,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "type": "struct GenesisProtocol.Staker storage ref"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "stakers",
                                              "referencedDeclaration": 985,
                                              "type": "mapping(address => struct GenesisProtocol.Staker storage ref)"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 1875,
                                                  "type": "struct GenesisProtocol.Proposal storage pointer",
                                                  "value": "proposal"
                                                },
                                                "id": 1910,
                                                "name": "Identifier",
                                                "src": "15495:8:2"
                                              }
                                            ],
                                            "id": 1911,
                                            "name": "MemberAccess",
                                            "src": "15495:16:2"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1869,
                                              "type": "address",
                                              "value": "_beneficiary"
                                            },
                                            "id": 1912,
                                            "name": "Identifier",
                                            "src": "15512:12:2"
                                          }
                                        ],
                                        "id": 1913,
                                        "name": "IndexAccess",
                                        "src": "15495:30:2"
                                      }
                                    ],
                                    "id": 1914,
                                    "name": "MemberAccess",
                                    "src": "15495:35:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "winningVote",
                                      "referencedDeclaration": 965,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "type": "struct GenesisProtocol.Proposal storage ref"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1046,
                                              "type": "mapping(bytes32 => struct GenesisProtocol.Proposal storage ref)",
                                              "value": "proposals"
                                            },
                                            "id": 1915,
                                            "name": "Identifier",
                                            "src": "15534:9:2"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1867,
                                              "type": "bytes32",
                                              "value": "_proposalId"
                                            },
                                            "id": 1916,
                                            "name": "Identifier",
                                            "src": "15544:11:2"
                                          }
                                        ],
                                        "id": 1917,
                                        "name": "IndexAccess",
                                        "src": "15534:22:2"
                                      }
                                    ],
                                    "id": 1918,
                                    "name": "MemberAccess",
                                    "src": "15534:34:2"
                                  }
                                ],
                                "id": 1919,
                                "name": "BinaryOperation",
                                "src": "15495:73:2"
                              }
                            ],
                            "id": 1920,
                            "name": "TupleExpression",
                            "src": "15494:75:2"
                          }
                        ],
                        "id": 1921,
                        "name": "BinaryOperation",
                        "src": "15436:133:2"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "=",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1897,
                                      "type": "uint256",
                                      "value": "amount"
                                    },
                                    "id": 1922,
                                    "name": "Identifier",
                                    "src": "15609:6:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "type": "uint256",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            },
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "overloadedDeclarations": [
                                            2322
                                          ],
                                          "referencedDeclaration": 2322,
                                          "type": "function (bytes32,address) view returns (uint256)",
                                          "value": "redeemAmount"
                                        },
                                        "id": 1923,
                                        "name": "Identifier",
                                        "src": "15618:12:2"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1867,
                                          "type": "bytes32",
                                          "value": "_proposalId"
                                        },
                                        "id": 1924,
                                        "name": "Identifier",
                                        "src": "15631:11:2"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1869,
                                          "type": "address",
                                          "value": "_beneficiary"
                                        },
                                        "id": 1925,
                                        "name": "Identifier",
                                        "src": "15643:12:2"
                                      }
                                    ],
                                    "id": 1926,
                                    "name": "FunctionCall",
                                    "src": "15618:38:2"
                                  }
                                ],
                                "id": 1927,
                                "name": "Assignment",
                                "src": "15609:47:2"
                              }
                            ],
                            "id": 1928,
                            "name": "ExpressionStatement",
                            "src": "15609:47:2"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "=",
                                  "type": "int256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1900,
                                      "type": "int256",
                                      "value": "reputation"
                                    },
                                    "id": 1929,
                                    "name": "Identifier",
                                    "src": "15670:10:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "type": "int256",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            },
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 2691,
                                          "type": "function (bytes32,address) view returns (int256)",
                                          "value": "redeemStakerRepAmount"
                                        },
                                        "id": 1930,
                                        "name": "Identifier",
                                        "src": "15683:21:2"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1867,
                                          "type": "bytes32",
                                          "value": "_proposalId"
                                        },
                                        "id": 1931,
                                        "name": "Identifier",
                                        "src": "15705:11:2"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1869,
                                          "type": "address",
                                          "value": "_beneficiary"
                                        },
                                        "id": 1932,
                                        "name": "Identifier",
                                        "src": "15717:12:2"
                                      }
                                    ],
                                    "id": 1933,
                                    "name": "FunctionCall",
                                    "src": "15683:47:2"
                                  }
                                ],
                                "id": 1934,
                                "name": "Assignment",
                                "src": "15670:60:2"
                              }
                            ],
                            "id": 1935,
                            "name": "ExpressionStatement",
                            "src": "15670:60:2"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "=",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "member_name": "amount",
                                      "referencedDeclaration": 942,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "type": "struct GenesisProtocol.Staker storage ref"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "stakers",
                                              "referencedDeclaration": 985,
                                              "type": "mapping(address => struct GenesisProtocol.Staker storage ref)"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "type": "struct GenesisProtocol.Proposal storage ref"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 1046,
                                                      "type": "mapping(bytes32 => struct GenesisProtocol.Proposal storage ref)",
                                                      "value": "proposals"
                                                    },
                                                    "id": 1936,
                                                    "name": "Identifier",
                                                    "src": "15744:9:2"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 1867,
                                                      "type": "bytes32",
                                                      "value": "_proposalId"
                                                    },
                                                    "id": 1937,
                                                    "name": "Identifier",
                                                    "src": "15754:11:2"
                                                  }
                                                ],
                                                "id": 1938,
                                                "name": "IndexAccess",
                                                "src": "15744:22:2"
                                              }
                                            ],
                                            "id": 1939,
                                            "name": "MemberAccess",
                                            "src": "15744:30:2"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1869,
                                              "type": "address",
                                              "value": "_beneficiary"
                                            },
                                            "id": 1940,
                                            "name": "Identifier",
                                            "src": "15775:12:2"
                                          }
                                        ],
                                        "id": 1941,
                                        "name": "IndexAccess",
                                        "src": "15744:44:2"
                                      }
                                    ],
                                    "id": 1942,
                                    "name": "MemberAccess",
                                    "src": "15744:51:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "30",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 0",
                                      "value": "0"
                                    },
                                    "id": 1943,
                                    "name": "Literal",
                                    "src": "15798:1:2"
                                  }
                                ],
                                "id": 1944,
                                "name": "Assignment",
                                "src": "15744:55:2"
                              }
                            ],
                            "id": 1945,
                            "name": "ExpressionStatement",
                            "src": "15744:55:2"
                          }
                        ],
                        "id": 1946,
                        "name": "Block",
                        "src": "15571:239:2"
                      }
                    ],
                    "id": 1947,
                    "name": "IfStatement",
                    "src": "15432:378:2"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "&&",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "==",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "numOfChoices",
                                      "referencedDeclaration": 947,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1875,
                                          "type": "struct GenesisProtocol.Proposal storage pointer",
                                          "value": "proposal"
                                        },
                                        "id": 1948,
                                        "name": "Identifier",
                                        "src": "15824:8:2"
                                      }
                                    ],
                                    "id": 1949,
                                    "name": "MemberAccess",
                                    "src": "15824:21:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "32",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 2",
                                      "value": "2"
                                    },
                                    "id": 1950,
                                    "name": "Literal",
                                    "src": "15849:1:2"
                                  }
                                ],
                                "id": 1951,
                                "name": "BinaryOperation",
                                "src": "15824:26:2"
                              }
                            ],
                            "id": 1952,
                            "name": "TupleExpression",
                            "src": "15823:28:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "!=",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "reputation",
                                      "referencedDeclaration": 935,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "type": "struct GenesisProtocol.Voter storage ref"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "voters",
                                              "referencedDeclaration": 977,
                                              "type": "mapping(address => struct GenesisProtocol.Voter storage ref)"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 1875,
                                                  "type": "struct GenesisProtocol.Proposal storage pointer",
                                                  "value": "proposal"
                                                },
                                                "id": 1953,
                                                "name": "Identifier",
                                                "src": "15856:8:2"
                                              }
                                            ],
                                            "id": 1954,
                                            "name": "MemberAccess",
                                            "src": "15856:15:2"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1869,
                                              "type": "address",
                                              "value": "_beneficiary"
                                            },
                                            "id": 1955,
                                            "name": "Identifier",
                                            "src": "15872:12:2"
                                          }
                                        ],
                                        "id": 1956,
                                        "name": "IndexAccess",
                                        "src": "15856:29:2"
                                      }
                                    ],
                                    "id": 1957,
                                    "name": "MemberAccess",
                                    "src": "15856:40:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "30",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 0",
                                      "value": "0"
                                    },
                                    "id": 1958,
                                    "name": "Literal",
                                    "src": "15900:1:2"
                                  }
                                ],
                                "id": 1959,
                                "name": "BinaryOperation",
                                "src": "15856:45:2"
                              }
                            ],
                            "id": 1960,
                            "name": "TupleExpression",
                            "src": "15855:48:2"
                          }
                        ],
                        "id": 1961,
                        "name": "BinaryOperation",
                        "src": "15823:80:2"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "+=",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1897,
                                      "type": "uint256",
                                      "value": "amount"
                                    },
                                    "id": 1962,
                                    "name": "Identifier",
                                    "src": "15942:6:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "type": "uint256",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            },
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "overloadedDeclarations": [
                                            2481
                                          ],
                                          "referencedDeclaration": 2481,
                                          "type": "function (bytes32,address) view returns (uint256)",
                                          "value": "redeemVoterAmount"
                                        },
                                        "id": 1963,
                                        "name": "Identifier",
                                        "src": "15952:17:2"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1867,
                                          "type": "bytes32",
                                          "value": "_proposalId"
                                        },
                                        "id": 1964,
                                        "name": "Identifier",
                                        "src": "15970:11:2"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1869,
                                          "type": "address",
                                          "value": "_beneficiary"
                                        },
                                        "id": 1965,
                                        "name": "Identifier",
                                        "src": "15982:12:2"
                                      }
                                    ],
                                    "id": 1966,
                                    "name": "FunctionCall",
                                    "src": "15952:43:2"
                                  }
                                ],
                                "id": 1967,
                                "name": "Assignment",
                                "src": "15942:53:2"
                              }
                            ],
                            "id": 1968,
                            "name": "ExpressionStatement",
                            "src": "15942:53:2"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "+=",
                                  "type": "int256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1900,
                                      "type": "int256",
                                      "value": "reputation"
                                    },
                                    "id": 1969,
                                    "name": "Identifier",
                                    "src": "16009:10:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "type": "int256",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            },
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 2603,
                                          "type": "function (bytes32,address) view returns (int256)",
                                          "value": "redeemVoterReputation"
                                        },
                                        "id": 1970,
                                        "name": "Identifier",
                                        "src": "16023:21:2"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1867,
                                          "type": "bytes32",
                                          "value": "_proposalId"
                                        },
                                        "id": 1971,
                                        "name": "Identifier",
                                        "src": "16045:11:2"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1869,
                                          "type": "address",
                                          "value": "_beneficiary"
                                        },
                                        "id": 1972,
                                        "name": "Identifier",
                                        "src": "16057:12:2"
                                      }
                                    ],
                                    "id": 1973,
                                    "name": "FunctionCall",
                                    "src": "16023:47:2"
                                  }
                                ],
                                "id": 1974,
                                "name": "Assignment",
                                "src": "16009:61:2"
                              }
                            ],
                            "id": 1975,
                            "name": "ExpressionStatement",
                            "src": "16009:61:2"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "=",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "member_name": "reputation",
                                      "referencedDeclaration": 935,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "type": "struct GenesisProtocol.Voter storage ref"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "voters",
                                              "referencedDeclaration": 977,
                                              "type": "mapping(address => struct GenesisProtocol.Voter storage ref)"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 1875,
                                                  "type": "struct GenesisProtocol.Proposal storage pointer",
                                                  "value": "proposal"
                                                },
                                                "id": 1976,
                                                "name": "Identifier",
                                                "src": "16084:8:2"
                                              }
                                            ],
                                            "id": 1979,
                                            "name": "MemberAccess",
                                            "src": "16084:15:2"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1869,
                                              "type": "address",
                                              "value": "_beneficiary"
                                            },
                                            "id": 1978,
                                            "name": "Identifier",
                                            "src": "16100:12:2"
                                          }
                                        ],
                                        "id": 1980,
                                        "name": "IndexAccess",
                                        "src": "16084:29:2"
                                      }
                                    ],
                                    "id": 1981,
                                    "name": "MemberAccess",
                                    "src": "16084:40:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "30",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 0",
                                      "value": "0"
                                    },
                                    "id": 1982,
                                    "name": "Literal",
                                    "src": "16127:1:2"
                                  }
                                ],
                                "id": 1983,
                                "name": "Assignment",
                                "src": "16084:44:2"
                              }
                            ],
                            "id": 1984,
                            "name": "ExpressionStatement",
                            "src": "16084:44:2"
                          }
                        ],
                        "id": 1985,
                        "name": "Block",
                        "src": "15905:234:2"
                      }
                    ],
                    "id": 1986,
                    "name": "IfStatement",
                    "src": "15819:320:2"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "&&",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "&&",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "==",
                                      "type": "bool"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "numOfChoices",
                                          "referencedDeclaration": 947,
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1875,
                                              "type": "struct GenesisProtocol.Proposal storage pointer",
                                              "value": "proposal"
                                            },
                                            "id": 1987,
                                            "name": "Identifier",
                                            "src": "16154:8:2"
                                          }
                                        ],
                                        "id": 1988,
                                        "name": "MemberAccess",
                                        "src": "16154:21:2"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "32",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 2",
                                          "value": "2"
                                        },
                                        "id": 1989,
                                        "name": "Literal",
                                        "src": "16179:1:2"
                                      }
                                    ],
                                    "id": 1990,
                                    "name": "BinaryOperation",
                                    "src": "16154:26:2"
                                  }
                                ],
                                "id": 1991,
                                "name": "TupleExpression",
                                "src": "16153:28:2"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "==",
                                      "type": "bool"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "proposer",
                                          "referencedDeclaration": 967,
                                          "type": "address"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1875,
                                              "type": "struct GenesisProtocol.Proposal storage pointer",
                                              "value": "proposal"
                                            },
                                            "id": 1992,
                                            "name": "Identifier",
                                            "src": "16184:8:2"
                                          }
                                        ],
                                        "id": 1993,
                                        "name": "MemberAccess",
                                        "src": "16184:17:2"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1869,
                                          "type": "address",
                                          "value": "_beneficiary"
                                        },
                                        "id": 1994,
                                        "name": "Identifier",
                                        "src": "16205:12:2"
                                      }
                                    ],
                                    "id": 1995,
                                    "name": "BinaryOperation",
                                    "src": "16184:33:2"
                                  }
                                ],
                                "id": 1996,
                                "name": "TupleExpression",
                                "src": "16183:35:2"
                              }
                            ],
                            "id": 1997,
                            "name": "BinaryOperation",
                            "src": "16153:65:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "==",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "winningVote",
                                      "referencedDeclaration": 965,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1875,
                                          "type": "struct GenesisProtocol.Proposal storage pointer",
                                          "value": "proposal"
                                        },
                                        "id": 1998,
                                        "name": "Identifier",
                                        "src": "16221:8:2"
                                      }
                                    ],
                                    "id": 1999,
                                    "name": "MemberAccess",
                                    "src": "16221:20:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "31",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 1",
                                      "value": "1"
                                    },
                                    "id": 2000,
                                    "name": "Literal",
                                    "src": "16245:1:2"
                                  }
                                ],
                                "id": 2001,
                                "name": "BinaryOperation",
                                "src": "16221:25:2"
                              }
                            ],
                            "id": 2002,
                            "name": "TupleExpression",
                            "src": "16220:27:2"
                          }
                        ],
                        "id": 2003,
                        "name": "BinaryOperation",
                        "src": "16153:94:2"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "+=",
                                  "type": "int256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1900,
                                      "type": "int256",
                                      "value": "reputation"
                                    },
                                    "id": 2004,
                                    "name": "Identifier",
                                    "src": "16289:10:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "type": "int256",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          ],
                                          "overloadedDeclarations": [
                                            2410
                                          ],
                                          "referencedDeclaration": 2410,
                                          "type": "function (bytes32) view returns (int256)",
                                          "value": "redeemProposerReputation"
                                        },
                                        "id": 2005,
                                        "name": "Identifier",
                                        "src": "16303:24:2"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1867,
                                          "type": "bytes32",
                                          "value": "_proposalId"
                                        },
                                        "id": 2006,
                                        "name": "Identifier",
                                        "src": "16328:11:2"
                                      }
                                    ],
                                    "id": 2007,
                                    "name": "FunctionCall",
                                    "src": "16303:37:2"
                                  }
                                ],
                                "id": 2008,
                                "name": "Assignment",
                                "src": "16289:51:2"
                              }
                            ],
                            "id": 2009,
                            "name": "ExpressionStatement",
                            "src": "16289:51:2"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "=",
                                  "type": "address"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "member_name": "proposer",
                                      "referencedDeclaration": 967,
                                      "type": "address"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1875,
                                          "type": "struct GenesisProtocol.Proposal storage pointer",
                                          "value": "proposal"
                                        },
                                        "id": 2010,
                                        "name": "Identifier",
                                        "src": "16354:8:2"
                                      }
                                    ],
                                    "id": 2012,
                                    "name": "MemberAccess",
                                    "src": "16354:17:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "30",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 0",
                                      "value": "0"
                                    },
                                    "id": 2013,
                                    "name": "Literal",
                                    "src": "16374:1:2"
                                  }
                                ],
                                "id": 2014,
                                "name": "Assignment",
                                "src": "16354:21:2"
                              }
                            ],
                            "id": 2015,
                            "name": "ExpressionStatement",
                            "src": "16354:21:2"
                          }
                        ],
                        "id": 2016,
                        "name": "Block",
                        "src": "16249:138:2"
                      }
                    ],
                    "id": 2017,
                    "name": "IfStatement",
                    "src": "16149:238:2"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "!=",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1897,
                              "type": "uint256",
                              "value": "amount"
                            },
                            "id": 2018,
                            "name": "Identifier",
                            "src": "16400:6:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 2019,
                            "name": "Literal",
                            "src": "16410:1:2"
                          }
                        ],
                        "id": 2020,
                        "name": "BinaryOperation",
                        "src": "16400:11:2"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "bool",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "transfer",
                                      "referencedDeclaration": 11518,
                                      "type": "function (address,uint256) external returns (bool)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1057,
                                          "type": "contract StandardToken",
                                          "value": "stakingToken"
                                        },
                                        "id": 2021,
                                        "name": "Identifier",
                                        "src": "16427:12:2"
                                      }
                                    ],
                                    "id": 2023,
                                    "name": "MemberAccess",
                                    "src": "16427:21:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1869,
                                      "type": "address",
                                      "value": "_beneficiary"
                                    },
                                    "id": 2024,
                                    "name": "Identifier",
                                    "src": "16449:12:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1897,
                                      "type": "uint256",
                                      "value": "amount"
                                    },
                                    "id": 2025,
                                    "name": "Identifier",
                                    "src": "16463:6:2"
                                  }
                                ],
                                "id": 2026,
                                "name": "FunctionCall",
                                "src": "16427:43:2"
                              }
                            ],
                            "id": 2027,
                            "name": "ExpressionStatement",
                            "src": "16427:43:2"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "tuple()",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1030,
                                      "type": "function (bytes32,address,uint256)",
                                      "value": "Redeem"
                                    },
                                    "id": 2028,
                                    "name": "Identifier",
                                    "src": "16484:6:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1867,
                                      "type": "bytes32",
                                      "value": "_proposalId"
                                    },
                                    "id": 2029,
                                    "name": "Identifier",
                                    "src": "16491:11:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1869,
                                      "type": "address",
                                      "value": "_beneficiary"
                                    },
                                    "id": 2030,
                                    "name": "Identifier",
                                    "src": "16503:12:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1897,
                                      "type": "uint256",
                                      "value": "amount"
                                    },
                                    "id": 2031,
                                    "name": "Identifier",
                                    "src": "16516:6:2"
                                  }
                                ],
                                "id": 2032,
                                "name": "FunctionCall",
                                "src": "16484:39:2"
                              }
                            ],
                            "id": 2033,
                            "name": "ExpressionStatement",
                            "src": "16484:39:2"
                          }
                        ],
                        "id": 2034,
                        "name": "Block",
                        "src": "16413:121:2"
                      }
                    ],
                    "id": 2035,
                    "name": "IfStatement",
                    "src": "16396:138:2"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "!=",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1900,
                              "type": "int256",
                              "value": "reputation"
                            },
                            "id": 2036,
                            "name": "Identifier",
                            "src": "16547:10:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 2037,
                            "name": "Literal",
                            "src": "16561:1:2"
                          }
                        ],
                        "id": 2038,
                        "name": "BinaryOperation",
                        "src": "16547:15:2"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "bool",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "mintReputation",
                                      "referencedDeclaration": 4984,
                                      "type": "function (int256,address,address) external returns (bool)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "isStructConstructorCall": false,
                                          "lValueRequested": false,
                                          "names": [
                                            null
                                          ],
                                          "type": "contract ControllerInterface",
                                          "type_conversion": true
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              ],
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 5172,
                                              "type": "type(contract ControllerInterface)",
                                              "value": "ControllerInterface"
                                            },
                                            "id": 2039,
                                            "name": "Identifier",
                                            "src": "16579:19:2"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "arguments": [
                                                null
                                              ],
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "isStructConstructorCall": false,
                                              "lValueRequested": false,
                                              "names": [
                                                null
                                              ],
                                              "type": "address",
                                              "type_conversion": false
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": [
                                                    null
                                                  ],
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "member_name": "owner",
                                                  "referencedDeclaration": 11393,
                                                  "type": "function () view external returns (address)"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "isStructConstructorCall": false,
                                                      "lValueRequested": false,
                                                      "names": [
                                                        null
                                                      ],
                                                      "type": "contract Avatar",
                                                      "type_conversion": true
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "argumentTypes": [
                                                            {
                                                              "typeIdentifier": "t_address",
                                                              "typeString": "address"
                                                            }
                                                          ],
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 3873,
                                                          "type": "type(contract Avatar)",
                                                          "value": "Avatar"
                                                        },
                                                        "id": 2040,
                                                        "name": "Identifier",
                                                        "src": "16599:6:2"
                                                      },
                                                      {
                                                        "attributes": {
                                                          "argumentTypes": null,
                                                          "isConstant": false,
                                                          "isLValue": true,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "member_name": "avatar",
                                                          "referencedDeclaration": 945,
                                                          "type": "address"
                                                        },
                                                        "children": [
                                                          {
                                                            "attributes": {
                                                              "argumentTypes": null,
                                                              "overloadedDeclarations": [
                                                                null
                                                              ],
                                                              "referencedDeclaration": 1875,
                                                              "type": "struct GenesisProtocol.Proposal storage pointer",
                                                              "value": "proposal"
                                                            },
                                                            "id": 2041,
                                                            "name": "Identifier",
                                                            "src": "16606:8:2"
                                                          }
                                                        ],
                                                        "id": 2042,
                                                        "name": "MemberAccess",
                                                        "src": "16606:15:2"
                                                      }
                                                    ],
                                                    "id": 2043,
                                                    "name": "FunctionCall",
                                                    "src": "16599:23:2"
                                                  }
                                                ],
                                                "id": 2044,
                                                "name": "MemberAccess",
                                                "src": "16599:29:2"
                                              }
                                            ],
                                            "id": 2045,
                                            "name": "FunctionCall",
                                            "src": "16599:31:2"
                                          }
                                        ],
                                        "id": 2046,
                                        "name": "FunctionCall",
                                        "src": "16579:52:2"
                                      }
                                    ],
                                    "id": 2047,
                                    "name": "MemberAccess",
                                    "src": "16579:67:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1900,
                                      "type": "int256",
                                      "value": "reputation"
                                    },
                                    "id": 2048,
                                    "name": "Identifier",
                                    "src": "16647:10:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1869,
                                      "type": "address",
                                      "value": "_beneficiary"
                                    },
                                    "id": 2049,
                                    "name": "Identifier",
                                    "src": "16658:12:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "avatar",
                                      "referencedDeclaration": 945,
                                      "type": "address"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1875,
                                          "type": "struct GenesisProtocol.Proposal storage pointer",
                                          "value": "proposal"
                                        },
                                        "id": 2050,
                                        "name": "Identifier",
                                        "src": "16671:8:2"
                                      }
                                    ],
                                    "id": 2051,
                                    "name": "MemberAccess",
                                    "src": "16671:15:2"
                                  }
                                ],
                                "id": 2052,
                                "name": "FunctionCall",
                                "src": "16579:108:2"
                              }
                            ],
                            "id": 2053,
                            "name": "ExpressionStatement",
                            "src": "16579:108:2"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "tuple()",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1038,
                                      "type": "function (bytes32,address,int256)",
                                      "value": "RedeemReputation"
                                    },
                                    "id": 2054,
                                    "name": "Identifier",
                                    "src": "16701:16:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1867,
                                      "type": "bytes32",
                                      "value": "_proposalId"
                                    },
                                    "id": 2055,
                                    "name": "Identifier",
                                    "src": "16718:11:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1869,
                                      "type": "address",
                                      "value": "_beneficiary"
                                    },
                                    "id": 2056,
                                    "name": "Identifier",
                                    "src": "16730:12:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1900,
                                      "type": "int256",
                                      "value": "reputation"
                                    },
                                    "id": 2057,
                                    "name": "Identifier",
                                    "src": "16743:10:2"
                                  }
                                ],
                                "id": 2058,
                                "name": "FunctionCall",
                                "src": "16701:53:2"
                              }
                            ],
                            "id": 2059,
                            "name": "ExpressionStatement",
                            "src": "16701:53:2"
                          }
                        ],
                        "id": 2060,
                        "name": "Block",
                        "src": "16565:200:2"
                      }
                    ],
                    "id": 2061,
                    "name": "IfStatement",
                    "src": "16543:222:2"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 1873
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "hexvalue": "74727565",
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "subdenomination": null,
                          "token": "bool",
                          "type": "bool",
                          "value": "true"
                        },
                        "id": 2062,
                        "name": "Literal",
                        "src": "16781:4:2"
                      }
                    ],
                    "id": 2063,
                    "name": "Return",
                    "src": "16774:11:2"
                  }
                ],
                "id": 2064,
                "name": "Block",
                "src": "15212:1580:2"
              }
            ],
            "id": 2065,
            "name": "FunctionDefinition",
            "src": "15133:1659:2"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "shouldBoost",
              "payable": false,
              "scope": 3292,
              "stateMutability": "view",
              "superFunction": 3301,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_proposalId",
                      "scope": 2126,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 2066,
                        "name": "ElementaryTypeName",
                        "src": "16999:7:2"
                      }
                    ],
                    "id": 2067,
                    "name": "VariableDeclaration",
                    "src": "16999:19:2"
                  }
                ],
                "id": 2068,
                "name": "ParameterList",
                "src": "16998:21:2"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 2126,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 2069,
                        "name": "ElementaryTypeName",
                        "src": "17040:4:2"
                      }
                    ],
                    "id": 2070,
                    "name": "VariableDeclaration",
                    "src": "17040:4:2"
                  }
                ],
                "id": 2071,
                "name": "ParameterList",
                "src": "17039:6:2"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        2073
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "avatar",
                          "scope": 2126,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "address",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "address",
                              "type": "address"
                            },
                            "id": 2072,
                            "name": "ElementaryTypeName",
                            "src": "17056:7:2"
                          }
                        ],
                        "id": 2073,
                        "name": "VariableDeclaration",
                        "src": "17056:14:2"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "member_name": "avatar",
                          "referencedDeclaration": 945,
                          "type": "address"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "struct GenesisProtocol.Proposal storage ref"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1046,
                                  "type": "mapping(bytes32 => struct GenesisProtocol.Proposal storage ref)",
                                  "value": "proposals"
                                },
                                "id": 2074,
                                "name": "Identifier",
                                "src": "17073:9:2"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2067,
                                  "type": "bytes32",
                                  "value": "_proposalId"
                                },
                                "id": 2075,
                                "name": "Identifier",
                                "src": "17083:11:2"
                              }
                            ],
                            "id": 2076,
                            "name": "IndexAccess",
                            "src": "17073:22:2"
                          }
                        ],
                        "id": 2077,
                        "name": "MemberAccess",
                        "src": "17073:29:2"
                      }
                    ],
                    "id": 2078,
                    "name": "VariableDeclarationStatement",
                    "src": "17056:46:2"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        2080
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "paramsHash",
                          "scope": 2126,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "bytes32",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "bytes32",
                              "type": "bytes32"
                            },
                            "id": 2079,
                            "name": "ElementaryTypeName",
                            "src": "17112:7:2"
                          }
                        ],
                        "id": 2080,
                        "name": "VariableDeclaration",
                        "src": "17112:18:2"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bytes32",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_Avatar_$3873",
                                  "typeString": "contract Avatar"
                                }
                              ],
                              "overloadedDeclarations": [
                                9584
                              ],
                              "referencedDeclaration": 9584,
                              "type": "function (contract Avatar) view returns (bytes32)",
                              "value": "getParametersFromController"
                            },
                            "id": 2081,
                            "name": "Identifier",
                            "src": "17133:27:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "contract Avatar",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3873,
                                  "type": "type(contract Avatar)",
                                  "value": "Avatar"
                                },
                                "id": 2082,
                                "name": "Identifier",
                                "src": "17161:6:2"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2073,
                                  "type": "address",
                                  "value": "avatar"
                                },
                                "id": 2083,
                                "name": "Identifier",
                                "src": "17168:6:2"
                              }
                            ],
                            "id": 2084,
                            "name": "FunctionCall",
                            "src": "17161:14:2"
                          }
                        ],
                        "id": 2085,
                        "name": "FunctionCall",
                        "src": "17133:43:2"
                      }
                    ],
                    "id": 2086,
                    "name": "VariableDeclarationStatement",
                    "src": "17112:64:2"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        2088
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "params",
                          "scope": 2126,
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "type": "struct GenesisProtocol.Parameters memory",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "Parameters",
                              "referencedDeclaration": 931,
                              "type": "struct GenesisProtocol.Parameters storage pointer"
                            },
                            "id": 2087,
                            "name": "UserDefinedTypeName",
                            "src": "17186:10:2"
                          }
                        ],
                        "id": 2088,
                        "name": "VariableDeclaration",
                        "src": "17186:24:2"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "struct GenesisProtocol.Parameters storage ref"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1042,
                              "type": "mapping(bytes32 => struct GenesisProtocol.Parameters storage ref)",
                              "value": "parameters"
                            },
                            "id": 2089,
                            "name": "Identifier",
                            "src": "17213:10:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2080,
                              "type": "bytes32",
                              "value": "paramsHash"
                            },
                            "id": 2090,
                            "name": "Identifier",
                            "src": "17224:10:2"
                          }
                        ],
                        "id": 2091,
                        "name": "IndexAccess",
                        "src": "17213:22:2"
                      }
                    ],
                    "id": 2092,
                    "name": "VariableDeclarationStatement",
                    "src": "17186:49:2"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_contract$_GenesisProtocolFormulasInterface_$3341",
                            "typeString": "contract GenesisProtocolFormulasInterface"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "==",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "governanceFormulasInterface",
                              "referencedDeclaration": 916,
                              "type": "contract GenesisProtocolFormulasInterface"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2088,
                                  "type": "struct GenesisProtocol.Parameters memory",
                                  "value": "params"
                                },
                                "id": 2093,
                                "name": "Identifier",
                                "src": "17249:6:2"
                              }
                            ],
                            "id": 2094,
                            "name": "MemberAccess",
                            "src": "17249:34:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "contract GenesisProtocolFormulasInterface",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3341,
                                  "type": "type(contract GenesisProtocolFormulasInterface)",
                                  "value": "GenesisProtocolFormulasInterface"
                                },
                                "id": 2095,
                                "name": "Identifier",
                                "src": "17287:32:2"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 2096,
                                "name": "Literal",
                                "src": "17320:1:2"
                              }
                            ],
                            "id": 2097,
                            "name": "FunctionCall",
                            "src": "17287:35:2"
                          }
                        ],
                        "id": 2098,
                        "name": "BinaryOperation",
                        "src": "17249:73:2"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "functionReturnParameters": 2071
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": ">=",
                                      "type": "bool"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "isStructConstructorCall": false,
                                          "lValueRequested": false,
                                          "names": [
                                            null
                                          ],
                                          "type": "int256",
                                          "type_conversion": false
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_bytes32",
                                                  "typeString": "bytes32"
                                                },
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 3291,
                                              "type": "function (bytes32,uint256) view returns (int256)",
                                              "value": "_score"
                                            },
                                            "id": 2099,
                                            "name": "Identifier",
                                            "src": "17346:6:2"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 2067,
                                              "type": "bytes32",
                                              "value": "_proposalId"
                                            },
                                            "id": 2100,
                                            "name": "Identifier",
                                            "src": "17353:11:2"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "arguments": [
                                                null
                                              ],
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "isStructConstructorCall": false,
                                              "lValueRequested": false,
                                              "names": [
                                                null
                                              ],
                                              "type": "uint256",
                                              "type_conversion": false
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": [
                                                    null
                                                  ],
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "member_name": "totalSupply",
                                                  "referencedDeclaration": 5218,
                                                  "type": "function () view external returns (uint256)"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "arguments": [
                                                        null
                                                      ],
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "isStructConstructorCall": false,
                                                      "lValueRequested": false,
                                                      "names": [
                                                        null
                                                      ],
                                                      "type": "contract Reputation",
                                                      "type_conversion": false
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "argumentTypes": [
                                                            null
                                                          ],
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "member_name": "nativeReputation",
                                                          "referencedDeclaration": 3606,
                                                          "type": "function () view external returns (contract Reputation)"
                                                        },
                                                        "children": [
                                                          {
                                                            "attributes": {
                                                              "argumentTypes": null,
                                                              "isConstant": false,
                                                              "isLValue": false,
                                                              "isPure": false,
                                                              "isStructConstructorCall": false,
                                                              "lValueRequested": false,
                                                              "names": [
                                                                null
                                                              ],
                                                              "type": "contract Avatar",
                                                              "type_conversion": true
                                                            },
                                                            "children": [
                                                              {
                                                                "attributes": {
                                                                  "argumentTypes": [
                                                                    {
                                                                      "typeIdentifier": "t_address",
                                                                      "typeString": "address"
                                                                    }
                                                                  ],
                                                                  "overloadedDeclarations": [
                                                                    null
                                                                  ],
                                                                  "referencedDeclaration": 3873,
                                                                  "type": "type(contract Avatar)",
                                                                  "value": "Avatar"
                                                                },
                                                                "id": 2101,
                                                                "name": "Identifier",
                                                                "src": "17365:6:2"
                                                              },
                                                              {
                                                                "attributes": {
                                                                  "argumentTypes": null,
                                                                  "overloadedDeclarations": [
                                                                    null
                                                                  ],
                                                                  "referencedDeclaration": 2073,
                                                                  "type": "address",
                                                                  "value": "avatar"
                                                                },
                                                                "id": 2102,
                                                                "name": "Identifier",
                                                                "src": "17372:6:2"
                                                              }
                                                            ],
                                                            "id": 2103,
                                                            "name": "FunctionCall",
                                                            "src": "17365:14:2"
                                                          }
                                                        ],
                                                        "id": 2104,
                                                        "name": "MemberAccess",
                                                        "src": "17365:31:2"
                                                      }
                                                    ],
                                                    "id": 2105,
                                                    "name": "FunctionCall",
                                                    "src": "17365:33:2"
                                                  }
                                                ],
                                                "id": 2106,
                                                "name": "MemberAccess",
                                                "src": "17365:45:2"
                                              }
                                            ],
                                            "id": 2107,
                                            "name": "FunctionCall",
                                            "src": "17365:47:2"
                                          }
                                        ],
                                        "id": 2108,
                                        "name": "FunctionCall",
                                        "src": "17346:67:2"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "isStructConstructorCall": false,
                                          "lValueRequested": false,
                                          "names": [
                                            null
                                          ],
                                          "type": "int256",
                                          "type_conversion": false
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              ],
                                              "overloadedDeclarations": [
                                                2241
                                              ],
                                              "referencedDeclaration": 2241,
                                              "type": "function (address) view returns (int256)",
                                              "value": "threshold"
                                            },
                                            "id": 2109,
                                            "name": "Identifier",
                                            "src": "17417:9:2"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 2073,
                                              "type": "address",
                                              "value": "avatar"
                                            },
                                            "id": 2110,
                                            "name": "Identifier",
                                            "src": "17427:6:2"
                                          }
                                        ],
                                        "id": 2111,
                                        "name": "FunctionCall",
                                        "src": "17417:17:2"
                                      }
                                    ],
                                    "id": 2112,
                                    "name": "BinaryOperation",
                                    "src": "17346:88:2"
                                  }
                                ],
                                "id": 2113,
                                "name": "TupleExpression",
                                "src": "17345:90:2"
                              }
                            ],
                            "id": 2114,
                            "name": "Return",
                            "src": "17338:97:2"
                          }
                        ],
                        "id": 2115,
                        "name": "Block",
                        "src": "17324:122:2"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "functionReturnParameters": 2071
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "bool",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "shouldBoost",
                                      "referencedDeclaration": 3301,
                                      "type": "function (bytes32) view external returns (bool)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "type": "contract GenesisProtocolFormulasInterface"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "governanceFormulasInterface",
                                              "referencedDeclaration": 916,
                                              "type": "contract GenesisProtocolFormulasInterface"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 2088,
                                                  "type": "struct GenesisProtocol.Parameters memory",
                                                  "value": "params"
                                                },
                                                "id": 2116,
                                                "name": "Identifier",
                                                "src": "17474:6:2"
                                              }
                                            ],
                                            "id": 2117,
                                            "name": "MemberAccess",
                                            "src": "17474:34:2"
                                          }
                                        ],
                                        "id": 2118,
                                        "name": "TupleExpression",
                                        "src": "17473:36:2"
                                      }
                                    ],
                                    "id": 2119,
                                    "name": "MemberAccess",
                                    "src": "17473:48:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2067,
                                      "type": "bytes32",
                                      "value": "_proposalId"
                                    },
                                    "id": 2120,
                                    "name": "Identifier",
                                    "src": "17522:11:2"
                                  }
                                ],
                                "id": 2121,
                                "name": "FunctionCall",
                                "src": "17473:61:2"
                              }
                            ],
                            "id": 2122,
                            "name": "Return",
                            "src": "17466:68:2"
                          }
                        ],
                        "id": 2123,
                        "name": "Block",
                        "src": "17452:93:2"
                      }
                    ],
                    "id": 2124,
                    "name": "IfStatement",
                    "src": "17245:300:2"
                  }
                ],
                "id": 2125,
                "name": "Block",
                "src": "17046:505:2"
              }
            ],
            "id": 2126,
            "name": "FunctionDefinition",
            "src": "16978:573:2"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "score",
              "payable": false,
              "scope": 3292,
              "stateMutability": "view",
              "superFunction": 3308,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_proposalId",
                      "scope": 2181,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 2127,
                        "name": "ElementaryTypeName",
                        "src": "17717:7:2"
                      }
                    ],
                    "id": 2128,
                    "name": "VariableDeclaration",
                    "src": "17717:19:2"
                  }
                ],
                "id": 2129,
                "name": "ParameterList",
                "src": "17716:21:2"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 2181,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "int256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "int",
                          "type": "int256"
                        },
                        "id": 2130,
                        "name": "ElementaryTypeName",
                        "src": "17758:3:2"
                      }
                    ],
                    "id": 2131,
                    "name": "VariableDeclaration",
                    "src": "17758:3:2"
                  }
                ],
                "id": 2132,
                "name": "ParameterList",
                "src": "17757:5:2"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        2134
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "paramsHash",
                          "scope": 2181,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "bytes32",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "bytes32",
                              "type": "bytes32"
                            },
                            "id": 2133,
                            "name": "ElementaryTypeName",
                            "src": "17773:7:2"
                          }
                        ],
                        "id": 2134,
                        "name": "VariableDeclaration",
                        "src": "17773:18:2"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bytes32",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_Avatar_$3873",
                                  "typeString": "contract Avatar"
                                }
                              ],
                              "overloadedDeclarations": [
                                9584
                              ],
                              "referencedDeclaration": 9584,
                              "type": "function (contract Avatar) view returns (bytes32)",
                              "value": "getParametersFromController"
                            },
                            "id": 2135,
                            "name": "Identifier",
                            "src": "17794:27:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "contract Avatar",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3873,
                                  "type": "type(contract Avatar)",
                                  "value": "Avatar"
                                },
                                "id": 2136,
                                "name": "Identifier",
                                "src": "17822:6:2"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "avatar",
                                  "referencedDeclaration": 945,
                                  "type": "address"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "type": "struct GenesisProtocol.Proposal storage ref"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1046,
                                          "type": "mapping(bytes32 => struct GenesisProtocol.Proposal storage ref)",
                                          "value": "proposals"
                                        },
                                        "id": 2137,
                                        "name": "Identifier",
                                        "src": "17829:9:2"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 2128,
                                          "type": "bytes32",
                                          "value": "_proposalId"
                                        },
                                        "id": 2138,
                                        "name": "Identifier",
                                        "src": "17839:11:2"
                                      }
                                    ],
                                    "id": 2139,
                                    "name": "IndexAccess",
                                    "src": "17829:22:2"
                                  }
                                ],
                                "id": 2140,
                                "name": "MemberAccess",
                                "src": "17829:29:2"
                              }
                            ],
                            "id": 2141,
                            "name": "FunctionCall",
                            "src": "17822:37:2"
                          }
                        ],
                        "id": 2142,
                        "name": "FunctionCall",
                        "src": "17794:66:2"
                      }
                    ],
                    "id": 2143,
                    "name": "VariableDeclarationStatement",
                    "src": "17773:87:2"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        2145
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "params",
                          "scope": 2181,
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "type": "struct GenesisProtocol.Parameters memory",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "Parameters",
                              "referencedDeclaration": 931,
                              "type": "struct GenesisProtocol.Parameters storage pointer"
                            },
                            "id": 2144,
                            "name": "UserDefinedTypeName",
                            "src": "17870:10:2"
                          }
                        ],
                        "id": 2145,
                        "name": "VariableDeclaration",
                        "src": "17870:24:2"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "struct GenesisProtocol.Parameters storage ref"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1042,
                              "type": "mapping(bytes32 => struct GenesisProtocol.Parameters storage ref)",
                              "value": "parameters"
                            },
                            "id": 2146,
                            "name": "Identifier",
                            "src": "17897:10:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2134,
                              "type": "bytes32",
                              "value": "paramsHash"
                            },
                            "id": 2147,
                            "name": "Identifier",
                            "src": "17908:10:2"
                          }
                        ],
                        "id": 2148,
                        "name": "IndexAccess",
                        "src": "17897:22:2"
                      }
                    ],
                    "id": 2149,
                    "name": "VariableDeclarationStatement",
                    "src": "17870:49:2"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_contract$_GenesisProtocolFormulasInterface_$3341",
                            "typeString": "contract GenesisProtocolFormulasInterface"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "==",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "governanceFormulasInterface",
                              "referencedDeclaration": 916,
                              "type": "contract GenesisProtocolFormulasInterface"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2145,
                                  "type": "struct GenesisProtocol.Parameters memory",
                                  "value": "params"
                                },
                                "id": 2150,
                                "name": "Identifier",
                                "src": "17933:6:2"
                              }
                            ],
                            "id": 2151,
                            "name": "MemberAccess",
                            "src": "17933:34:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "contract GenesisProtocolFormulasInterface",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3341,
                                  "type": "type(contract GenesisProtocolFormulasInterface)",
                                  "value": "GenesisProtocolFormulasInterface"
                                },
                                "id": 2152,
                                "name": "Identifier",
                                "src": "17971:32:2"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 2153,
                                "name": "Literal",
                                "src": "18004:1:2"
                              }
                            ],
                            "id": 2154,
                            "name": "FunctionCall",
                            "src": "17971:35:2"
                          }
                        ],
                        "id": 2155,
                        "name": "BinaryOperation",
                        "src": "17933:73:2"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "functionReturnParameters": 2132
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "int256",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3291,
                                      "type": "function (bytes32,uint256) view returns (int256)",
                                      "value": "_score"
                                    },
                                    "id": 2156,
                                    "name": "Identifier",
                                    "src": "18029:6:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2128,
                                      "type": "bytes32",
                                      "value": "_proposalId"
                                    },
                                    "id": 2157,
                                    "name": "Identifier",
                                    "src": "18036:11:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        null
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "type": "uint256",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            null
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "totalSupply",
                                          "referencedDeclaration": 5218,
                                          "type": "function () view external returns (uint256)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "arguments": [
                                                null
                                              ],
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "isStructConstructorCall": false,
                                              "lValueRequested": false,
                                              "names": [
                                                null
                                              ],
                                              "type": "contract Reputation",
                                              "type_conversion": false
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": [
                                                    null
                                                  ],
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "member_name": "nativeReputation",
                                                  "referencedDeclaration": 3606,
                                                  "type": "function () view external returns (contract Reputation)"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "isStructConstructorCall": false,
                                                      "lValueRequested": false,
                                                      "names": [
                                                        null
                                                      ],
                                                      "type": "contract Avatar",
                                                      "type_conversion": true
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "argumentTypes": [
                                                            {
                                                              "typeIdentifier": "t_address",
                                                              "typeString": "address"
                                                            }
                                                          ],
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 3873,
                                                          "type": "type(contract Avatar)",
                                                          "value": "Avatar"
                                                        },
                                                        "id": 2158,
                                                        "name": "Identifier",
                                                        "src": "18049:6:2"
                                                      },
                                                      {
                                                        "attributes": {
                                                          "argumentTypes": null,
                                                          "isConstant": false,
                                                          "isLValue": true,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "member_name": "avatar",
                                                          "referencedDeclaration": 945,
                                                          "type": "address"
                                                        },
                                                        "children": [
                                                          {
                                                            "attributes": {
                                                              "argumentTypes": null,
                                                              "isConstant": false,
                                                              "isLValue": true,
                                                              "isPure": false,
                                                              "lValueRequested": false,
                                                              "type": "struct GenesisProtocol.Proposal storage ref"
                                                            },
                                                            "children": [
                                                              {
                                                                "attributes": {
                                                                  "argumentTypes": null,
                                                                  "overloadedDeclarations": [
                                                                    null
                                                                  ],
                                                                  "referencedDeclaration": 1046,
                                                                  "type": "mapping(bytes32 => struct GenesisProtocol.Proposal storage ref)",
                                                                  "value": "proposals"
                                                                },
                                                                "id": 2159,
                                                                "name": "Identifier",
                                                                "src": "18056:9:2"
                                                              },
                                                              {
                                                                "attributes": {
                                                                  "argumentTypes": null,
                                                                  "overloadedDeclarations": [
                                                                    null
                                                                  ],
                                                                  "referencedDeclaration": 2128,
                                                                  "type": "bytes32",
                                                                  "value": "_proposalId"
                                                                },
                                                                "id": 2160,
                                                                "name": "Identifier",
                                                                "src": "18066:11:2"
                                                              }
                                                            ],
                                                            "id": 2161,
                                                            "name": "IndexAccess",
                                                            "src": "18056:22:2"
                                                          }
                                                        ],
                                                        "id": 2162,
                                                        "name": "MemberAccess",
                                                        "src": "18056:29:2"
                                                      }
                                                    ],
                                                    "id": 2163,
                                                    "name": "FunctionCall",
                                                    "src": "18049:37:2"
                                                  }
                                                ],
                                                "id": 2164,
                                                "name": "MemberAccess",
                                                "src": "18049:54:2"
                                              }
                                            ],
                                            "id": 2165,
                                            "name": "FunctionCall",
                                            "src": "18049:56:2"
                                          }
                                        ],
                                        "id": 2166,
                                        "name": "MemberAccess",
                                        "src": "18049:68:2"
                                      }
                                    ],
                                    "id": 2167,
                                    "name": "FunctionCall",
                                    "src": "18049:70:2"
                                  }
                                ],
                                "id": 2168,
                                "name": "FunctionCall",
                                "src": "18029:91:2"
                              }
                            ],
                            "id": 2169,
                            "name": "Return",
                            "src": "18022:98:2"
                          }
                        ],
                        "id": 2170,
                        "name": "Block",
                        "src": "18008:123:2"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "functionReturnParameters": 2132
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "int256",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "score",
                                      "referencedDeclaration": 3308,
                                      "type": "function (bytes32) view external returns (int256)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "type": "contract GenesisProtocolFormulasInterface"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "governanceFormulasInterface",
                                              "referencedDeclaration": 916,
                                              "type": "contract GenesisProtocolFormulasInterface"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 2145,
                                                  "type": "struct GenesisProtocol.Parameters memory",
                                                  "value": "params"
                                                },
                                                "id": 2171,
                                                "name": "Identifier",
                                                "src": "18159:6:2"
                                              }
                                            ],
                                            "id": 2172,
                                            "name": "MemberAccess",
                                            "src": "18159:34:2"
                                          }
                                        ],
                                        "id": 2173,
                                        "name": "TupleExpression",
                                        "src": "18158:36:2"
                                      }
                                    ],
                                    "id": 2174,
                                    "name": "MemberAccess",
                                    "src": "18158:42:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2128,
                                      "type": "bytes32",
                                      "value": "_proposalId"
                                    },
                                    "id": 2175,
                                    "name": "Identifier",
                                    "src": "18201:11:2"
                                  }
                                ],
                                "id": 2176,
                                "name": "FunctionCall",
                                "src": "18158:55:2"
                              }
                            ],
                            "id": 2177,
                            "name": "Return",
                            "src": "18151:62:2"
                          }
                        ],
                        "id": 2178,
                        "name": "Block",
                        "src": "18137:87:2"
                      }
                    ],
                    "id": 2179,
                    "name": "IfStatement",
                    "src": "17929:295:2"
                  }
                ],
                "id": 2180,
                "name": "Block",
                "src": "17763:467:2"
              }
            ],
            "id": 2181,
            "name": "FunctionDefinition",
            "src": "17702:528:2"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "threshold",
              "payable": false,
              "scope": 3292,
              "stateMutability": "view",
              "superFunction": 3315,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_avatar",
                      "scope": 2241,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 2182,
                        "name": "ElementaryTypeName",
                        "src": "18570:7:2"
                      }
                    ],
                    "id": 2183,
                    "name": "VariableDeclaration",
                    "src": "18570:15:2"
                  }
                ],
                "id": 2184,
                "name": "ParameterList",
                "src": "18569:17:2"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 2241,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "int256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "int",
                          "type": "int256"
                        },
                        "id": 2185,
                        "name": "ElementaryTypeName",
                        "src": "18607:3:2"
                      }
                    ],
                    "id": 2186,
                    "name": "VariableDeclaration",
                    "src": "18607:3:2"
                  }
                ],
                "id": 2187,
                "name": "ParameterList",
                "src": "18606:5:2"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        2189
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "e",
                          "scope": 2241,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint",
                              "type": "uint256"
                            },
                            "id": 2188,
                            "name": "ElementaryTypeName",
                            "src": "18622:4:2"
                          }
                        ],
                        "id": 2189,
                        "name": "VariableDeclaration",
                        "src": "18622:6:2"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "hexvalue": "32",
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "subdenomination": null,
                          "token": "number",
                          "type": "int_const 2",
                          "value": "2"
                        },
                        "id": 2190,
                        "name": "Literal",
                        "src": "18631:1:2"
                      }
                    ],
                    "id": 2191,
                    "name": "VariableDeclarationStatement",
                    "src": "18622:10:2"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        2193
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "paramsHash",
                          "scope": 2241,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "bytes32",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "bytes32",
                              "type": "bytes32"
                            },
                            "id": 2192,
                            "name": "ElementaryTypeName",
                            "src": "18642:7:2"
                          }
                        ],
                        "id": 2193,
                        "name": "VariableDeclaration",
                        "src": "18642:18:2"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bytes32",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_Avatar_$3873",
                                  "typeString": "contract Avatar"
                                }
                              ],
                              "overloadedDeclarations": [
                                9584
                              ],
                              "referencedDeclaration": 9584,
                              "type": "function (contract Avatar) view returns (bytes32)",
                              "value": "getParametersFromController"
                            },
                            "id": 2194,
                            "name": "Identifier",
                            "src": "18663:27:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "contract Avatar",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3873,
                                  "type": "type(contract Avatar)",
                                  "value": "Avatar"
                                },
                                "id": 2195,
                                "name": "Identifier",
                                "src": "18691:6:2"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2183,
                                  "type": "address",
                                  "value": "_avatar"
                                },
                                "id": 2196,
                                "name": "Identifier",
                                "src": "18698:7:2"
                              }
                            ],
                            "id": 2197,
                            "name": "FunctionCall",
                            "src": "18691:15:2"
                          }
                        ],
                        "id": 2198,
                        "name": "FunctionCall",
                        "src": "18663:44:2"
                      }
                    ],
                    "id": 2199,
                    "name": "VariableDeclarationStatement",
                    "src": "18642:65:2"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        2201
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "params",
                          "scope": 2241,
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "type": "struct GenesisProtocol.Parameters memory",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "Parameters",
                              "referencedDeclaration": 931,
                              "type": "struct GenesisProtocol.Parameters storage pointer"
                            },
                            "id": 2200,
                            "name": "UserDefinedTypeName",
                            "src": "18717:10:2"
                          }
                        ],
                        "id": 2201,
                        "name": "VariableDeclaration",
                        "src": "18717:24:2"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "struct GenesisProtocol.Parameters storage ref"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1042,
                              "type": "mapping(bytes32 => struct GenesisProtocol.Parameters storage ref)",
                              "value": "parameters"
                            },
                            "id": 2202,
                            "name": "Identifier",
                            "src": "18744:10:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2193,
                              "type": "bytes32",
                              "value": "paramsHash"
                            },
                            "id": 2203,
                            "name": "Identifier",
                            "src": "18755:10:2"
                          }
                        ],
                        "id": 2204,
                        "name": "IndexAccess",
                        "src": "18744:22:2"
                      }
                    ],
                    "id": 2205,
                    "name": "VariableDeclarationStatement",
                    "src": "18717:49:2"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_contract$_GenesisProtocolFormulasInterface_$3341",
                            "typeString": "contract GenesisProtocolFormulasInterface"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "==",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "governanceFormulasInterface",
                              "referencedDeclaration": 916,
                              "type": "contract GenesisProtocolFormulasInterface"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2201,
                                  "type": "struct GenesisProtocol.Parameters memory",
                                  "value": "params"
                                },
                                "id": 2206,
                                "name": "Identifier",
                                "src": "18780:6:2"
                              }
                            ],
                            "id": 2207,
                            "name": "MemberAccess",
                            "src": "18780:34:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "contract GenesisProtocolFormulasInterface",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3341,
                                  "type": "type(contract GenesisProtocolFormulasInterface)",
                                  "value": "GenesisProtocolFormulasInterface"
                                },
                                "id": 2208,
                                "name": "Identifier",
                                "src": "18818:32:2"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 2209,
                                "name": "Literal",
                                "src": "18851:1:2"
                              }
                            ],
                            "id": 2210,
                            "name": "FunctionCall",
                            "src": "18818:35:2"
                          }
                        ],
                        "id": 2211,
                        "name": "BinaryOperation",
                        "src": "18780:73:2"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "functionReturnParameters": 2187
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "int256",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "type": "type(int256)",
                                      "value": "int"
                                    },
                                    "id": 2212,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "18876:3:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "*",
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "thresholdConstA",
                                          "referencedDeclaration": 912,
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 2201,
                                              "type": "struct GenesisProtocol.Parameters memory",
                                              "value": "params"
                                            },
                                            "id": 2213,
                                            "name": "Identifier",
                                            "src": "18880:6:2"
                                          }
                                        ],
                                        "id": 2214,
                                        "name": "MemberAccess",
                                        "src": "18880:22:2"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "operator": "**",
                                              "type": "uint256"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 2189,
                                                  "type": "uint256",
                                                  "value": "e"
                                                },
                                                "id": 2215,
                                                "name": "Identifier",
                                                "src": "18906:1:2"
                                              },
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "isConstant": false,
                                                  "isInlineArray": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "type": "uint256"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      },
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "operator": "/",
                                                      "type": "uint256"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "argumentTypes": null,
                                                          "isConstant": false,
                                                          "isLValue": true,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "type": "uint256"
                                                        },
                                                        "children": [
                                                          {
                                                            "attributes": {
                                                              "argumentTypes": null,
                                                              "overloadedDeclarations": [
                                                                null
                                                              ],
                                                              "referencedDeclaration": 1055,
                                                              "type": "mapping(address => uint256)",
                                                              "value": "orgBoostedProposalsCnt"
                                                            },
                                                            "id": 2216,
                                                            "name": "Identifier",
                                                            "src": "18912:22:2"
                                                          },
                                                          {
                                                            "attributes": {
                                                              "argumentTypes": null,
                                                              "overloadedDeclarations": [
                                                                null
                                                              ],
                                                              "referencedDeclaration": 2183,
                                                              "type": "address",
                                                              "value": "_avatar"
                                                            },
                                                            "id": 2217,
                                                            "name": "Identifier",
                                                            "src": "18935:7:2"
                                                          }
                                                        ],
                                                        "id": 2218,
                                                        "name": "IndexAccess",
                                                        "src": "18912:31:2"
                                                      },
                                                      {
                                                        "attributes": {
                                                          "argumentTypes": null,
                                                          "isConstant": false,
                                                          "isLValue": true,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "member_name": "thresholdConstB",
                                                          "referencedDeclaration": 914,
                                                          "type": "uint256"
                                                        },
                                                        "children": [
                                                          {
                                                            "attributes": {
                                                              "argumentTypes": null,
                                                              "overloadedDeclarations": [
                                                                null
                                                              ],
                                                              "referencedDeclaration": 2201,
                                                              "type": "struct GenesisProtocol.Parameters memory",
                                                              "value": "params"
                                                            },
                                                            "id": 2219,
                                                            "name": "Identifier",
                                                            "src": "18944:6:2"
                                                          }
                                                        ],
                                                        "id": 2220,
                                                        "name": "MemberAccess",
                                                        "src": "18944:22:2"
                                                      }
                                                    ],
                                                    "id": 2221,
                                                    "name": "BinaryOperation",
                                                    "src": "18912:54:2"
                                                  }
                                                ],
                                                "id": 2222,
                                                "name": "TupleExpression",
                                                "src": "18911:56:2"
                                              }
                                            ],
                                            "id": 2223,
                                            "name": "BinaryOperation",
                                            "src": "18906:61:2"
                                          }
                                        ],
                                        "id": 2224,
                                        "name": "TupleExpression",
                                        "src": "18905:63:2"
                                      }
                                    ],
                                    "id": 2225,
                                    "name": "BinaryOperation",
                                    "src": "18880:88:2"
                                  }
                                ],
                                "id": 2226,
                                "name": "FunctionCall",
                                "src": "18876:93:2"
                              }
                            ],
                            "id": 2227,
                            "name": "Return",
                            "src": "18869:100:2"
                          }
                        ],
                        "id": 2228,
                        "name": "Block",
                        "src": "18855:125:2"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "functionReturnParameters": 2187
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "int256",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "type": "type(int256)",
                                      "value": "int"
                                    },
                                    "id": 2229,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "19007:3:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "type": "int256",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "threshold",
                                          "referencedDeclaration": 3315,
                                          "type": "function (address) view external returns (int256)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isInlineArray": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "type": "contract GenesisProtocolFormulasInterface"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "member_name": "governanceFormulasInterface",
                                                  "referencedDeclaration": 916,
                                                  "type": "contract GenesisProtocolFormulasInterface"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 2201,
                                                      "type": "struct GenesisProtocol.Parameters memory",
                                                      "value": "params"
                                                    },
                                                    "id": 2230,
                                                    "name": "Identifier",
                                                    "src": "19012:6:2"
                                                  }
                                                ],
                                                "id": 2231,
                                                "name": "MemberAccess",
                                                "src": "19012:34:2"
                                              }
                                            ],
                                            "id": 2232,
                                            "name": "TupleExpression",
                                            "src": "19011:36:2"
                                          }
                                        ],
                                        "id": 2233,
                                        "name": "MemberAccess",
                                        "src": "19011:46:2"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 2183,
                                          "type": "address",
                                          "value": "_avatar"
                                        },
                                        "id": 2234,
                                        "name": "Identifier",
                                        "src": "19058:7:2"
                                      }
                                    ],
                                    "id": 2235,
                                    "name": "FunctionCall",
                                    "src": "19011:55:2"
                                  }
                                ],
                                "id": 2236,
                                "name": "FunctionCall",
                                "src": "19007:60:2"
                              }
                            ],
                            "id": 2237,
                            "name": "Return",
                            "src": "19000:67:2"
                          }
                        ],
                        "id": 2238,
                        "name": "Block",
                        "src": "18986:92:2"
                      }
                    ],
                    "id": 2239,
                    "name": "IfStatement",
                    "src": "18776:302:2"
                  }
                ],
                "id": 2240,
                "name": "Block",
                "src": "18612:472:2"
              }
            ],
            "id": 2241,
            "name": "FunctionDefinition",
            "src": "18551:533:2"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "redeemAmount",
              "payable": false,
              "scope": 3292,
              "stateMutability": "view",
              "superFunction": 3324,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_proposalId",
                      "scope": 2322,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 2242,
                        "name": "ElementaryTypeName",
                        "src": "19346:7:2"
                      }
                    ],
                    "id": 2243,
                    "name": "VariableDeclaration",
                    "src": "19346:19:2"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_beneficiary",
                      "scope": 2322,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 2244,
                        "name": "ElementaryTypeName",
                        "src": "19366:7:2"
                      }
                    ],
                    "id": 2245,
                    "name": "VariableDeclaration",
                    "src": "19366:20:2"
                  }
                ],
                "id": 2246,
                "name": "ParameterList",
                "src": "19345:42:2"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 2322,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 2247,
                        "name": "ElementaryTypeName",
                        "src": "19408:4:2"
                      }
                    ],
                    "id": 2248,
                    "name": "VariableDeclaration",
                    "src": "19408:4:2"
                  }
                ],
                "id": 2249,
                "name": "ParameterList",
                "src": "19407:6:2"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        2251
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "paramsHash",
                          "scope": 2322,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "bytes32",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "bytes32",
                              "type": "bytes32"
                            },
                            "id": 2250,
                            "name": "ElementaryTypeName",
                            "src": "19424:7:2"
                          }
                        ],
                        "id": 2251,
                        "name": "VariableDeclaration",
                        "src": "19424:18:2"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bytes32",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_Avatar_$3873",
                                  "typeString": "contract Avatar"
                                }
                              ],
                              "overloadedDeclarations": [
                                9584
                              ],
                              "referencedDeclaration": 9584,
                              "type": "function (contract Avatar) view returns (bytes32)",
                              "value": "getParametersFromController"
                            },
                            "id": 2252,
                            "name": "Identifier",
                            "src": "19445:27:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "contract Avatar",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3873,
                                  "type": "type(contract Avatar)",
                                  "value": "Avatar"
                                },
                                "id": 2253,
                                "name": "Identifier",
                                "src": "19473:6:2"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "avatar",
                                  "referencedDeclaration": 945,
                                  "type": "address"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "type": "struct GenesisProtocol.Proposal storage ref"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1046,
                                          "type": "mapping(bytes32 => struct GenesisProtocol.Proposal storage ref)",
                                          "value": "proposals"
                                        },
                                        "id": 2254,
                                        "name": "Identifier",
                                        "src": "19480:9:2"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 2243,
                                          "type": "bytes32",
                                          "value": "_proposalId"
                                        },
                                        "id": 2255,
                                        "name": "Identifier",
                                        "src": "19490:11:2"
                                      }
                                    ],
                                    "id": 2256,
                                    "name": "IndexAccess",
                                    "src": "19480:22:2"
                                  }
                                ],
                                "id": 2257,
                                "name": "MemberAccess",
                                "src": "19480:29:2"
                              }
                            ],
                            "id": 2258,
                            "name": "FunctionCall",
                            "src": "19473:37:2"
                          }
                        ],
                        "id": 2259,
                        "name": "FunctionCall",
                        "src": "19445:66:2"
                      }
                    ],
                    "id": 2260,
                    "name": "VariableDeclarationStatement",
                    "src": "19424:87:2"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        2262
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "params",
                          "scope": 2322,
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "type": "struct GenesisProtocol.Parameters memory",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "Parameters",
                              "referencedDeclaration": 931,
                              "type": "struct GenesisProtocol.Parameters storage pointer"
                            },
                            "id": 2261,
                            "name": "UserDefinedTypeName",
                            "src": "19521:10:2"
                          }
                        ],
                        "id": 2262,
                        "name": "VariableDeclaration",
                        "src": "19521:24:2"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "struct GenesisProtocol.Parameters storage ref"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1042,
                              "type": "mapping(bytes32 => struct GenesisProtocol.Parameters storage ref)",
                              "value": "parameters"
                            },
                            "id": 2263,
                            "name": "Identifier",
                            "src": "19548:10:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2251,
                              "type": "bytes32",
                              "value": "paramsHash"
                            },
                            "id": 2264,
                            "name": "Identifier",
                            "src": "19559:10:2"
                          }
                        ],
                        "id": 2265,
                        "name": "IndexAccess",
                        "src": "19548:22:2"
                      }
                    ],
                    "id": 2266,
                    "name": "VariableDeclarationStatement",
                    "src": "19521:49:2"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_contract$_GenesisProtocolFormulasInterface_$3341",
                            "typeString": "contract GenesisProtocolFormulasInterface"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "==",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "governanceFormulasInterface",
                              "referencedDeclaration": 916,
                              "type": "contract GenesisProtocolFormulasInterface"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2262,
                                  "type": "struct GenesisProtocol.Parameters memory",
                                  "value": "params"
                                },
                                "id": 2267,
                                "name": "Identifier",
                                "src": "19584:6:2"
                              }
                            ],
                            "id": 2268,
                            "name": "MemberAccess",
                            "src": "19584:34:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "contract GenesisProtocolFormulasInterface",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3341,
                                  "type": "type(contract GenesisProtocolFormulasInterface)",
                                  "value": "GenesisProtocolFormulasInterface"
                                },
                                "id": 2269,
                                "name": "Identifier",
                                "src": "19622:32:2"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 2270,
                                "name": "Literal",
                                "src": "19655:1:2"
                              }
                            ],
                            "id": 2271,
                            "name": "FunctionCall",
                            "src": "19622:35:2"
                          }
                        ],
                        "id": 2272,
                        "name": "BinaryOperation",
                        "src": "19584:73:2"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "assignments": [
                                2274
                              ]
                            },
                            "children": [
                              {
                                "attributes": {
                                  "constant": false,
                                  "name": "proposal",
                                  "scope": 2322,
                                  "stateVariable": false,
                                  "storageLocation": "storage",
                                  "type": "struct GenesisProtocol.Proposal storage pointer",
                                  "value": null,
                                  "visibility": "internal"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "contractScope": null,
                                      "name": "Proposal",
                                      "referencedDeclaration": 986,
                                      "type": "struct GenesisProtocol.Proposal storage pointer"
                                    },
                                    "id": 2273,
                                    "name": "UserDefinedTypeName",
                                    "src": "19673:8:2"
                                  }
                                ],
                                "id": 2274,
                                "name": "VariableDeclaration",
                                "src": "19673:25:2"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "struct GenesisProtocol.Proposal storage ref"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1046,
                                      "type": "mapping(bytes32 => struct GenesisProtocol.Proposal storage ref)",
                                      "value": "proposals"
                                    },
                                    "id": 2275,
                                    "name": "Identifier",
                                    "src": "19701:9:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2243,
                                      "type": "bytes32",
                                      "value": "_proposalId"
                                    },
                                    "id": 2276,
                                    "name": "Identifier",
                                    "src": "19711:11:2"
                                  }
                                ],
                                "id": 2277,
                                "name": "IndexAccess",
                                "src": "19701:22:2"
                              }
                            ],
                            "id": 2278,
                            "name": "VariableDeclarationStatement",
                            "src": "19673:50:2"
                          },
                          {
                            "attributes": {
                              "falseBody": null
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "==",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "stakes",
                                          "referencedDeclaration": 981,
                                          "type": "mapping(uint256 => uint256)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 2274,
                                              "type": "struct GenesisProtocol.Proposal storage pointer",
                                              "value": "proposal"
                                            },
                                            "id": 2279,
                                            "name": "Identifier",
                                            "src": "19741:8:2"
                                          }
                                        ],
                                        "id": 2280,
                                        "name": "MemberAccess",
                                        "src": "19741:15:2"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "winningVote",
                                          "referencedDeclaration": 965,
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "type": "struct GenesisProtocol.Proposal storage ref"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 1046,
                                                  "type": "mapping(bytes32 => struct GenesisProtocol.Proposal storage ref)",
                                                  "value": "proposals"
                                                },
                                                "id": 2281,
                                                "name": "Identifier",
                                                "src": "19757:9:2"
                                              },
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 2243,
                                                  "type": "bytes32",
                                                  "value": "_proposalId"
                                                },
                                                "id": 2282,
                                                "name": "Identifier",
                                                "src": "19767:11:2"
                                              }
                                            ],
                                            "id": 2283,
                                            "name": "IndexAccess",
                                            "src": "19757:22:2"
                                          }
                                        ],
                                        "id": 2284,
                                        "name": "MemberAccess",
                                        "src": "19757:34:2"
                                      }
                                    ],
                                    "id": 2285,
                                    "name": "IndexAccess",
                                    "src": "19741:51:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "30",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 0",
                                      "value": "0"
                                    },
                                    "id": 2286,
                                    "name": "Literal",
                                    "src": "19796:1:2"
                                  }
                                ],
                                "id": 2287,
                                "name": "BinaryOperation",
                                "src": "19741:56:2"
                              },
                              {
                                "children": [
                                  {
                                    "attributes": {
                                      "functionReturnParameters": 2249
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "30",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 0",
                                          "value": "0"
                                        },
                                        "id": 2288,
                                        "name": "Literal",
                                        "src": "19884:1:2"
                                      }
                                    ],
                                    "id": 2289,
                                    "name": "Return",
                                    "src": "19877:8:2"
                                  }
                                ],
                                "id": 2290,
                                "name": "Block",
                                "src": "19799:101:2"
                              }
                            ],
                            "id": 2291,
                            "name": "IfStatement",
                            "src": "19737:163:2"
                          },
                          {
                            "attributes": {
                              "functionReturnParameters": 2249
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "/",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "*",
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "amount",
                                              "referencedDeclaration": 942,
                                              "type": "uint256"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "type": "struct GenesisProtocol.Staker storage ref"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "member_name": "stakers",
                                                      "referencedDeclaration": 985,
                                                      "type": "mapping(address => struct GenesisProtocol.Staker storage ref)"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "argumentTypes": null,
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 2274,
                                                          "type": "struct GenesisProtocol.Proposal storage pointer",
                                                          "value": "proposal"
                                                        },
                                                        "id": 2292,
                                                        "name": "Identifier",
                                                        "src": "19921:8:2"
                                                      }
                                                    ],
                                                    "id": 2293,
                                                    "name": "MemberAccess",
                                                    "src": "19921:16:2"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 2245,
                                                      "type": "address",
                                                      "value": "_beneficiary"
                                                    },
                                                    "id": 2294,
                                                    "name": "Identifier",
                                                    "src": "19938:12:2"
                                                  }
                                                ],
                                                "id": 2295,
                                                "name": "IndexAccess",
                                                "src": "19921:30:2"
                                              }
                                            ],
                                            "id": 2296,
                                            "name": "MemberAccess",
                                            "src": "19921:37:2"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "totalStakes",
                                              "referencedDeclaration": 953,
                                              "type": "uint256"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 2274,
                                                  "type": "struct GenesisProtocol.Proposal storage pointer",
                                                  "value": "proposal"
                                                },
                                                "id": 2297,
                                                "name": "Identifier",
                                                "src": "19961:8:2"
                                              }
                                            ],
                                            "id": 2298,
                                            "name": "MemberAccess",
                                            "src": "19961:20:2"
                                          }
                                        ],
                                        "id": 2299,
                                        "name": "BinaryOperation",
                                        "src": "19921:60:2"
                                      }
                                    ],
                                    "id": 2300,
                                    "name": "TupleExpression",
                                    "src": "19920:62:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "stakes",
                                          "referencedDeclaration": 981,
                                          "type": "mapping(uint256 => uint256)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 2274,
                                              "type": "struct GenesisProtocol.Proposal storage pointer",
                                              "value": "proposal"
                                            },
                                            "id": 2301,
                                            "name": "Identifier",
                                            "src": "19985:8:2"
                                          }
                                        ],
                                        "id": 2302,
                                        "name": "MemberAccess",
                                        "src": "19985:15:2"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "winningVote",
                                          "referencedDeclaration": 965,
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "type": "struct GenesisProtocol.Proposal storage ref"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 1046,
                                                  "type": "mapping(bytes32 => struct GenesisProtocol.Proposal storage ref)",
                                                  "value": "proposals"
                                                },
                                                "id": 2303,
                                                "name": "Identifier",
                                                "src": "20001:9:2"
                                              },
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 2243,
                                                  "type": "bytes32",
                                                  "value": "_proposalId"
                                                },
                                                "id": 2304,
                                                "name": "Identifier",
                                                "src": "20011:11:2"
                                              }
                                            ],
                                            "id": 2305,
                                            "name": "IndexAccess",
                                            "src": "20001:22:2"
                                          }
                                        ],
                                        "id": 2306,
                                        "name": "MemberAccess",
                                        "src": "20001:34:2"
                                      }
                                    ],
                                    "id": 2307,
                                    "name": "IndexAccess",
                                    "src": "19985:51:2"
                                  }
                                ],
                                "id": 2308,
                                "name": "BinaryOperation",
                                "src": "19920:116:2"
                              }
                            ],
                            "id": 2309,
                            "name": "Return",
                            "src": "19913:123:2"
                          }
                        ],
                        "id": 2310,
                        "name": "Block",
                        "src": "19659:388:2"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "functionReturnParameters": 2249
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "uint256",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "redeemAmount",
                                      "referencedDeclaration": 3324,
                                      "type": "function (bytes32,address) view external returns (uint256)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "type": "contract GenesisProtocolFormulasInterface"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "governanceFormulasInterface",
                                              "referencedDeclaration": 916,
                                              "type": "contract GenesisProtocolFormulasInterface"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 2262,
                                                  "type": "struct GenesisProtocol.Parameters memory",
                                                  "value": "params"
                                                },
                                                "id": 2311,
                                                "name": "Identifier",
                                                "src": "20075:6:2"
                                              }
                                            ],
                                            "id": 2312,
                                            "name": "MemberAccess",
                                            "src": "20075:34:2"
                                          }
                                        ],
                                        "id": 2313,
                                        "name": "TupleExpression",
                                        "src": "20074:36:2"
                                      }
                                    ],
                                    "id": 2314,
                                    "name": "MemberAccess",
                                    "src": "20074:49:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2243,
                                      "type": "bytes32",
                                      "value": "_proposalId"
                                    },
                                    "id": 2315,
                                    "name": "Identifier",
                                    "src": "20124:11:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2245,
                                      "type": "address",
                                      "value": "_beneficiary"
                                    },
                                    "id": 2316,
                                    "name": "Identifier",
                                    "src": "20136:12:2"
                                  }
                                ],
                                "id": 2317,
                                "name": "FunctionCall",
                                "src": "20074:75:2"
                              }
                            ],
                            "id": 2318,
                            "name": "Return",
                            "src": "20067:82:2"
                          }
                        ],
                        "id": 2319,
                        "name": "Block",
                        "src": "20053:107:2"
                      }
                    ],
                    "id": 2320,
                    "name": "IfStatement",
                    "src": "19580:580:2"
                  }
                ],
                "id": 2321,
                "name": "Block",
                "src": "19414:752:2"
              }
            ],
            "id": 2322,
            "name": "FunctionDefinition",
            "src": "19324:842:2"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "redeemProposerReputation",
              "payable": false,
              "scope": 3292,
              "stateMutability": "view",
              "superFunction": 3331,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_proposalId",
                      "scope": 2410,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 2323,
                        "name": "ElementaryTypeName",
                        "src": "20412:7:2"
                      }
                    ],
                    "id": 2324,
                    "name": "VariableDeclaration",
                    "src": "20412:19:2"
                  }
                ],
                "id": 2325,
                "name": "ParameterList",
                "src": "20411:21:2"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 2410,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "int256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "int",
                          "type": "int256"
                        },
                        "id": 2326,
                        "name": "ElementaryTypeName",
                        "src": "20453:3:2"
                      }
                    ],
                    "id": 2327,
                    "name": "VariableDeclaration",
                    "src": "20453:3:2"
                  }
                ],
                "id": 2328,
                "name": "ParameterList",
                "src": "20452:5:2"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        2330
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "paramsHash",
                          "scope": 2410,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "bytes32",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "bytes32",
                              "type": "bytes32"
                            },
                            "id": 2329,
                            "name": "ElementaryTypeName",
                            "src": "20468:7:2"
                          }
                        ],
                        "id": 2330,
                        "name": "VariableDeclaration",
                        "src": "20468:18:2"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bytes32",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_Avatar_$3873",
                                  "typeString": "contract Avatar"
                                }
                              ],
                              "overloadedDeclarations": [
                                9584
                              ],
                              "referencedDeclaration": 9584,
                              "type": "function (contract Avatar) view returns (bytes32)",
                              "value": "getParametersFromController"
                            },
                            "id": 2331,
                            "name": "Identifier",
                            "src": "20489:27:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "contract Avatar",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3873,
                                  "type": "type(contract Avatar)",
                                  "value": "Avatar"
                                },
                                "id": 2332,
                                "name": "Identifier",
                                "src": "20517:6:2"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "avatar",
                                  "referencedDeclaration": 945,
                                  "type": "address"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "type": "struct GenesisProtocol.Proposal storage ref"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1046,
                                          "type": "mapping(bytes32 => struct GenesisProtocol.Proposal storage ref)",
                                          "value": "proposals"
                                        },
                                        "id": 2333,
                                        "name": "Identifier",
                                        "src": "20524:9:2"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 2324,
                                          "type": "bytes32",
                                          "value": "_proposalId"
                                        },
                                        "id": 2334,
                                        "name": "Identifier",
                                        "src": "20534:11:2"
                                      }
                                    ],
                                    "id": 2335,
                                    "name": "IndexAccess",
                                    "src": "20524:22:2"
                                  }
                                ],
                                "id": 2336,
                                "name": "MemberAccess",
                                "src": "20524:29:2"
                              }
                            ],
                            "id": 2337,
                            "name": "FunctionCall",
                            "src": "20517:37:2"
                          }
                        ],
                        "id": 2338,
                        "name": "FunctionCall",
                        "src": "20489:66:2"
                      }
                    ],
                    "id": 2339,
                    "name": "VariableDeclarationStatement",
                    "src": "20468:87:2"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        2341
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "params",
                          "scope": 2410,
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "type": "struct GenesisProtocol.Parameters memory",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "Parameters",
                              "referencedDeclaration": 931,
                              "type": "struct GenesisProtocol.Parameters storage pointer"
                            },
                            "id": 2340,
                            "name": "UserDefinedTypeName",
                            "src": "20565:10:2"
                          }
                        ],
                        "id": 2341,
                        "name": "VariableDeclaration",
                        "src": "20565:24:2"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "struct GenesisProtocol.Parameters storage ref"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1042,
                              "type": "mapping(bytes32 => struct GenesisProtocol.Parameters storage ref)",
                              "value": "parameters"
                            },
                            "id": 2342,
                            "name": "Identifier",
                            "src": "20592:10:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2330,
                              "type": "bytes32",
                              "value": "paramsHash"
                            },
                            "id": 2343,
                            "name": "Identifier",
                            "src": "20603:10:2"
                          }
                        ],
                        "id": 2344,
                        "name": "IndexAccess",
                        "src": "20592:22:2"
                      }
                    ],
                    "id": 2345,
                    "name": "VariableDeclarationStatement",
                    "src": "20565:49:2"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        null
                      ],
                      "initialValue": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "rep",
                          "scope": 2410,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "int256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "int",
                              "type": "int256"
                            },
                            "id": 2346,
                            "name": "ElementaryTypeName",
                            "src": "20624:3:2"
                          }
                        ],
                        "id": 2347,
                        "name": "VariableDeclaration",
                        "src": "20624:7:2"
                      }
                    ],
                    "id": 2348,
                    "name": "VariableDeclarationStatement",
                    "src": "20624:7:2"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_contract$_GenesisProtocolFormulasInterface_$3341",
                            "typeString": "contract GenesisProtocolFormulasInterface"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "==",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "governanceFormulasInterface",
                              "referencedDeclaration": 916,
                              "type": "contract GenesisProtocolFormulasInterface"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2341,
                                  "type": "struct GenesisProtocol.Parameters memory",
                                  "value": "params"
                                },
                                "id": 2349,
                                "name": "Identifier",
                                "src": "20645:6:2"
                              }
                            ],
                            "id": 2350,
                            "name": "MemberAccess",
                            "src": "20645:34:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "contract GenesisProtocolFormulasInterface",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3341,
                                  "type": "type(contract GenesisProtocolFormulasInterface)",
                                  "value": "GenesisProtocolFormulasInterface"
                                },
                                "id": 2351,
                                "name": "Identifier",
                                "src": "20683:32:2"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 2352,
                                "name": "Literal",
                                "src": "20716:1:2"
                              }
                            ],
                            "id": 2353,
                            "name": "FunctionCall",
                            "src": "20683:35:2"
                          }
                        ],
                        "id": 2354,
                        "name": "BinaryOperation",
                        "src": "20645:73:2"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "assignments": [
                                2356
                              ]
                            },
                            "children": [
                              {
                                "attributes": {
                                  "constant": false,
                                  "name": "proposal",
                                  "scope": 2410,
                                  "stateVariable": false,
                                  "storageLocation": "storage",
                                  "type": "struct GenesisProtocol.Proposal storage pointer",
                                  "value": null,
                                  "visibility": "internal"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "contractScope": null,
                                      "name": "Proposal",
                                      "referencedDeclaration": 986,
                                      "type": "struct GenesisProtocol.Proposal storage pointer"
                                    },
                                    "id": 2355,
                                    "name": "UserDefinedTypeName",
                                    "src": "20734:8:2"
                                  }
                                ],
                                "id": 2356,
                                "name": "VariableDeclaration",
                                "src": "20734:25:2"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "struct GenesisProtocol.Proposal storage ref"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1046,
                                      "type": "mapping(bytes32 => struct GenesisProtocol.Proposal storage ref)",
                                      "value": "proposals"
                                    },
                                    "id": 2357,
                                    "name": "Identifier",
                                    "src": "20762:9:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2324,
                                      "type": "bytes32",
                                      "value": "_proposalId"
                                    },
                                    "id": 2358,
                                    "name": "Identifier",
                                    "src": "20772:11:2"
                                  }
                                ],
                                "id": 2359,
                                "name": "IndexAccess",
                                "src": "20762:22:2"
                              }
                            ],
                            "id": 2360,
                            "name": "VariableDeclarationStatement",
                            "src": "20734:50:2"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "==",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "winningVote",
                                      "referencedDeclaration": 965,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 2356,
                                          "type": "struct GenesisProtocol.Proposal storage pointer",
                                          "value": "proposal"
                                        },
                                        "id": 2361,
                                        "name": "Identifier",
                                        "src": "20802:8:2"
                                      }
                                    ],
                                    "id": 2362,
                                    "name": "MemberAccess",
                                    "src": "20802:20:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "30",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 0",
                                      "value": "0"
                                    },
                                    "id": 2363,
                                    "name": "Literal",
                                    "src": "20826:1:2"
                                  }
                                ],
                                "id": 2364,
                                "name": "BinaryOperation",
                                "src": "20802:25:2"
                              },
                              {
                                "children": [
                                  {
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "=",
                                          "type": "int256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 2347,
                                              "type": "int256",
                                              "value": "rep"
                                            },
                                            "id": 2365,
                                            "name": "Identifier",
                                            "src": "20847:3:2"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "hexvalue": "30",
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "subdenomination": null,
                                              "token": "number",
                                              "type": "int_const 0",
                                              "value": "0"
                                            },
                                            "id": 2366,
                                            "name": "Literal",
                                            "src": "20853:1:2"
                                          }
                                        ],
                                        "id": 2367,
                                        "name": "Assignment",
                                        "src": "20847:7:2"
                                      }
                                    ],
                                    "id": 2368,
                                    "name": "ExpressionStatement",
                                    "src": "20847:7:2"
                                  }
                                ],
                                "id": 2369,
                                "name": "Block",
                                "src": "20829:40:2"
                              },
                              {
                                "children": [
                                  {
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "=",
                                          "type": "int256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 2347,
                                              "type": "int256",
                                              "value": "rep"
                                            },
                                            "id": 2370,
                                            "name": "Identifier",
                                            "src": "20893:3:2"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "isStructConstructorCall": false,
                                              "lValueRequested": false,
                                              "names": [
                                                null
                                              ],
                                              "type": "int256",
                                              "type_conversion": true
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  ],
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "type": "type(int256)",
                                                  "value": "int"
                                                },
                                                "id": 2371,
                                                "name": "ElementaryTypeNameExpression",
                                                "src": "20899:3:2"
                                              },
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "commonType": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  },
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "operator": "+",
                                                  "type": "uint256"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "member_name": "proposingRepRewardConstA",
                                                      "referencedDeclaration": 922,
                                                      "type": "uint256"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "argumentTypes": null,
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 2341,
                                                          "type": "struct GenesisProtocol.Parameters memory",
                                                          "value": "params"
                                                        },
                                                        "id": 2372,
                                                        "name": "Identifier",
                                                        "src": "20903:6:2"
                                                      }
                                                    ],
                                                    "id": 2373,
                                                    "name": "MemberAccess",
                                                    "src": "20903:31:2"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      },
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "operator": "*",
                                                      "type": "uint256"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "argumentTypes": null,
                                                          "isConstant": false,
                                                          "isLValue": true,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "member_name": "proposingRepRewardConstB",
                                                          "referencedDeclaration": 924,
                                                          "type": "uint256"
                                                        },
                                                        "children": [
                                                          {
                                                            "attributes": {
                                                              "argumentTypes": null,
                                                              "overloadedDeclarations": [
                                                                null
                                                              ],
                                                              "referencedDeclaration": 2341,
                                                              "type": "struct GenesisProtocol.Parameters memory",
                                                              "value": "params"
                                                            },
                                                            "id": 2374,
                                                            "name": "Identifier",
                                                            "src": "20937:6:2"
                                                          }
                                                        ],
                                                        "id": 2375,
                                                        "name": "MemberAccess",
                                                        "src": "20937:31:2"
                                                      },
                                                      {
                                                        "attributes": {
                                                          "argumentTypes": null,
                                                          "isConstant": false,
                                                          "isInlineArray": false,
                                                          "isLValue": false,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "type": "uint256"
                                                        },
                                                        "children": [
                                                          {
                                                            "attributes": {
                                                              "argumentTypes": null,
                                                              "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                              },
                                                              "isConstant": false,
                                                              "isLValue": false,
                                                              "isPure": false,
                                                              "lValueRequested": false,
                                                              "operator": "-",
                                                              "type": "uint256"
                                                            },
                                                            "children": [
                                                              {
                                                                "attributes": {
                                                                  "argumentTypes": null,
                                                                  "isConstant": false,
                                                                  "isLValue": true,
                                                                  "isPure": false,
                                                                  "lValueRequested": false,
                                                                  "type": "uint256"
                                                                },
                                                                "children": [
                                                                  {
                                                                    "attributes": {
                                                                      "argumentTypes": null,
                                                                      "isConstant": false,
                                                                      "isLValue": true,
                                                                      "isPure": false,
                                                                      "lValueRequested": false,
                                                                      "member_name": "votes",
                                                                      "referencedDeclaration": 973,
                                                                      "type": "mapping(uint256 => uint256)"
                                                                    },
                                                                    "children": [
                                                                      {
                                                                        "attributes": {
                                                                          "argumentTypes": null,
                                                                          "overloadedDeclarations": [
                                                                            null
                                                                          ],
                                                                          "referencedDeclaration": 2356,
                                                                          "type": "struct GenesisProtocol.Proposal storage pointer",
                                                                          "value": "proposal"
                                                                        },
                                                                        "id": 2376,
                                                                        "name": "Identifier",
                                                                        "src": "20972:8:2"
                                                                      }
                                                                    ],
                                                                    "id": 2377,
                                                                    "name": "MemberAccess",
                                                                    "src": "20972:14:2"
                                                                  },
                                                                  {
                                                                    "attributes": {
                                                                      "argumentTypes": null,
                                                                      "hexvalue": "31",
                                                                      "isConstant": false,
                                                                      "isLValue": false,
                                                                      "isPure": true,
                                                                      "lValueRequested": false,
                                                                      "subdenomination": null,
                                                                      "token": "number",
                                                                      "type": "int_const 1",
                                                                      "value": "1"
                                                                    },
                                                                    "id": 2378,
                                                                    "name": "Literal",
                                                                    "src": "20987:1:2"
                                                                  }
                                                                ],
                                                                "id": 2379,
                                                                "name": "IndexAccess",
                                                                "src": "20972:17:2"
                                                              },
                                                              {
                                                                "attributes": {
                                                                  "argumentTypes": null,
                                                                  "isConstant": false,
                                                                  "isLValue": true,
                                                                  "isPure": false,
                                                                  "lValueRequested": false,
                                                                  "type": "uint256"
                                                                },
                                                                "children": [
                                                                  {
                                                                    "attributes": {
                                                                      "argumentTypes": null,
                                                                      "isConstant": false,
                                                                      "isLValue": true,
                                                                      "isPure": false,
                                                                      "lValueRequested": false,
                                                                      "member_name": "votes",
                                                                      "referencedDeclaration": 973,
                                                                      "type": "mapping(uint256 => uint256)"
                                                                    },
                                                                    "children": [
                                                                      {
                                                                        "attributes": {
                                                                          "argumentTypes": null,
                                                                          "overloadedDeclarations": [
                                                                            null
                                                                          ],
                                                                          "referencedDeclaration": 2356,
                                                                          "type": "struct GenesisProtocol.Proposal storage pointer",
                                                                          "value": "proposal"
                                                                        },
                                                                        "id": 2380,
                                                                        "name": "Identifier",
                                                                        "src": "20990:8:2"
                                                                      }
                                                                    ],
                                                                    "id": 2381,
                                                                    "name": "MemberAccess",
                                                                    "src": "20990:14:2"
                                                                  },
                                                                  {
                                                                    "attributes": {
                                                                      "argumentTypes": null,
                                                                      "hexvalue": "30",
                                                                      "isConstant": false,
                                                                      "isLValue": false,
                                                                      "isPure": true,
                                                                      "lValueRequested": false,
                                                                      "subdenomination": null,
                                                                      "token": "number",
                                                                      "type": "int_const 0",
                                                                      "value": "0"
                                                                    },
                                                                    "id": 2382,
                                                                    "name": "Literal",
                                                                    "src": "21005:1:2"
                                                                  }
                                                                ],
                                                                "id": 2383,
                                                                "name": "IndexAccess",
                                                                "src": "20990:17:2"
                                                              }
                                                            ],
                                                            "id": 2384,
                                                            "name": "BinaryOperation",
                                                            "src": "20972:35:2"
                                                          }
                                                        ],
                                                        "id": 2385,
                                                        "name": "TupleExpression",
                                                        "src": "20971:37:2"
                                                      }
                                                    ],
                                                    "id": 2386,
                                                    "name": "BinaryOperation",
                                                    "src": "20937:71:2"
                                                  }
                                                ],
                                                "id": 2387,
                                                "name": "BinaryOperation",
                                                "src": "20903:105:2"
                                              }
                                            ],
                                            "id": 2388,
                                            "name": "FunctionCall",
                                            "src": "20899:110:2"
                                          }
                                        ],
                                        "id": 2389,
                                        "name": "Assignment",
                                        "src": "20893:116:2"
                                      }
                                    ],
                                    "id": 2390,
                                    "name": "ExpressionStatement",
                                    "src": "20893:116:2"
                                  }
                                ],
                                "id": 2391,
                                "name": "Block",
                                "src": "20875:149:2"
                              }
                            ],
                            "id": 2392,
                            "name": "IfStatement",
                            "src": "20798:226:2"
                          }
                        ],
                        "id": 2393,
                        "name": "Block",
                        "src": "20720:314:2"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "=",
                                  "type": "int256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2347,
                                      "type": "int256",
                                      "value": "rep"
                                    },
                                    "id": 2394,
                                    "name": "Identifier",
                                    "src": "21054:3:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "type": "int256",
                                      "type_conversion": true
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_int256",
                                              "typeString": "int256"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "type": "type(int256)",
                                          "value": "int"
                                        },
                                        "id": 2395,
                                        "name": "ElementaryTypeNameExpression",
                                        "src": "21060:3:2"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "isStructConstructorCall": false,
                                          "lValueRequested": false,
                                          "names": [
                                            null
                                          ],
                                          "type": "int256",
                                          "type_conversion": false
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_bytes32",
                                                  "typeString": "bytes32"
                                                }
                                              ],
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "redeemProposerReputation",
                                              "referencedDeclaration": 3331,
                                              "type": "function (bytes32) view external returns (int256)"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "isConstant": false,
                                                  "isInlineArray": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "type": "contract GenesisProtocolFormulasInterface"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "member_name": "governanceFormulasInterface",
                                                      "referencedDeclaration": 916,
                                                      "type": "contract GenesisProtocolFormulasInterface"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "argumentTypes": null,
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 2341,
                                                          "type": "struct GenesisProtocol.Parameters memory",
                                                          "value": "params"
                                                        },
                                                        "id": 2396,
                                                        "name": "Identifier",
                                                        "src": "21065:6:2"
                                                      }
                                                    ],
                                                    "id": 2397,
                                                    "name": "MemberAccess",
                                                    "src": "21065:34:2"
                                                  }
                                                ],
                                                "id": 2398,
                                                "name": "TupleExpression",
                                                "src": "21064:36:2"
                                              }
                                            ],
                                            "id": 2399,
                                            "name": "MemberAccess",
                                            "src": "21064:61:2"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 2324,
                                              "type": "bytes32",
                                              "value": "_proposalId"
                                            },
                                            "id": 2400,
                                            "name": "Identifier",
                                            "src": "21126:11:2"
                                          }
                                        ],
                                        "id": 2401,
                                        "name": "FunctionCall",
                                        "src": "21064:74:2"
                                      }
                                    ],
                                    "id": 2402,
                                    "name": "FunctionCall",
                                    "src": "21060:79:2"
                                  }
                                ],
                                "id": 2403,
                                "name": "Assignment",
                                "src": "21054:85:2"
                              }
                            ],
                            "id": 2404,
                            "name": "ExpressionStatement",
                            "src": "21054:85:2"
                          }
                        ],
                        "id": 2405,
                        "name": "Block",
                        "src": "21040:110:2"
                      }
                    ],
                    "id": 2406,
                    "name": "IfStatement",
                    "src": "20641:509:2"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 2328
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 2347,
                          "type": "int256",
                          "value": "rep"
                        },
                        "id": 2407,
                        "name": "Identifier",
                        "src": "21166:3:2"
                      }
                    ],
                    "id": 2408,
                    "name": "Return",
                    "src": "21159:10:2"
                  }
                ],
                "id": 2409,
                "name": "Block",
                "src": "20458:718:2"
              }
            ],
            "id": 2410,
            "name": "FunctionDefinition",
            "src": "20378:798:2"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "redeemVoterAmount",
              "payable": false,
              "scope": 3292,
              "stateMutability": "view",
              "superFunction": 3340,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_proposalId",
                      "scope": 2481,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 2411,
                        "name": "ElementaryTypeName",
                        "src": "21458:7:2"
                      }
                    ],
                    "id": 2412,
                    "name": "VariableDeclaration",
                    "src": "21458:19:2"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_beneficiary",
                      "scope": 2481,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 2413,
                        "name": "ElementaryTypeName",
                        "src": "21479:7:2"
                      }
                    ],
                    "id": 2414,
                    "name": "VariableDeclaration",
                    "src": "21479:20:2"
                  }
                ],
                "id": 2415,
                "name": "ParameterList",
                "src": "21457:43:2"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 2481,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 2416,
                        "name": "ElementaryTypeName",
                        "src": "21521:4:2"
                      }
                    ],
                    "id": 2417,
                    "name": "VariableDeclaration",
                    "src": "21521:4:2"
                  }
                ],
                "id": 2418,
                "name": "ParameterList",
                "src": "21520:6:2"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        2420
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "paramsHash",
                          "scope": 2481,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "bytes32",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "bytes32",
                              "type": "bytes32"
                            },
                            "id": 2419,
                            "name": "ElementaryTypeName",
                            "src": "21537:7:2"
                          }
                        ],
                        "id": 2420,
                        "name": "VariableDeclaration",
                        "src": "21537:18:2"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bytes32",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_Avatar_$3873",
                                  "typeString": "contract Avatar"
                                }
                              ],
                              "overloadedDeclarations": [
                                9584
                              ],
                              "referencedDeclaration": 9584,
                              "type": "function (contract Avatar) view returns (bytes32)",
                              "value": "getParametersFromController"
                            },
                            "id": 2421,
                            "name": "Identifier",
                            "src": "21558:27:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "contract Avatar",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3873,
                                  "type": "type(contract Avatar)",
                                  "value": "Avatar"
                                },
                                "id": 2422,
                                "name": "Identifier",
                                "src": "21586:6:2"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "avatar",
                                  "referencedDeclaration": 945,
                                  "type": "address"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "type": "struct GenesisProtocol.Proposal storage ref"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1046,
                                          "type": "mapping(bytes32 => struct GenesisProtocol.Proposal storage ref)",
                                          "value": "proposals"
                                        },
                                        "id": 2423,
                                        "name": "Identifier",
                                        "src": "21593:9:2"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 2412,
                                          "type": "bytes32",
                                          "value": "_proposalId"
                                        },
                                        "id": 2424,
                                        "name": "Identifier",
                                        "src": "21603:11:2"
                                      }
                                    ],
                                    "id": 2425,
                                    "name": "IndexAccess",
                                    "src": "21593:22:2"
                                  }
                                ],
                                "id": 2426,
                                "name": "MemberAccess",
                                "src": "21593:29:2"
                              }
                            ],
                            "id": 2427,
                            "name": "FunctionCall",
                            "src": "21586:37:2"
                          }
                        ],
                        "id": 2428,
                        "name": "FunctionCall",
                        "src": "21558:66:2"
                      }
                    ],
                    "id": 2429,
                    "name": "VariableDeclarationStatement",
                    "src": "21537:87:2"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        2431
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "params",
                          "scope": 2481,
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "type": "struct GenesisProtocol.Parameters memory",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "Parameters",
                              "referencedDeclaration": 931,
                              "type": "struct GenesisProtocol.Parameters storage pointer"
                            },
                            "id": 2430,
                            "name": "UserDefinedTypeName",
                            "src": "21634:10:2"
                          }
                        ],
                        "id": 2431,
                        "name": "VariableDeclaration",
                        "src": "21634:24:2"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "struct GenesisProtocol.Parameters storage ref"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1042,
                              "type": "mapping(bytes32 => struct GenesisProtocol.Parameters storage ref)",
                              "value": "parameters"
                            },
                            "id": 2432,
                            "name": "Identifier",
                            "src": "21661:10:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2420,
                              "type": "bytes32",
                              "value": "paramsHash"
                            },
                            "id": 2433,
                            "name": "Identifier",
                            "src": "21672:10:2"
                          }
                        ],
                        "id": 2434,
                        "name": "IndexAccess",
                        "src": "21661:22:2"
                      }
                    ],
                    "id": 2435,
                    "name": "VariableDeclarationStatement",
                    "src": "21634:49:2"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        2437
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "proposal",
                          "scope": 2481,
                          "stateVariable": false,
                          "storageLocation": "storage",
                          "type": "struct GenesisProtocol.Proposal storage pointer",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "Proposal",
                              "referencedDeclaration": 986,
                              "type": "struct GenesisProtocol.Proposal storage pointer"
                            },
                            "id": 2436,
                            "name": "UserDefinedTypeName",
                            "src": "21693:8:2"
                          }
                        ],
                        "id": 2437,
                        "name": "VariableDeclaration",
                        "src": "21693:25:2"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "struct GenesisProtocol.Proposal storage ref"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1046,
                              "type": "mapping(bytes32 => struct GenesisProtocol.Proposal storage ref)",
                              "value": "proposals"
                            },
                            "id": 2438,
                            "name": "Identifier",
                            "src": "21721:9:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2412,
                              "type": "bytes32",
                              "value": "_proposalId"
                            },
                            "id": 2439,
                            "name": "Identifier",
                            "src": "21731:11:2"
                          }
                        ],
                        "id": 2440,
                        "name": "IndexAccess",
                        "src": "21721:22:2"
                      }
                    ],
                    "id": 2441,
                    "name": "VariableDeclarationStatement",
                    "src": "21693:50:2"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "==",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "totalVotes",
                              "referencedDeclaration": 951,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2437,
                                  "type": "struct GenesisProtocol.Proposal storage pointer",
                                  "value": "proposal"
                                },
                                "id": 2442,
                                "name": "Identifier",
                                "src": "21757:8:2"
                              }
                            ],
                            "id": 2443,
                            "name": "MemberAccess",
                            "src": "21757:19:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 2444,
                            "name": "Literal",
                            "src": "21780:1:2"
                          }
                        ],
                        "id": 2445,
                        "name": "BinaryOperation",
                        "src": "21757:24:2"
                      },
                      {
                        "attributes": {
                          "functionReturnParameters": 2418
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 2446,
                            "name": "Literal",
                            "src": "21801:1:2"
                          }
                        ],
                        "id": 2447,
                        "name": "Return",
                        "src": "21794:8:2"
                      }
                    ],
                    "id": 2448,
                    "name": "IfStatement",
                    "src": "21753:49:2"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_contract$_GenesisProtocolFormulasInterface_$3341",
                            "typeString": "contract GenesisProtocolFormulasInterface"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "==",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "governanceFormulasInterface",
                              "referencedDeclaration": 916,
                              "type": "contract GenesisProtocolFormulasInterface"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2431,
                                  "type": "struct GenesisProtocol.Parameters memory",
                                  "value": "params"
                                },
                                "id": 2449,
                                "name": "Identifier",
                                "src": "21817:6:2"
                              }
                            ],
                            "id": 2450,
                            "name": "MemberAccess",
                            "src": "21817:34:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "contract GenesisProtocolFormulasInterface",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3341,
                                  "type": "type(contract GenesisProtocolFormulasInterface)",
                                  "value": "GenesisProtocolFormulasInterface"
                                },
                                "id": 2451,
                                "name": "Identifier",
                                "src": "21855:32:2"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 2452,
                                "name": "Literal",
                                "src": "21888:1:2"
                              }
                            ],
                            "id": 2453,
                            "name": "FunctionCall",
                            "src": "21855:35:2"
                          }
                        ],
                        "id": 2454,
                        "name": "BinaryOperation",
                        "src": "21817:73:2"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "functionReturnParameters": 2418
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "*",
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "votersStakes",
                                          "referencedDeclaration": 955,
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 2437,
                                              "type": "struct GenesisProtocol.Proposal storage pointer",
                                              "value": "proposal"
                                            },
                                            "id": 2455,
                                            "name": "Identifier",
                                            "src": "21914:8:2"
                                          }
                                        ],
                                        "id": 2456,
                                        "name": "MemberAccess",
                                        "src": "21914:21:2"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "operator": "/",
                                              "type": "uint256"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "member_name": "reputation",
                                                  "referencedDeclaration": 935,
                                                  "type": "uint256"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "type": "struct GenesisProtocol.Voter storage ref"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "argumentTypes": null,
                                                          "isConstant": false,
                                                          "isLValue": true,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "member_name": "voters",
                                                          "referencedDeclaration": 977,
                                                          "type": "mapping(address => struct GenesisProtocol.Voter storage ref)"
                                                        },
                                                        "children": [
                                                          {
                                                            "attributes": {
                                                              "argumentTypes": null,
                                                              "overloadedDeclarations": [
                                                                null
                                                              ],
                                                              "referencedDeclaration": 2437,
                                                              "type": "struct GenesisProtocol.Proposal storage pointer",
                                                              "value": "proposal"
                                                            },
                                                            "id": 2457,
                                                            "name": "Identifier",
                                                            "src": "21939:8:2"
                                                          }
                                                        ],
                                                        "id": 2458,
                                                        "name": "MemberAccess",
                                                        "src": "21939:15:2"
                                                      },
                                                      {
                                                        "attributes": {
                                                          "argumentTypes": null,
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 2414,
                                                          "type": "address",
                                                          "value": "_beneficiary"
                                                        },
                                                        "id": 2459,
                                                        "name": "Identifier",
                                                        "src": "21955:12:2"
                                                      }
                                                    ],
                                                    "id": 2460,
                                                    "name": "IndexAccess",
                                                    "src": "21939:29:2"
                                                  }
                                                ],
                                                "id": 2461,
                                                "name": "MemberAccess",
                                                "src": "21939:40:2"
                                              },
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "member_name": "totalVotes",
                                                  "referencedDeclaration": 951,
                                                  "type": "uint256"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 2437,
                                                      "type": "struct GenesisProtocol.Proposal storage pointer",
                                                      "value": "proposal"
                                                    },
                                                    "id": 2462,
                                                    "name": "Identifier",
                                                    "src": "21982:8:2"
                                                  }
                                                ],
                                                "id": 2463,
                                                "name": "MemberAccess",
                                                "src": "21982:19:2"
                                              }
                                            ],
                                            "id": 2464,
                                            "name": "BinaryOperation",
                                            "src": "21939:62:2"
                                          }
                                        ],
                                        "id": 2465,
                                        "name": "TupleExpression",
                                        "src": "21938:64:2"
                                      }
                                    ],
                                    "id": 2466,
                                    "name": "BinaryOperation",
                                    "src": "21914:88:2"
                                  }
                                ],
                                "id": 2467,
                                "name": "TupleExpression",
                                "src": "21913:90:2"
                              }
                            ],
                            "id": 2468,
                            "name": "Return",
                            "src": "21906:97:2"
                          }
                        ],
                        "id": 2469,
                        "name": "Block",
                        "src": "21892:122:2"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "functionReturnParameters": 2418
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "uint256",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "redeemVoterAmount",
                                      "referencedDeclaration": 3340,
                                      "type": "function (bytes32,address) view external returns (uint256)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "type": "contract GenesisProtocolFormulasInterface"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "governanceFormulasInterface",
                                              "referencedDeclaration": 916,
                                              "type": "contract GenesisProtocolFormulasInterface"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 2431,
                                                  "type": "struct GenesisProtocol.Parameters memory",
                                                  "value": "params"
                                                },
                                                "id": 2470,
                                                "name": "Identifier",
                                                "src": "22042:6:2"
                                              }
                                            ],
                                            "id": 2471,
                                            "name": "MemberAccess",
                                            "src": "22042:34:2"
                                          }
                                        ],
                                        "id": 2472,
                                        "name": "TupleExpression",
                                        "src": "22041:36:2"
                                      }
                                    ],
                                    "id": 2473,
                                    "name": "MemberAccess",
                                    "src": "22041:54:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2412,
                                      "type": "bytes32",
                                      "value": "_proposalId"
                                    },
                                    "id": 2474,
                                    "name": "Identifier",
                                    "src": "22096:11:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2414,
                                      "type": "address",
                                      "value": "_beneficiary"
                                    },
                                    "id": 2475,
                                    "name": "Identifier",
                                    "src": "22108:12:2"
                                  }
                                ],
                                "id": 2476,
                                "name": "FunctionCall",
                                "src": "22041:80:2"
                              }
                            ],
                            "id": 2477,
                            "name": "Return",
                            "src": "22034:87:2"
                          }
                        ],
                        "id": 2478,
                        "name": "Block",
                        "src": "22020:112:2"
                      }
                    ],
                    "id": 2479,
                    "name": "IfStatement",
                    "src": "21813:319:2"
                  }
                ],
                "id": 2480,
                "name": "Block",
                "src": "21527:611:2"
              }
            ],
            "id": 2481,
            "name": "FunctionDefinition",
            "src": "21431:707:2"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "redeemVoterReputation",
              "payable": false,
              "scope": 3292,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_proposalId",
                      "scope": 2603,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 2482,
                        "name": "ElementaryTypeName",
                        "src": "22432:7:2"
                      }
                    ],
                    "id": 2483,
                    "name": "VariableDeclaration",
                    "src": "22432:19:2"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_beneficiary",
                      "scope": 2603,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 2484,
                        "name": "ElementaryTypeName",
                        "src": "22453:7:2"
                      }
                    ],
                    "id": 2485,
                    "name": "VariableDeclaration",
                    "src": "22453:20:2"
                  }
                ],
                "id": 2486,
                "name": "ParameterList",
                "src": "22431:43:2"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 2603,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "int256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "int",
                          "type": "int256"
                        },
                        "id": 2487,
                        "name": "ElementaryTypeName",
                        "src": "22495:3:2"
                      }
                    ],
                    "id": 2488,
                    "name": "VariableDeclaration",
                    "src": "22495:3:2"
                  }
                ],
                "id": 2489,
                "name": "ParameterList",
                "src": "22494:5:2"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        2491
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "paramsHash",
                          "scope": 2603,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "bytes32",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "bytes32",
                              "type": "bytes32"
                            },
                            "id": 2490,
                            "name": "ElementaryTypeName",
                            "src": "22510:7:2"
                          }
                        ],
                        "id": 2491,
                        "name": "VariableDeclaration",
                        "src": "22510:18:2"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bytes32",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_Avatar_$3873",
                                  "typeString": "contract Avatar"
                                }
                              ],
                              "overloadedDeclarations": [
                                9584
                              ],
                              "referencedDeclaration": 9584,
                              "type": "function (contract Avatar) view returns (bytes32)",
                              "value": "getParametersFromController"
                            },
                            "id": 2492,
                            "name": "Identifier",
                            "src": "22531:27:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "contract Avatar",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3873,
                                  "type": "type(contract Avatar)",
                                  "value": "Avatar"
                                },
                                "id": 2493,
                                "name": "Identifier",
                                "src": "22559:6:2"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "avatar",
                                  "referencedDeclaration": 945,
                                  "type": "address"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "type": "struct GenesisProtocol.Proposal storage ref"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1046,
                                          "type": "mapping(bytes32 => struct GenesisProtocol.Proposal storage ref)",
                                          "value": "proposals"
                                        },
                                        "id": 2494,
                                        "name": "Identifier",
                                        "src": "22566:9:2"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 2483,
                                          "type": "bytes32",
                                          "value": "_proposalId"
                                        },
                                        "id": 2495,
                                        "name": "Identifier",
                                        "src": "22576:11:2"
                                      }
                                    ],
                                    "id": 2496,
                                    "name": "IndexAccess",
                                    "src": "22566:22:2"
                                  }
                                ],
                                "id": 2497,
                                "name": "MemberAccess",
                                "src": "22566:29:2"
                              }
                            ],
                            "id": 2498,
                            "name": "FunctionCall",
                            "src": "22559:37:2"
                          }
                        ],
                        "id": 2499,
                        "name": "FunctionCall",
                        "src": "22531:66:2"
                      }
                    ],
                    "id": 2500,
                    "name": "VariableDeclarationStatement",
                    "src": "22510:87:2"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        2502
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "params",
                          "scope": 2603,
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "type": "struct GenesisProtocol.Parameters memory",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "Parameters",
                              "referencedDeclaration": 931,
                              "type": "struct GenesisProtocol.Parameters storage pointer"
                            },
                            "id": 2501,
                            "name": "UserDefinedTypeName",
                            "src": "22607:10:2"
                          }
                        ],
                        "id": 2502,
                        "name": "VariableDeclaration",
                        "src": "22607:24:2"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "struct GenesisProtocol.Parameters storage ref"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1042,
                              "type": "mapping(bytes32 => struct GenesisProtocol.Parameters storage ref)",
                              "value": "parameters"
                            },
                            "id": 2503,
                            "name": "Identifier",
                            "src": "22634:10:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2491,
                              "type": "bytes32",
                              "value": "paramsHash"
                            },
                            "id": 2504,
                            "name": "Identifier",
                            "src": "22645:10:2"
                          }
                        ],
                        "id": 2505,
                        "name": "IndexAccess",
                        "src": "22634:22:2"
                      }
                    ],
                    "id": 2506,
                    "name": "VariableDeclarationStatement",
                    "src": "22607:49:2"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        2508
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "proposal",
                          "scope": 2603,
                          "stateVariable": false,
                          "storageLocation": "storage",
                          "type": "struct GenesisProtocol.Proposal storage pointer",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "Proposal",
                              "referencedDeclaration": 986,
                              "type": "struct GenesisProtocol.Proposal storage pointer"
                            },
                            "id": 2507,
                            "name": "UserDefinedTypeName",
                            "src": "22666:8:2"
                          }
                        ],
                        "id": 2508,
                        "name": "VariableDeclaration",
                        "src": "22666:25:2"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "struct GenesisProtocol.Proposal storage ref"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1046,
                              "type": "mapping(bytes32 => struct GenesisProtocol.Proposal storage ref)",
                              "value": "proposals"
                            },
                            "id": 2509,
                            "name": "Identifier",
                            "src": "22694:9:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2483,
                              "type": "bytes32",
                              "value": "_proposalId"
                            },
                            "id": 2510,
                            "name": "Identifier",
                            "src": "22704:11:2"
                          }
                        ],
                        "id": 2511,
                        "name": "IndexAccess",
                        "src": "22694:22:2"
                      }
                    ],
                    "id": 2512,
                    "name": "VariableDeclarationStatement",
                    "src": "22666:50:2"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        null
                      ],
                      "initialValue": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "rep",
                          "scope": 2603,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "int256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "int",
                              "type": "int256"
                            },
                            "id": 2513,
                            "name": "ElementaryTypeName",
                            "src": "22726:3:2"
                          }
                        ],
                        "id": 2514,
                        "name": "VariableDeclaration",
                        "src": "22726:7:2"
                      }
                    ],
                    "id": 2515,
                    "name": "VariableDeclarationStatement",
                    "src": "22726:7:2"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ProposalState_$904",
                            "typeString": "enum GenesisProtocol.ProposalState"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "==",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "state",
                              "referencedDeclaration": 963,
                              "type": "enum GenesisProtocol.ProposalState"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2508,
                                  "type": "struct GenesisProtocol.Proposal storage pointer",
                                  "value": "proposal"
                                },
                                "id": 2516,
                                "name": "Identifier",
                                "src": "22747:8:2"
                              }
                            ],
                            "id": 2517,
                            "name": "MemberAccess",
                            "src": "22747:14:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "member_name": "Closed",
                              "referencedDeclaration": null,
                              "type": "enum GenesisProtocol.ProposalState"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 904,
                                  "type": "type(enum GenesisProtocol.ProposalState)",
                                  "value": "ProposalState"
                                },
                                "id": 2518,
                                "name": "Identifier",
                                "src": "22765:13:2"
                              }
                            ],
                            "id": 2519,
                            "name": "MemberAccess",
                            "src": "22765:20:2"
                          }
                        ],
                        "id": 2520,
                        "name": "BinaryOperation",
                        "src": "22747:38:2"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "functionReturnParameters": 2489
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "int256",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "type": "type(int256)",
                                      "value": "int"
                                    },
                                    "id": 2521,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "22885:3:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "/",
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "operator": "*",
                                              "type": "uint256"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "member_name": "reputation",
                                                  "referencedDeclaration": 935,
                                                  "type": "uint256"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "type": "struct GenesisProtocol.Voter storage ref"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "argumentTypes": null,
                                                          "isConstant": false,
                                                          "isLValue": true,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "member_name": "voters",
                                                          "referencedDeclaration": 977,
                                                          "type": "mapping(address => struct GenesisProtocol.Voter storage ref)"
                                                        },
                                                        "children": [
                                                          {
                                                            "attributes": {
                                                              "argumentTypes": null,
                                                              "overloadedDeclarations": [
                                                                null
                                                              ],
                                                              "referencedDeclaration": 2508,
                                                              "type": "struct GenesisProtocol.Proposal storage pointer",
                                                              "value": "proposal"
                                                            },
                                                            "id": 2522,
                                                            "name": "Identifier",
                                                            "src": "22890:8:2"
                                                          }
                                                        ],
                                                        "id": 2523,
                                                        "name": "MemberAccess",
                                                        "src": "22890:15:2"
                                                      },
                                                      {
                                                        "attributes": {
                                                          "argumentTypes": null,
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 2485,
                                                          "type": "address",
                                                          "value": "_beneficiary"
                                                        },
                                                        "id": 2524,
                                                        "name": "Identifier",
                                                        "src": "22906:12:2"
                                                      }
                                                    ],
                                                    "id": 2525,
                                                    "name": "IndexAccess",
                                                    "src": "22890:29:2"
                                                  }
                                                ],
                                                "id": 2526,
                                                "name": "MemberAccess",
                                                "src": "22890:40:2"
                                              },
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "member_name": "votersReputationLossRatio",
                                                  "referencedDeclaration": 928,
                                                  "type": "uint256"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 2502,
                                                      "type": "struct GenesisProtocol.Parameters memory",
                                                      "value": "params"
                                                    },
                                                    "id": 2527,
                                                    "name": "Identifier",
                                                    "src": "22933:6:2"
                                                  }
                                                ],
                                                "id": 2528,
                                                "name": "MemberAccess",
                                                "src": "22933:32:2"
                                              }
                                            ],
                                            "id": 2529,
                                            "name": "BinaryOperation",
                                            "src": "22890:75:2"
                                          }
                                        ],
                                        "id": 2530,
                                        "name": "TupleExpression",
                                        "src": "22889:77:2"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "313030",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 100",
                                          "value": "100"
                                        },
                                        "id": 2531,
                                        "name": "Literal",
                                        "src": "22967:3:2"
                                      }
                                    ],
                                    "id": 2532,
                                    "name": "BinaryOperation",
                                    "src": "22889:81:2"
                                  }
                                ],
                                "id": 2533,
                                "name": "FunctionCall",
                                "src": "22885:86:2"
                              }
                            ],
                            "id": 2534,
                            "name": "Return",
                            "src": "22878:93:2"
                          }
                        ],
                        "id": 2535,
                        "name": "Block",
                        "src": "22787:195:2"
                      }
                    ],
                    "id": 2536,
                    "name": "IfStatement",
                    "src": "22743:239:2"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "==",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "totalVotes",
                              "referencedDeclaration": 951,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2508,
                                  "type": "struct GenesisProtocol.Proposal storage pointer",
                                  "value": "proposal"
                                },
                                "id": 2537,
                                "name": "Identifier",
                                "src": "22995:8:2"
                              }
                            ],
                            "id": 2538,
                            "name": "MemberAccess",
                            "src": "22995:19:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 2539,
                            "name": "Literal",
                            "src": "23018:1:2"
                          }
                        ],
                        "id": 2540,
                        "name": "BinaryOperation",
                        "src": "22995:24:2"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "functionReturnParameters": 2489
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 2541,
                                "name": "Literal",
                                "src": "23042:1:2"
                              }
                            ],
                            "id": 2542,
                            "name": "Return",
                            "src": "23035:8:2"
                          }
                        ],
                        "id": 2543,
                        "name": "Block",
                        "src": "23021:34:2"
                      }
                    ],
                    "id": 2544,
                    "name": "IfStatement",
                    "src": "22991:64:2"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "&&",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "preBoosted",
                              "referencedDeclaration": 937,
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "struct GenesisProtocol.Voter storage ref"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "voters",
                                      "referencedDeclaration": 977,
                                      "type": "mapping(address => struct GenesisProtocol.Voter storage ref)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 2508,
                                          "type": "struct GenesisProtocol.Proposal storage pointer",
                                          "value": "proposal"
                                        },
                                        "id": 2545,
                                        "name": "Identifier",
                                        "src": "23068:8:2"
                                      }
                                    ],
                                    "id": 2546,
                                    "name": "MemberAccess",
                                    "src": "23068:15:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2485,
                                      "type": "address",
                                      "value": "_beneficiary"
                                    },
                                    "id": 2547,
                                    "name": "Identifier",
                                    "src": "23084:12:2"
                                  }
                                ],
                                "id": 2548,
                                "name": "IndexAccess",
                                "src": "23068:29:2"
                              }
                            ],
                            "id": 2549,
                            "name": "MemberAccess",
                            "src": "23068:40:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "==",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "winningVote",
                                      "referencedDeclaration": 965,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 2508,
                                          "type": "struct GenesisProtocol.Proposal storage pointer",
                                          "value": "proposal"
                                        },
                                        "id": 2550,
                                        "name": "Identifier",
                                        "src": "23113:8:2"
                                      }
                                    ],
                                    "id": 2551,
                                    "name": "MemberAccess",
                                    "src": "23113:20:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "vote",
                                      "referencedDeclaration": 933,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "type": "struct GenesisProtocol.Voter storage ref"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "voters",
                                              "referencedDeclaration": 977,
                                              "type": "mapping(address => struct GenesisProtocol.Voter storage ref)"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 2508,
                                                  "type": "struct GenesisProtocol.Proposal storage pointer",
                                                  "value": "proposal"
                                                },
                                                "id": 2552,
                                                "name": "Identifier",
                                                "src": "23137:8:2"
                                              }
                                            ],
                                            "id": 2553,
                                            "name": "MemberAccess",
                                            "src": "23137:15:2"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 2485,
                                              "type": "address",
                                              "value": "_beneficiary"
                                            },
                                            "id": 2554,
                                            "name": "Identifier",
                                            "src": "23153:12:2"
                                          }
                                        ],
                                        "id": 2555,
                                        "name": "IndexAccess",
                                        "src": "23137:29:2"
                                      }
                                    ],
                                    "id": 2556,
                                    "name": "MemberAccess",
                                    "src": "23137:34:2"
                                  }
                                ],
                                "id": 2557,
                                "name": "BinaryOperation",
                                "src": "23113:58:2"
                              }
                            ],
                            "id": 2558,
                            "name": "TupleExpression",
                            "src": "23112:61:2"
                          }
                        ],
                        "id": 2559,
                        "name": "BinaryOperation",
                        "src": "23068:105:2"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "=",
                                  "type": "int256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2514,
                                      "type": "int256",
                                      "value": "rep"
                                    },
                                    "id": 2560,
                                    "name": "Identifier",
                                    "src": "23234:3:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "type": "int256",
                                      "type_conversion": true
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "type": "type(int256)",
                                          "value": "int"
                                        },
                                        "id": 2561,
                                        "name": "ElementaryTypeNameExpression",
                                        "src": "23240:3:2"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "/",
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isInlineArray": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "type": "uint256"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "commonType": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  },
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "operator": "*",
                                                  "type": "uint256"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "member_name": "reputation",
                                                      "referencedDeclaration": 935,
                                                      "type": "uint256"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "argumentTypes": null,
                                                          "isConstant": false,
                                                          "isLValue": true,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "type": "struct GenesisProtocol.Voter storage ref"
                                                        },
                                                        "children": [
                                                          {
                                                            "attributes": {
                                                              "argumentTypes": null,
                                                              "isConstant": false,
                                                              "isLValue": true,
                                                              "isPure": false,
                                                              "lValueRequested": false,
                                                              "member_name": "voters",
                                                              "referencedDeclaration": 977,
                                                              "type": "mapping(address => struct GenesisProtocol.Voter storage ref)"
                                                            },
                                                            "children": [
                                                              {
                                                                "attributes": {
                                                                  "argumentTypes": null,
                                                                  "overloadedDeclarations": [
                                                                    null
                                                                  ],
                                                                  "referencedDeclaration": 2508,
                                                                  "type": "struct GenesisProtocol.Proposal storage pointer",
                                                                  "value": "proposal"
                                                                },
                                                                "id": 2562,
                                                                "name": "Identifier",
                                                                "src": "23245:8:2"
                                                              }
                                                            ],
                                                            "id": 2563,
                                                            "name": "MemberAccess",
                                                            "src": "23245:15:2"
                                                          },
                                                          {
                                                            "attributes": {
                                                              "argumentTypes": null,
                                                              "overloadedDeclarations": [
                                                                null
                                                              ],
                                                              "referencedDeclaration": 2485,
                                                              "type": "address",
                                                              "value": "_beneficiary"
                                                            },
                                                            "id": 2564,
                                                            "name": "Identifier",
                                                            "src": "23261:12:2"
                                                          }
                                                        ],
                                                        "id": 2565,
                                                        "name": "IndexAccess",
                                                        "src": "23245:29:2"
                                                      }
                                                    ],
                                                    "id": 2566,
                                                    "name": "MemberAccess",
                                                    "src": "23245:40:2"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "member_name": "votersReputationLossRatio",
                                                      "referencedDeclaration": 928,
                                                      "type": "uint256"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "argumentTypes": null,
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 2502,
                                                          "type": "struct GenesisProtocol.Parameters memory",
                                                          "value": "params"
                                                        },
                                                        "id": 2567,
                                                        "name": "Identifier",
                                                        "src": "23288:6:2"
                                                      }
                                                    ],
                                                    "id": 2568,
                                                    "name": "MemberAccess",
                                                    "src": "23288:32:2"
                                                  }
                                                ],
                                                "id": 2569,
                                                "name": "BinaryOperation",
                                                "src": "23245:75:2"
                                              }
                                            ],
                                            "id": 2570,
                                            "name": "TupleExpression",
                                            "src": "23244:77:2"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "hexvalue": "313030",
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "subdenomination": null,
                                              "token": "number",
                                              "type": "int_const 100",
                                              "value": "100"
                                            },
                                            "id": 2571,
                                            "name": "Literal",
                                            "src": "23322:3:2"
                                          }
                                        ],
                                        "id": 2572,
                                        "name": "BinaryOperation",
                                        "src": "23244:81:2"
                                      }
                                    ],
                                    "id": 2573,
                                    "name": "FunctionCall",
                                    "src": "23240:86:2"
                                  }
                                ],
                                "id": 2574,
                                "name": "Assignment",
                                "src": "23234:92:2"
                              }
                            ],
                            "id": 2575,
                            "name": "ExpressionStatement",
                            "src": "23234:92:2"
                          }
                        ],
                        "id": 2576,
                        "name": "Block",
                        "src": "23175:162:2"
                      }
                    ],
                    "id": 2577,
                    "name": "IfStatement",
                    "src": "23064:273:2"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 2489
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "+",
                          "type": "int256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2514,
                              "type": "int256",
                              "value": "rep"
                            },
                            "id": 2578,
                            "name": "Identifier",
                            "src": "23507:3:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "int256",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(int256)",
                                  "value": "int"
                                },
                                "id": 2579,
                                "name": "ElementaryTypeNameExpression",
                                "src": "23513:3:2"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "/",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "*",
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "reputation",
                                              "referencedDeclaration": 935,
                                              "type": "uint256"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "type": "struct GenesisProtocol.Voter storage ref"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "member_name": "voters",
                                                      "referencedDeclaration": 977,
                                                      "type": "mapping(address => struct GenesisProtocol.Voter storage ref)"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "argumentTypes": null,
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 2508,
                                                          "type": "struct GenesisProtocol.Proposal storage pointer",
                                                          "value": "proposal"
                                                        },
                                                        "id": 2580,
                                                        "name": "Identifier",
                                                        "src": "23518:8:2"
                                                      }
                                                    ],
                                                    "id": 2581,
                                                    "name": "MemberAccess",
                                                    "src": "23518:15:2"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 2485,
                                                      "type": "address",
                                                      "value": "_beneficiary"
                                                    },
                                                    "id": 2582,
                                                    "name": "Identifier",
                                                    "src": "23534:12:2"
                                                  }
                                                ],
                                                "id": 2583,
                                                "name": "IndexAccess",
                                                "src": "23518:29:2"
                                              }
                                            ],
                                            "id": 2584,
                                            "name": "MemberAccess",
                                            "src": "23518:40:2"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isInlineArray": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "type": "uint256"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "commonType": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  },
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "operator": "/",
                                                  "type": "uint256"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "isConstant": false,
                                                      "isInlineArray": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "type": "uint256"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "argumentTypes": null,
                                                          "commonType": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          },
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "operator": "*",
                                                          "type": "uint256"
                                                        },
                                                        "children": [
                                                          {
                                                            "attributes": {
                                                              "argumentTypes": null,
                                                              "isConstant": false,
                                                              "isLValue": true,
                                                              "isPure": false,
                                                              "lValueRequested": false,
                                                              "member_name": "lostReputation",
                                                              "referencedDeclaration": 957,
                                                              "type": "uint256"
                                                            },
                                                            "children": [
                                                              {
                                                                "attributes": {
                                                                  "argumentTypes": null,
                                                                  "overloadedDeclarations": [
                                                                    null
                                                                  ],
                                                                  "referencedDeclaration": 2508,
                                                                  "type": "struct GenesisProtocol.Proposal storage pointer",
                                                                  "value": "proposal"
                                                                },
                                                                "id": 2585,
                                                                "name": "Identifier",
                                                                "src": "23563:8:2"
                                                              }
                                                            ],
                                                            "id": 2586,
                                                            "name": "MemberAccess",
                                                            "src": "23563:23:2"
                                                          },
                                                          {
                                                            "attributes": {
                                                              "argumentTypes": null,
                                                              "isConstant": false,
                                                              "isLValue": true,
                                                              "isPure": false,
                                                              "lValueRequested": false,
                                                              "member_name": "votersGainRepRatioFromLostRep",
                                                              "referencedDeclaration": 930,
                                                              "type": "uint256"
                                                            },
                                                            "children": [
                                                              {
                                                                "attributes": {
                                                                  "argumentTypes": null,
                                                                  "overloadedDeclarations": [
                                                                    null
                                                                  ],
                                                                  "referencedDeclaration": 2502,
                                                                  "type": "struct GenesisProtocol.Parameters memory",
                                                                  "value": "params"
                                                                },
                                                                "id": 2587,
                                                                "name": "Identifier",
                                                                "src": "23589:6:2"
                                                              }
                                                            ],
                                                            "id": 2588,
                                                            "name": "MemberAccess",
                                                            "src": "23589:36:2"
                                                          }
                                                        ],
                                                        "id": 2589,
                                                        "name": "BinaryOperation",
                                                        "src": "23563:62:2"
                                                      }
                                                    ],
                                                    "id": 2590,
                                                    "name": "TupleExpression",
                                                    "src": "23562:64:2"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "hexvalue": "313030",
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "lValueRequested": false,
                                                      "subdenomination": null,
                                                      "token": "number",
                                                      "type": "int_const 100",
                                                      "value": "100"
                                                    },
                                                    "id": 2591,
                                                    "name": "Literal",
                                                    "src": "23627:3:2"
                                                  }
                                                ],
                                                "id": 2592,
                                                "name": "BinaryOperation",
                                                "src": "23562:68:2"
                                              }
                                            ],
                                            "id": 2593,
                                            "name": "TupleExpression",
                                            "src": "23561:70:2"
                                          }
                                        ],
                                        "id": 2594,
                                        "name": "BinaryOperation",
                                        "src": "23518:113:2"
                                      }
                                    ],
                                    "id": 2595,
                                    "name": "TupleExpression",
                                    "src": "23517:115:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "totalVotes",
                                      "referencedDeclaration": 951,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 2508,
                                          "type": "struct GenesisProtocol.Proposal storage pointer",
                                          "value": "proposal"
                                        },
                                        "id": 2596,
                                        "name": "Identifier",
                                        "src": "23633:8:2"
                                      }
                                    ],
                                    "id": 2597,
                                    "name": "MemberAccess",
                                    "src": "23633:19:2"
                                  }
                                ],
                                "id": 2598,
                                "name": "BinaryOperation",
                                "src": "23517:135:2"
                              }
                            ],
                            "id": 2599,
                            "name": "FunctionCall",
                            "src": "23513:140:2"
                          }
                        ],
                        "id": 2600,
                        "name": "BinaryOperation",
                        "src": "23507:146:2"
                      }
                    ],
                    "id": 2601,
                    "name": "Return",
                    "src": "23500:153:2"
                  }
                ],
                "id": 2602,
                "name": "Block",
                "src": "22500:1160:2"
              }
            ],
            "id": 2603,
            "name": "FunctionDefinition",
            "src": "22401:1259:2"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "redeemStakerRepAmount",
              "payable": false,
              "scope": 3292,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_proposalId",
                      "scope": 2691,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 2604,
                        "name": "ElementaryTypeName",
                        "src": "23951:7:2"
                      }
                    ],
                    "id": 2605,
                    "name": "VariableDeclaration",
                    "src": "23951:19:2"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_beneficiary",
                      "scope": 2691,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 2606,
                        "name": "ElementaryTypeName",
                        "src": "23972:7:2"
                      }
                    ],
                    "id": 2607,
                    "name": "VariableDeclaration",
                    "src": "23972:20:2"
                  }
                ],
                "id": 2608,
                "name": "ParameterList",
                "src": "23950:43:2"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 2691,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "int256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "int",
                          "type": "int256"
                        },
                        "id": 2609,
                        "name": "ElementaryTypeName",
                        "src": "24014:3:2"
                      }
                    ],
                    "id": 2610,
                    "name": "VariableDeclaration",
                    "src": "24014:3:2"
                  }
                ],
                "id": 2611,
                "name": "ParameterList",
                "src": "24013:5:2"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        2613
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "paramsHash",
                          "scope": 2691,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "bytes32",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "bytes32",
                              "type": "bytes32"
                            },
                            "id": 2612,
                            "name": "ElementaryTypeName",
                            "src": "24029:7:2"
                          }
                        ],
                        "id": 2613,
                        "name": "VariableDeclaration",
                        "src": "24029:18:2"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bytes32",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_Avatar_$3873",
                                  "typeString": "contract Avatar"
                                }
                              ],
                              "overloadedDeclarations": [
                                9584
                              ],
                              "referencedDeclaration": 9584,
                              "type": "function (contract Avatar) view returns (bytes32)",
                              "value": "getParametersFromController"
                            },
                            "id": 2614,
                            "name": "Identifier",
                            "src": "24050:27:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "contract Avatar",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3873,
                                  "type": "type(contract Avatar)",
                                  "value": "Avatar"
                                },
                                "id": 2615,
                                "name": "Identifier",
                                "src": "24078:6:2"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "avatar",
                                  "referencedDeclaration": 945,
                                  "type": "address"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "type": "struct GenesisProtocol.Proposal storage ref"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1046,
                                          "type": "mapping(bytes32 => struct GenesisProtocol.Proposal storage ref)",
                                          "value": "proposals"
                                        },
                                        "id": 2616,
                                        "name": "Identifier",
                                        "src": "24085:9:2"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 2605,
                                          "type": "bytes32",
                                          "value": "_proposalId"
                                        },
                                        "id": 2617,
                                        "name": "Identifier",
                                        "src": "24095:11:2"
                                      }
                                    ],
                                    "id": 2618,
                                    "name": "IndexAccess",
                                    "src": "24085:22:2"
                                  }
                                ],
                                "id": 2619,
                                "name": "MemberAccess",
                                "src": "24085:29:2"
                              }
                            ],
                            "id": 2620,
                            "name": "FunctionCall",
                            "src": "24078:37:2"
                          }
                        ],
                        "id": 2621,
                        "name": "FunctionCall",
                        "src": "24050:66:2"
                      }
                    ],
                    "id": 2622,
                    "name": "VariableDeclarationStatement",
                    "src": "24029:87:2"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        2624
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "params",
                          "scope": 2691,
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "type": "struct GenesisProtocol.Parameters memory",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "Parameters",
                              "referencedDeclaration": 931,
                              "type": "struct GenesisProtocol.Parameters storage pointer"
                            },
                            "id": 2623,
                            "name": "UserDefinedTypeName",
                            "src": "24126:10:2"
                          }
                        ],
                        "id": 2624,
                        "name": "VariableDeclaration",
                        "src": "24126:24:2"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "struct GenesisProtocol.Parameters storage ref"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1042,
                              "type": "mapping(bytes32 => struct GenesisProtocol.Parameters storage ref)",
                              "value": "parameters"
                            },
                            "id": 2625,
                            "name": "Identifier",
                            "src": "24153:10:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2613,
                              "type": "bytes32",
                              "value": "paramsHash"
                            },
                            "id": 2626,
                            "name": "Identifier",
                            "src": "24164:10:2"
                          }
                        ],
                        "id": 2627,
                        "name": "IndexAccess",
                        "src": "24153:22:2"
                      }
                    ],
                    "id": 2628,
                    "name": "VariableDeclarationStatement",
                    "src": "24126:49:2"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        2630
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "proposal",
                          "scope": 2691,
                          "stateVariable": false,
                          "storageLocation": "storage",
                          "type": "struct GenesisProtocol.Proposal storage pointer",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "Proposal",
                              "referencedDeclaration": 986,
                              "type": "struct GenesisProtocol.Proposal storage pointer"
                            },
                            "id": 2629,
                            "name": "UserDefinedTypeName",
                            "src": "24185:8:2"
                          }
                        ],
                        "id": 2630,
                        "name": "VariableDeclaration",
                        "src": "24185:25:2"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "struct GenesisProtocol.Proposal storage ref"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1046,
                              "type": "mapping(bytes32 => struct GenesisProtocol.Proposal storage ref)",
                              "value": "proposals"
                            },
                            "id": 2631,
                            "name": "Identifier",
                            "src": "24213:9:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2605,
                              "type": "bytes32",
                              "value": "_proposalId"
                            },
                            "id": 2632,
                            "name": "Identifier",
                            "src": "24223:11:2"
                          }
                        ],
                        "id": 2633,
                        "name": "IndexAccess",
                        "src": "24213:22:2"
                      }
                    ],
                    "id": 2634,
                    "name": "VariableDeclarationStatement",
                    "src": "24185:50:2"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        null
                      ],
                      "initialValue": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "rep",
                          "scope": 2691,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "int256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "int",
                              "type": "int256"
                            },
                            "id": 2635,
                            "name": "ElementaryTypeName",
                            "src": "24245:3:2"
                          }
                        ],
                        "id": 2636,
                        "name": "VariableDeclaration",
                        "src": "24245:7:2"
                      }
                    ],
                    "id": 2637,
                    "name": "VariableDeclarationStatement",
                    "src": "24245:7:2"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "&&",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": ">",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "amount",
                                      "referencedDeclaration": 942,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "type": "struct GenesisProtocol.Staker storage ref"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "stakers",
                                              "referencedDeclaration": 985,
                                              "type": "mapping(address => struct GenesisProtocol.Staker storage ref)"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 2630,
                                                  "type": "struct GenesisProtocol.Proposal storage pointer",
                                                  "value": "proposal"
                                                },
                                                "id": 2638,
                                                "name": "Identifier",
                                                "src": "24267:8:2"
                                              }
                                            ],
                                            "id": 2639,
                                            "name": "MemberAccess",
                                            "src": "24267:16:2"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 2607,
                                              "type": "address",
                                              "value": "_beneficiary"
                                            },
                                            "id": 2640,
                                            "name": "Identifier",
                                            "src": "24284:12:2"
                                          }
                                        ],
                                        "id": 2641,
                                        "name": "IndexAccess",
                                        "src": "24267:30:2"
                                      }
                                    ],
                                    "id": 2642,
                                    "name": "MemberAccess",
                                    "src": "24267:37:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "30",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 0",
                                      "value": "0"
                                    },
                                    "id": 2643,
                                    "name": "Literal",
                                    "src": "24305:1:2"
                                  }
                                ],
                                "id": 2644,
                                "name": "BinaryOperation",
                                "src": "24267:39:2"
                              }
                            ],
                            "id": 2645,
                            "name": "TupleExpression",
                            "src": "24266:41:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "==",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "vote",
                                      "referencedDeclaration": 940,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "type": "struct GenesisProtocol.Staker storage ref"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "stakers",
                                              "referencedDeclaration": 985,
                                              "type": "mapping(address => struct GenesisProtocol.Staker storage ref)"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 2630,
                                                  "type": "struct GenesisProtocol.Proposal storage pointer",
                                                  "value": "proposal"
                                                },
                                                "id": 2646,
                                                "name": "Identifier",
                                                "src": "24325:8:2"
                                              }
                                            ],
                                            "id": 2647,
                                            "name": "MemberAccess",
                                            "src": "24325:16:2"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 2607,
                                              "type": "address",
                                              "value": "_beneficiary"
                                            },
                                            "id": 2648,
                                            "name": "Identifier",
                                            "src": "24342:12:2"
                                          }
                                        ],
                                        "id": 2649,
                                        "name": "IndexAccess",
                                        "src": "24325:30:2"
                                      }
                                    ],
                                    "id": 2650,
                                    "name": "MemberAccess",
                                    "src": "24325:35:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "winningVote",
                                      "referencedDeclaration": 965,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 2630,
                                          "type": "struct GenesisProtocol.Proposal storage pointer",
                                          "value": "proposal"
                                        },
                                        "id": 2651,
                                        "name": "Identifier",
                                        "src": "24364:8:2"
                                      }
                                    ],
                                    "id": 2652,
                                    "name": "MemberAccess",
                                    "src": "24364:20:2"
                                  }
                                ],
                                "id": 2653,
                                "name": "BinaryOperation",
                                "src": "24325:59:2"
                              }
                            ],
                            "id": 2654,
                            "name": "TupleExpression",
                            "src": "24324:61:2"
                          }
                        ],
                        "id": 2655,
                        "name": "BinaryOperation",
                        "src": "24266:119:2"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "=",
                                  "type": "int256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2636,
                                      "type": "int256",
                                      "value": "rep"
                                    },
                                    "id": 2656,
                                    "name": "Identifier",
                                    "src": "24519:3:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "type": "int256",
                                      "type_conversion": true
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "type": "type(int256)",
                                          "value": "int"
                                        },
                                        "id": 2657,
                                        "name": "ElementaryTypeNameExpression",
                                        "src": "24525:3:2"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "/",
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isInlineArray": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "type": "uint256"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "commonType": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  },
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "operator": "*",
                                                  "type": "uint256"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "member_name": "amount",
                                                      "referencedDeclaration": 942,
                                                      "type": "uint256"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "argumentTypes": null,
                                                          "isConstant": false,
                                                          "isLValue": true,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "type": "struct GenesisProtocol.Staker storage ref"
                                                        },
                                                        "children": [
                                                          {
                                                            "attributes": {
                                                              "argumentTypes": null,
                                                              "isConstant": false,
                                                              "isLValue": true,
                                                              "isPure": false,
                                                              "lValueRequested": false,
                                                              "member_name": "stakers",
                                                              "referencedDeclaration": 985,
                                                              "type": "mapping(address => struct GenesisProtocol.Staker storage ref)"
                                                            },
                                                            "children": [
                                                              {
                                                                "attributes": {
                                                                  "argumentTypes": null,
                                                                  "overloadedDeclarations": [
                                                                    null
                                                                  ],
                                                                  "referencedDeclaration": 2630,
                                                                  "type": "struct GenesisProtocol.Proposal storage pointer",
                                                                  "value": "proposal"
                                                                },
                                                                "id": 2658,
                                                                "name": "Identifier",
                                                                "src": "24530:8:2"
                                                              }
                                                            ],
                                                            "id": 2659,
                                                            "name": "MemberAccess",
                                                            "src": "24530:16:2"
                                                          },
                                                          {
                                                            "attributes": {
                                                              "argumentTypes": null,
                                                              "overloadedDeclarations": [
                                                                null
                                                              ],
                                                              "referencedDeclaration": 2607,
                                                              "type": "address",
                                                              "value": "_beneficiary"
                                                            },
                                                            "id": 2660,
                                                            "name": "Identifier",
                                                            "src": "24547:12:2"
                                                          }
                                                        ],
                                                        "id": 2661,
                                                        "name": "IndexAccess",
                                                        "src": "24530:30:2"
                                                      }
                                                    ],
                                                    "id": 2662,
                                                    "name": "MemberAccess",
                                                    "src": "24530:37:2"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "isConstant": false,
                                                      "isInlineArray": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "type": "uint256"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "argumentTypes": null,
                                                          "commonType": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          },
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "operator": "/",
                                                          "type": "uint256"
                                                        },
                                                        "children": [
                                                          {
                                                            "attributes": {
                                                              "argumentTypes": null,
                                                              "isConstant": false,
                                                              "isInlineArray": false,
                                                              "isLValue": false,
                                                              "isPure": false,
                                                              "lValueRequested": false,
                                                              "type": "uint256"
                                                            },
                                                            "children": [
                                                              {
                                                                "attributes": {
                                                                  "argumentTypes": null,
                                                                  "commonType": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                  },
                                                                  "isConstant": false,
                                                                  "isLValue": false,
                                                                  "isPure": false,
                                                                  "lValueRequested": false,
                                                                  "operator": "*",
                                                                  "type": "uint256"
                                                                },
                                                                "children": [
                                                                  {
                                                                    "attributes": {
                                                                      "argumentTypes": null,
                                                                      "isConstant": false,
                                                                      "isLValue": true,
                                                                      "isPure": false,
                                                                      "lValueRequested": false,
                                                                      "member_name": "lostReputation",
                                                                      "referencedDeclaration": 957,
                                                                      "type": "uint256"
                                                                    },
                                                                    "children": [
                                                                      {
                                                                        "attributes": {
                                                                          "argumentTypes": null,
                                                                          "overloadedDeclarations": [
                                                                            null
                                                                          ],
                                                                          "referencedDeclaration": 2630,
                                                                          "type": "struct GenesisProtocol.Proposal storage pointer",
                                                                          "value": "proposal"
                                                                        },
                                                                        "id": 2663,
                                                                        "name": "Identifier",
                                                                        "src": "24572:8:2"
                                                                      }
                                                                    ],
                                                                    "id": 2664,
                                                                    "name": "MemberAccess",
                                                                    "src": "24572:23:2"
                                                                  },
                                                                  {
                                                                    "attributes": {
                                                                      "argumentTypes": null,
                                                                      "isConstant": false,
                                                                      "isInlineArray": false,
                                                                      "isLValue": false,
                                                                      "isPure": false,
                                                                      "lValueRequested": false,
                                                                      "type": "uint256"
                                                                    },
                                                                    "children": [
                                                                      {
                                                                        "attributes": {
                                                                          "argumentTypes": null,
                                                                          "commonType": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                          },
                                                                          "isConstant": false,
                                                                          "isLValue": false,
                                                                          "isPure": false,
                                                                          "lValueRequested": false,
                                                                          "operator": "-",
                                                                          "type": "uint256"
                                                                        },
                                                                        "children": [
                                                                          {
                                                                            "attributes": {
                                                                              "argumentTypes": null,
                                                                              "hexvalue": "313030",
                                                                              "isConstant": false,
                                                                              "isLValue": false,
                                                                              "isPure": true,
                                                                              "lValueRequested": false,
                                                                              "subdenomination": null,
                                                                              "token": "number",
                                                                              "type": "int_const 100",
                                                                              "value": "100"
                                                                            },
                                                                            "id": 2665,
                                                                            "name": "Literal",
                                                                            "src": "24599:3:2"
                                                                          },
                                                                          {
                                                                            "attributes": {
                                                                              "argumentTypes": null,
                                                                              "isConstant": false,
                                                                              "isLValue": true,
                                                                              "isPure": false,
                                                                              "lValueRequested": false,
                                                                              "member_name": "votersGainRepRatioFromLostRep",
                                                                              "referencedDeclaration": 930,
                                                                              "type": "uint256"
                                                                            },
                                                                            "children": [
                                                                              {
                                                                                "attributes": {
                                                                                  "argumentTypes": null,
                                                                                  "overloadedDeclarations": [
                                                                                    null
                                                                                  ],
                                                                                  "referencedDeclaration": 2624,
                                                                                  "type": "struct GenesisProtocol.Parameters memory",
                                                                                  "value": "params"
                                                                                },
                                                                                "id": 2666,
                                                                                "name": "Identifier",
                                                                                "src": "24605:6:2"
                                                                              }
                                                                            ],
                                                                            "id": 2667,
                                                                            "name": "MemberAccess",
                                                                            "src": "24605:36:2"
                                                                          }
                                                                        ],
                                                                        "id": 2668,
                                                                        "name": "BinaryOperation",
                                                                        "src": "24599:42:2"
                                                                      }
                                                                    ],
                                                                    "id": 2669,
                                                                    "name": "TupleExpression",
                                                                    "src": "24598:44:2"
                                                                  }
                                                                ],
                                                                "id": 2670,
                                                                "name": "BinaryOperation",
                                                                "src": "24572:70:2"
                                                              }
                                                            ],
                                                            "id": 2671,
                                                            "name": "TupleExpression",
                                                            "src": "24571:72:2"
                                                          },
                                                          {
                                                            "attributes": {
                                                              "argumentTypes": null,
                                                              "hexvalue": "313030",
                                                              "isConstant": false,
                                                              "isLValue": false,
                                                              "isPure": true,
                                                              "lValueRequested": false,
                                                              "subdenomination": null,
                                                              "token": "number",
                                                              "type": "int_const 100",
                                                              "value": "100"
                                                            },
                                                            "id": 2672,
                                                            "name": "Literal",
                                                            "src": "24644:3:2"
                                                          }
                                                        ],
                                                        "id": 2673,
                                                        "name": "BinaryOperation",
                                                        "src": "24571:76:2"
                                                      }
                                                    ],
                                                    "id": 2674,
                                                    "name": "TupleExpression",
                                                    "src": "24570:78:2"
                                                  }
                                                ],
                                                "id": 2675,
                                                "name": "BinaryOperation",
                                                "src": "24530:118:2"
                                              }
                                            ],
                                            "id": 2676,
                                            "name": "TupleExpression",
                                            "src": "24529:120:2"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "type": "uint256"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "member_name": "stakes",
                                                  "referencedDeclaration": 981,
                                                  "type": "mapping(uint256 => uint256)"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 2630,
                                                      "type": "struct GenesisProtocol.Proposal storage pointer",
                                                      "value": "proposal"
                                                    },
                                                    "id": 2677,
                                                    "name": "Identifier",
                                                    "src": "24652:8:2"
                                                  }
                                                ],
                                                "id": 2678,
                                                "name": "MemberAccess",
                                                "src": "24652:15:2"
                                              },
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "member_name": "winningVote",
                                                  "referencedDeclaration": 965,
                                                  "type": "uint256"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 2630,
                                                      "type": "struct GenesisProtocol.Proposal storage pointer",
                                                      "value": "proposal"
                                                    },
                                                    "id": 2679,
                                                    "name": "Identifier",
                                                    "src": "24668:8:2"
                                                  }
                                                ],
                                                "id": 2680,
                                                "name": "MemberAccess",
                                                "src": "24668:20:2"
                                              }
                                            ],
                                            "id": 2681,
                                            "name": "IndexAccess",
                                            "src": "24652:37:2"
                                          }
                                        ],
                                        "id": 2682,
                                        "name": "BinaryOperation",
                                        "src": "24529:160:2"
                                      }
                                    ],
                                    "id": 2683,
                                    "name": "FunctionCall",
                                    "src": "24525:165:2"
                                  }
                                ],
                                "id": 2684,
                                "name": "Assignment",
                                "src": "24519:171:2"
                              }
                            ],
                            "id": 2685,
                            "name": "ExpressionStatement",
                            "src": "24519:171:2"
                          }
                        ],
                        "id": 2686,
                        "name": "Block",
                        "src": "24387:314:2"
                      }
                    ],
                    "id": 2687,
                    "name": "IfStatement",
                    "src": "24262:439:2"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 2611
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 2636,
                          "type": "int256",
                          "value": "rep"
                        },
                        "id": 2688,
                        "name": "Identifier",
                        "src": "24717:3:2"
                      }
                    ],
                    "id": 2689,
                    "name": "Return",
                    "src": "24710:10:2"
                  }
                ],
                "id": 2690,
                "name": "Block",
                "src": "24019:708:2"
              }
            ],
            "id": 2691,
            "name": "FunctionDefinition",
            "src": "23920:807:2"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "getNumberOfChoices",
              "payable": false,
              "scope": 3292,
              "stateMutability": "view",
              "superFunction": 3451,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_proposalId",
                      "scope": 2704,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 2692,
                        "name": "ElementaryTypeName",
                        "src": "24956:7:2"
                      }
                    ],
                    "id": 2693,
                    "name": "VariableDeclaration",
                    "src": "24956:19:2"
                  }
                ],
                "id": 2694,
                "name": "ParameterList",
                "src": "24955:21:2"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 2704,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 2695,
                        "name": "ElementaryTypeName",
                        "src": "25001:4:2"
                      }
                    ],
                    "id": 2696,
                    "name": "VariableDeclaration",
                    "src": "25001:4:2"
                  }
                ],
                "id": 2697,
                "name": "ParameterList",
                "src": "25000:6:2"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 2697
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "member_name": "numOfChoices",
                          "referencedDeclaration": 947,
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "struct GenesisProtocol.Proposal storage ref"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1046,
                                  "type": "mapping(bytes32 => struct GenesisProtocol.Proposal storage ref)",
                                  "value": "proposals"
                                },
                                "id": 2698,
                                "name": "Identifier",
                                "src": "25024:9:2"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2693,
                                  "type": "bytes32",
                                  "value": "_proposalId"
                                },
                                "id": 2699,
                                "name": "Identifier",
                                "src": "25034:11:2"
                              }
                            ],
                            "id": 2700,
                            "name": "IndexAccess",
                            "src": "25024:22:2"
                          }
                        ],
                        "id": 2701,
                        "name": "MemberAccess",
                        "src": "25024:35:2"
                      }
                    ],
                    "id": 2702,
                    "name": "Return",
                    "src": "25017:42:2"
                  }
                ],
                "id": 2703,
                "name": "Block",
                "src": "25007:59:2"
              }
            ],
            "id": 2704,
            "name": "FunctionDefinition",
            "src": "24928:138:2"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "voteInfo",
              "payable": false,
              "scope": 3292,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_proposalId",
                      "scope": 2731,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 2705,
                        "name": "ElementaryTypeName",
                        "src": "25424:7:2"
                      }
                    ],
                    "id": 2706,
                    "name": "VariableDeclaration",
                    "src": "25424:19:2"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_voter",
                      "scope": 2731,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 2707,
                        "name": "ElementaryTypeName",
                        "src": "25445:7:2"
                      }
                    ],
                    "id": 2708,
                    "name": "VariableDeclaration",
                    "src": "25445:14:2"
                  }
                ],
                "id": 2709,
                "name": "ParameterList",
                "src": "25423:37:2"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 2731,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 2710,
                        "name": "ElementaryTypeName",
                        "src": "25485:4:2"
                      }
                    ],
                    "id": 2711,
                    "name": "VariableDeclaration",
                    "src": "25485:4:2"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 2731,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 2712,
                        "name": "ElementaryTypeName",
                        "src": "25491:4:2"
                      }
                    ],
                    "id": 2713,
                    "name": "VariableDeclaration",
                    "src": "25491:4:2"
                  }
                ],
                "id": 2714,
                "name": "ParameterList",
                "src": "25484:12:2"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        2716
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "voter",
                          "scope": 2731,
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "type": "struct GenesisProtocol.Voter memory",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "Voter",
                              "referencedDeclaration": 938,
                              "type": "struct GenesisProtocol.Voter storage pointer"
                            },
                            "id": 2715,
                            "name": "UserDefinedTypeName",
                            "src": "25507:5:2"
                          }
                        ],
                        "id": 2716,
                        "name": "VariableDeclaration",
                        "src": "25507:18:2"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "struct GenesisProtocol.Voter storage ref"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "voters",
                              "referencedDeclaration": 977,
                              "type": "mapping(address => struct GenesisProtocol.Voter storage ref)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "struct GenesisProtocol.Proposal storage ref"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1046,
                                      "type": "mapping(bytes32 => struct GenesisProtocol.Proposal storage ref)",
                                      "value": "proposals"
                                    },
                                    "id": 2717,
                                    "name": "Identifier",
                                    "src": "25528:9:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2706,
                                      "type": "bytes32",
                                      "value": "_proposalId"
                                    },
                                    "id": 2718,
                                    "name": "Identifier",
                                    "src": "25538:11:2"
                                  }
                                ],
                                "id": 2719,
                                "name": "IndexAccess",
                                "src": "25528:22:2"
                              }
                            ],
                            "id": 2720,
                            "name": "MemberAccess",
                            "src": "25528:29:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2708,
                              "type": "address",
                              "value": "_voter"
                            },
                            "id": 2721,
                            "name": "Identifier",
                            "src": "25558:6:2"
                          }
                        ],
                        "id": 2722,
                        "name": "IndexAccess",
                        "src": "25528:37:2"
                      }
                    ],
                    "id": 2723,
                    "name": "VariableDeclarationStatement",
                    "src": "25507:58:2"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 2714
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "tuple(uint256,uint256)"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "vote",
                              "referencedDeclaration": 933,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2716,
                                  "type": "struct GenesisProtocol.Voter memory",
                                  "value": "voter"
                                },
                                "id": 2724,
                                "name": "Identifier",
                                "src": "25583:5:2"
                              }
                            ],
                            "id": 2725,
                            "name": "MemberAccess",
                            "src": "25583:10:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "reputation",
                              "referencedDeclaration": 935,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2716,
                                  "type": "struct GenesisProtocol.Voter memory",
                                  "value": "voter"
                                },
                                "id": 2726,
                                "name": "Identifier",
                                "src": "25595:5:2"
                              }
                            ],
                            "id": 2727,
                            "name": "MemberAccess",
                            "src": "25595:16:2"
                          }
                        ],
                        "id": 2728,
                        "name": "TupleExpression",
                        "src": "25582:30:2"
                      }
                    ],
                    "id": 2729,
                    "name": "Return",
                    "src": "25575:37:2"
                  }
                ],
                "id": 2730,
                "name": "Block",
                "src": "25497:122:2"
              }
            ],
            "id": 2731,
            "name": "FunctionDefinition",
            "src": "25406:213:2"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "votesStatus",
              "payable": false,
              "scope": 3292,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_proposalId",
                      "scope": 2769,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 2732,
                        "name": "ElementaryTypeName",
                        "src": "25882:7:2"
                      }
                    ],
                    "id": 2733,
                    "name": "VariableDeclaration",
                    "src": "25882:19:2"
                  }
                ],
                "id": 2734,
                "name": "ParameterList",
                "src": "25881:21:2"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "votes",
                      "scope": 2769,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256[11] memory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "type": "uint256[11] storage pointer"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint",
                              "type": "uint256"
                            },
                            "id": 2735,
                            "name": "ElementaryTypeName",
                            "src": "25927:4:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "3131",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 11",
                              "value": "11"
                            },
                            "id": 2736,
                            "name": "Literal",
                            "src": "25932:2:2"
                          }
                        ],
                        "id": 2737,
                        "name": "ArrayTypeName",
                        "src": "25927:8:2"
                      }
                    ],
                    "id": 2738,
                    "name": "VariableDeclaration",
                    "src": "25927:14:2"
                  }
                ],
                "id": 2739,
                "name": "ParameterList",
                "src": "25926:16:2"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        2741
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "proposal",
                          "scope": 2769,
                          "stateVariable": false,
                          "storageLocation": "storage",
                          "type": "struct GenesisProtocol.Proposal storage pointer",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "Proposal",
                              "referencedDeclaration": 986,
                              "type": "struct GenesisProtocol.Proposal storage pointer"
                            },
                            "id": 2740,
                            "name": "UserDefinedTypeName",
                            "src": "25953:8:2"
                          }
                        ],
                        "id": 2741,
                        "name": "VariableDeclaration",
                        "src": "25953:25:2"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "struct GenesisProtocol.Proposal storage ref"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1046,
                              "type": "mapping(bytes32 => struct GenesisProtocol.Proposal storage ref)",
                              "value": "proposals"
                            },
                            "id": 2742,
                            "name": "Identifier",
                            "src": "25981:9:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2733,
                              "type": "bytes32",
                              "value": "_proposalId"
                            },
                            "id": 2743,
                            "name": "Identifier",
                            "src": "25991:11:2"
                          }
                        ],
                        "id": 2744,
                        "name": "IndexAccess",
                        "src": "25981:22:2"
                      }
                    ],
                    "id": 2745,
                    "name": "VariableDeclarationStatement",
                    "src": "25953:50:2"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "assignments": [
                            2747
                          ]
                        },
                        "children": [
                          {
                            "attributes": {
                              "constant": false,
                              "name": "cnt",
                              "scope": 2769,
                              "stateVariable": false,
                              "storageLocation": "default",
                              "type": "uint256",
                              "value": null,
                              "visibility": "internal"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "name": "uint",
                                  "type": "uint256"
                                },
                                "id": 2746,
                                "name": "ElementaryTypeName",
                                "src": "26018:4:2"
                              }
                            ],
                            "id": 2747,
                            "name": "VariableDeclaration",
                            "src": "26018:8:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 2748,
                            "name": "Literal",
                            "src": "26029:1:2"
                          }
                        ],
                        "id": 2749,
                        "name": "VariableDeclarationStatement",
                        "src": "26018:12:2"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "<",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2747,
                              "type": "uint256",
                              "value": "cnt"
                            },
                            "id": 2750,
                            "name": "Identifier",
                            "src": "26032:3:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "numOfChoices",
                              "referencedDeclaration": 947,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2741,
                                  "type": "struct GenesisProtocol.Proposal storage pointer",
                                  "value": "proposal"
                                },
                                "id": 2751,
                                "name": "Identifier",
                                "src": "26038:8:2"
                              }
                            ],
                            "id": 2752,
                            "name": "MemberAccess",
                            "src": "26038:21:2"
                          }
                        ],
                        "id": 2753,
                        "name": "BinaryOperation",
                        "src": "26032:27:2"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "++",
                              "prefix": false,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2747,
                                  "type": "uint256",
                                  "value": "cnt"
                                },
                                "id": 2754,
                                "name": "Identifier",
                                "src": "26061:3:2"
                              }
                            ],
                            "id": 2755,
                            "name": "UnaryOperation",
                            "src": "26061:5:2"
                          }
                        ],
                        "id": 2756,
                        "name": "ExpressionStatement",
                        "src": "26061:5:2"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "=",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 2738,
                                          "type": "uint256[11] memory",
                                          "value": "votes"
                                        },
                                        "id": 2757,
                                        "name": "Identifier",
                                        "src": "26082:5:2"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 2747,
                                          "type": "uint256",
                                          "value": "cnt"
                                        },
                                        "id": 2758,
                                        "name": "Identifier",
                                        "src": "26088:3:2"
                                      }
                                    ],
                                    "id": 2759,
                                    "name": "IndexAccess",
                                    "src": "26082:10:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "votes",
                                          "referencedDeclaration": 973,
                                          "type": "mapping(uint256 => uint256)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 2741,
                                              "type": "struct GenesisProtocol.Proposal storage pointer",
                                              "value": "proposal"
                                            },
                                            "id": 2760,
                                            "name": "Identifier",
                                            "src": "26095:8:2"
                                          }
                                        ],
                                        "id": 2761,
                                        "name": "MemberAccess",
                                        "src": "26095:14:2"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 2747,
                                          "type": "uint256",
                                          "value": "cnt"
                                        },
                                        "id": 2762,
                                        "name": "Identifier",
                                        "src": "26110:3:2"
                                      }
                                    ],
                                    "id": 2763,
                                    "name": "IndexAccess",
                                    "src": "26095:19:2"
                                  }
                                ],
                                "id": 2764,
                                "name": "Assignment",
                                "src": "26082:32:2"
                              }
                            ],
                            "id": 2765,
                            "name": "ExpressionStatement",
                            "src": "26082:32:2"
                          }
                        ],
                        "id": 2766,
                        "name": "Block",
                        "src": "26068:57:2"
                      }
                    ],
                    "id": 2767,
                    "name": "ForStatement",
                    "src": "26013:112:2"
                  }
                ],
                "id": 2768,
                "name": "Block",
                "src": "25943:188:2"
              }
            ],
            "id": 2769,
            "name": "FunctionDefinition",
            "src": "25861:270:2"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "isVotable",
              "payable": false,
              "scope": 3292,
              "stateMutability": "view",
              "superFunction": 3458,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_proposalId",
                      "scope": 2805,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 2770,
                        "name": "ElementaryTypeName",
                        "src": "26312:7:2"
                      }
                    ],
                    "id": 2771,
                    "name": "VariableDeclaration",
                    "src": "26312:19:2"
                  }
                ],
                "id": 2772,
                "name": "ParameterList",
                "src": "26311:21:2"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 2805,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 2773,
                        "name": "ElementaryTypeName",
                        "src": "26357:4:2"
                      }
                    ],
                    "id": 2774,
                    "name": "VariableDeclaration",
                    "src": "26357:4:2"
                  }
                ],
                "id": 2775,
                "name": "ParameterList",
                "src": "26356:6:2"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 2775
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "||",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "||",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "type": "bool"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_enum$_ProposalState_$904",
                                            "typeString": "enum GenesisProtocol.ProposalState"
                                          },
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "==",
                                          "type": "bool"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "state",
                                              "referencedDeclaration": 963,
                                              "type": "enum GenesisProtocol.ProposalState"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "type": "struct GenesisProtocol.Proposal storage ref"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 1046,
                                                      "type": "mapping(bytes32 => struct GenesisProtocol.Proposal storage ref)",
                                                      "value": "proposals"
                                                    },
                                                    "id": 2776,
                                                    "name": "Identifier",
                                                    "src": "26382:9:2"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 2771,
                                                      "type": "bytes32",
                                                      "value": "_proposalId"
                                                    },
                                                    "id": 2777,
                                                    "name": "Identifier",
                                                    "src": "26392:11:2"
                                                  }
                                                ],
                                                "id": 2778,
                                                "name": "IndexAccess",
                                                "src": "26382:22:2"
                                              }
                                            ],
                                            "id": 2779,
                                            "name": "MemberAccess",
                                            "src": "26382:28:2"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "member_name": "PreBoosted",
                                              "referencedDeclaration": null,
                                              "type": "enum GenesisProtocol.ProposalState"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 904,
                                                  "type": "type(enum GenesisProtocol.ProposalState)",
                                                  "value": "ProposalState"
                                                },
                                                "id": 2780,
                                                "name": "Identifier",
                                                "src": "26414:13:2"
                                              }
                                            ],
                                            "id": 2781,
                                            "name": "MemberAccess",
                                            "src": "26414:24:2"
                                          }
                                        ],
                                        "id": 2782,
                                        "name": "BinaryOperation",
                                        "src": "26382:56:2"
                                      }
                                    ],
                                    "id": 2783,
                                    "name": "TupleExpression",
                                    "src": "26381:58:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "type": "bool"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_enum$_ProposalState_$904",
                                            "typeString": "enum GenesisProtocol.ProposalState"
                                          },
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "==",
                                          "type": "bool"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "state",
                                              "referencedDeclaration": 963,
                                              "type": "enum GenesisProtocol.ProposalState"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "type": "struct GenesisProtocol.Proposal storage ref"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 1046,
                                                      "type": "mapping(bytes32 => struct GenesisProtocol.Proposal storage ref)",
                                                      "value": "proposals"
                                                    },
                                                    "id": 2784,
                                                    "name": "Identifier",
                                                    "src": "26442:9:2"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 2771,
                                                      "type": "bytes32",
                                                      "value": "_proposalId"
                                                    },
                                                    "id": 2785,
                                                    "name": "Identifier",
                                                    "src": "26452:11:2"
                                                  }
                                                ],
                                                "id": 2786,
                                                "name": "IndexAccess",
                                                "src": "26442:22:2"
                                              }
                                            ],
                                            "id": 2787,
                                            "name": "MemberAccess",
                                            "src": "26442:28:2"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "member_name": "Boosted",
                                              "referencedDeclaration": null,
                                              "type": "enum GenesisProtocol.ProposalState"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 904,
                                                  "type": "type(enum GenesisProtocol.ProposalState)",
                                                  "value": "ProposalState"
                                                },
                                                "id": 2788,
                                                "name": "Identifier",
                                                "src": "26474:13:2"
                                              }
                                            ],
                                            "id": 2789,
                                            "name": "MemberAccess",
                                            "src": "26474:21:2"
                                          }
                                        ],
                                        "id": 2790,
                                        "name": "BinaryOperation",
                                        "src": "26442:53:2"
                                      }
                                    ],
                                    "id": 2791,
                                    "name": "TupleExpression",
                                    "src": "26441:55:2"
                                  }
                                ],
                                "id": 2792,
                                "name": "BinaryOperation",
                                "src": "26381:115:2"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_enum$_ProposalState_$904",
                                        "typeString": "enum GenesisProtocol.ProposalState"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "==",
                                      "type": "bool"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "state",
                                          "referencedDeclaration": 963,
                                          "type": "enum GenesisProtocol.ProposalState"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "type": "struct GenesisProtocol.Proposal storage ref"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 1046,
                                                  "type": "mapping(bytes32 => struct GenesisProtocol.Proposal storage ref)",
                                                  "value": "proposals"
                                                },
                                                "id": 2793,
                                                "name": "Identifier",
                                                "src": "26499:9:2"
                                              },
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 2771,
                                                  "type": "bytes32",
                                                  "value": "_proposalId"
                                                },
                                                "id": 2794,
                                                "name": "Identifier",
                                                "src": "26509:11:2"
                                              }
                                            ],
                                            "id": 2795,
                                            "name": "IndexAccess",
                                            "src": "26499:22:2"
                                          }
                                        ],
                                        "id": 2796,
                                        "name": "MemberAccess",
                                        "src": "26499:28:2"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "member_name": "QuietEndingPeriod",
                                          "referencedDeclaration": null,
                                          "type": "enum GenesisProtocol.ProposalState"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 904,
                                              "type": "type(enum GenesisProtocol.ProposalState)",
                                              "value": "ProposalState"
                                            },
                                            "id": 2797,
                                            "name": "Identifier",
                                            "src": "26531:13:2"
                                          }
                                        ],
                                        "id": 2798,
                                        "name": "MemberAccess",
                                        "src": "26531:31:2"
                                      }
                                    ],
                                    "id": 2799,
                                    "name": "BinaryOperation",
                                    "src": "26499:63:2"
                                  }
                                ],
                                "id": 2800,
                                "name": "TupleExpression",
                                "src": "26498:65:2"
                              }
                            ],
                            "id": 2801,
                            "name": "BinaryOperation",
                            "src": "26381:182:2"
                          }
                        ],
                        "id": 2802,
                        "name": "TupleExpression",
                        "src": "26380:184:2"
                      }
                    ],
                    "id": 2803,
                    "name": "Return",
                    "src": "26373:191:2"
                  }
                ],
                "id": 2804,
                "name": "Block",
                "src": "26363:208:2"
              }
            ],
            "id": 2805,
            "name": "FunctionDefinition",
            "src": "26293:278:2"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "proposalStatus",
              "payable": false,
              "scope": 3292,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_proposalId",
                      "scope": 2831,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 2806,
                        "name": "ElementaryTypeName",
                        "src": "26847:7:2"
                      }
                    ],
                    "id": 2807,
                    "name": "VariableDeclaration",
                    "src": "26847:19:2"
                  }
                ],
                "id": 2808,
                "name": "ParameterList",
                "src": "26846:21:2"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 2831,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 2809,
                        "name": "ElementaryTypeName",
                        "src": "26892:4:2"
                      }
                    ],
                    "id": 2810,
                    "name": "VariableDeclaration",
                    "src": "26892:4:2"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 2831,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 2811,
                        "name": "ElementaryTypeName",
                        "src": "26898:4:2"
                      }
                    ],
                    "id": 2812,
                    "name": "VariableDeclaration",
                    "src": "26898:4:2"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 2831,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 2813,
                        "name": "ElementaryTypeName",
                        "src": "26904:4:2"
                      }
                    ],
                    "id": 2814,
                    "name": "VariableDeclaration",
                    "src": "26904:4:2"
                  }
                ],
                "id": 2815,
                "name": "ParameterList",
                "src": "26891:18:2"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 2815
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "tuple(uint256,uint256,uint256)"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "totalVotes",
                              "referencedDeclaration": 951,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "struct GenesisProtocol.Proposal storage ref"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1046,
                                      "type": "mapping(bytes32 => struct GenesisProtocol.Proposal storage ref)",
                                      "value": "proposals"
                                    },
                                    "id": 2816,
                                    "name": "Identifier",
                                    "src": "26928:9:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2807,
                                      "type": "bytes32",
                                      "value": "_proposalId"
                                    },
                                    "id": 2817,
                                    "name": "Identifier",
                                    "src": "26938:11:2"
                                  }
                                ],
                                "id": 2818,
                                "name": "IndexAccess",
                                "src": "26928:22:2"
                              }
                            ],
                            "id": 2819,
                            "name": "MemberAccess",
                            "src": "26928:33:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "totalStakes",
                              "referencedDeclaration": 953,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "struct GenesisProtocol.Proposal storage ref"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1046,
                                      "type": "mapping(bytes32 => struct GenesisProtocol.Proposal storage ref)",
                                      "value": "proposals"
                                    },
                                    "id": 2820,
                                    "name": "Identifier",
                                    "src": "26963:9:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2807,
                                      "type": "bytes32",
                                      "value": "_proposalId"
                                    },
                                    "id": 2821,
                                    "name": "Identifier",
                                    "src": "26973:11:2"
                                  }
                                ],
                                "id": 2822,
                                "name": "IndexAccess",
                                "src": "26963:22:2"
                              }
                            ],
                            "id": 2823,
                            "name": "MemberAccess",
                            "src": "26963:34:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "votersStakes",
                              "referencedDeclaration": 955,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "struct GenesisProtocol.Proposal storage ref"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1046,
                                      "type": "mapping(bytes32 => struct GenesisProtocol.Proposal storage ref)",
                                      "value": "proposals"
                                    },
                                    "id": 2824,
                                    "name": "Identifier",
                                    "src": "26999:9:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2807,
                                      "type": "bytes32",
                                      "value": "_proposalId"
                                    },
                                    "id": 2825,
                                    "name": "Identifier",
                                    "src": "27009:11:2"
                                  }
                                ],
                                "id": 2826,
                                "name": "IndexAccess",
                                "src": "26999:22:2"
                              }
                            ],
                            "id": 2827,
                            "name": "MemberAccess",
                            "src": "26999:35:2"
                          }
                        ],
                        "id": 2828,
                        "name": "TupleExpression",
                        "src": "26927:108:2"
                      }
                    ],
                    "id": 2829,
                    "name": "Return",
                    "src": "26920:115:2"
                  }
                ],
                "id": 2830,
                "name": "Block",
                "src": "26910:132:2"
              }
            ],
            "id": 2831,
            "name": "FunctionDefinition",
            "src": "26823:219:2"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "totalReputationSupply",
              "payable": false,
              "scope": 3292,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_proposalId",
                      "scope": 2850,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 2832,
                        "name": "ElementaryTypeName",
                        "src": "27280:7:2"
                      }
                    ],
                    "id": 2833,
                    "name": "VariableDeclaration",
                    "src": "27280:19:2"
                  }
                ],
                "id": 2834,
                "name": "ParameterList",
                "src": "27279:21:2"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 2850,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 2835,
                        "name": "ElementaryTypeName",
                        "src": "27325:4:2"
                      }
                    ],
                    "id": 2836,
                    "name": "VariableDeclaration",
                    "src": "27325:4:2"
                  }
                ],
                "id": 2837,
                "name": "ParameterList",
                "src": "27324:6:2"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 2837
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "uint256",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "totalSupply",
                              "referencedDeclaration": 5218,
                              "type": "function () view external returns (uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "contract Reputation",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        null
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "nativeReputation",
                                      "referencedDeclaration": 3606,
                                      "type": "function () view external returns (contract Reputation)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "isStructConstructorCall": false,
                                          "lValueRequested": false,
                                          "names": [
                                            null
                                          ],
                                          "type": "contract Avatar",
                                          "type_conversion": true
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              ],
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 3873,
                                              "type": "type(contract Avatar)",
                                              "value": "Avatar"
                                            },
                                            "id": 2838,
                                            "name": "Identifier",
                                            "src": "27348:6:2"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "avatar",
                                              "referencedDeclaration": 945,
                                              "type": "address"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "type": "struct GenesisProtocol.Proposal storage ref"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 1046,
                                                      "type": "mapping(bytes32 => struct GenesisProtocol.Proposal storage ref)",
                                                      "value": "proposals"
                                                    },
                                                    "id": 2839,
                                                    "name": "Identifier",
                                                    "src": "27355:9:2"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 2833,
                                                      "type": "bytes32",
                                                      "value": "_proposalId"
                                                    },
                                                    "id": 2840,
                                                    "name": "Identifier",
                                                    "src": "27365:11:2"
                                                  }
                                                ],
                                                "id": 2841,
                                                "name": "IndexAccess",
                                                "src": "27355:22:2"
                                              }
                                            ],
                                            "id": 2842,
                                            "name": "MemberAccess",
                                            "src": "27355:29:2"
                                          }
                                        ],
                                        "id": 2843,
                                        "name": "FunctionCall",
                                        "src": "27348:37:2"
                                      }
                                    ],
                                    "id": 2844,
                                    "name": "MemberAccess",
                                    "src": "27348:54:2"
                                  }
                                ],
                                "id": 2845,
                                "name": "FunctionCall",
                                "src": "27348:56:2"
                              }
                            ],
                            "id": 2846,
                            "name": "MemberAccess",
                            "src": "27348:68:2"
                          }
                        ],
                        "id": 2847,
                        "name": "FunctionCall",
                        "src": "27348:70:2"
                      }
                    ],
                    "id": 2848,
                    "name": "Return",
                    "src": "27341:77:2"
                  }
                ],
                "id": 2849,
                "name": "Block",
                "src": "27331:94:2"
              }
            ],
            "id": 2850,
            "name": "FunctionDefinition",
            "src": "27249:176:2"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "proposalAvatar",
              "payable": false,
              "scope": 3292,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_proposalId",
                      "scope": 2864,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 2851,
                        "name": "ElementaryTypeName",
                        "src": "27632:7:2"
                      }
                    ],
                    "id": 2852,
                    "name": "VariableDeclaration",
                    "src": "27632:19:2"
                  }
                ],
                "id": 2853,
                "name": "ParameterList",
                "src": "27631:21:2"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 2864,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 2854,
                        "name": "ElementaryTypeName",
                        "src": "27677:7:2"
                      }
                    ],
                    "id": 2855,
                    "name": "VariableDeclaration",
                    "src": "27677:7:2"
                  }
                ],
                "id": 2856,
                "name": "ParameterList",
                "src": "27676:9:2"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 2856
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "address"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "avatar",
                              "referencedDeclaration": 945,
                              "type": "address"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "struct GenesisProtocol.Proposal storage ref"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1046,
                                      "type": "mapping(bytes32 => struct GenesisProtocol.Proposal storage ref)",
                                      "value": "proposals"
                                    },
                                    "id": 2857,
                                    "name": "Identifier",
                                    "src": "27704:9:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2852,
                                      "type": "bytes32",
                                      "value": "_proposalId"
                                    },
                                    "id": 2858,
                                    "name": "Identifier",
                                    "src": "27714:11:2"
                                  }
                                ],
                                "id": 2859,
                                "name": "IndexAccess",
                                "src": "27704:22:2"
                              }
                            ],
                            "id": 2860,
                            "name": "MemberAccess",
                            "src": "27704:29:2"
                          }
                        ],
                        "id": 2861,
                        "name": "TupleExpression",
                        "src": "27703:31:2"
                      }
                    ],
                    "id": 2862,
                    "name": "Return",
                    "src": "27696:38:2"
                  }
                ],
                "id": 2863,
                "name": "Block",
                "src": "27686:55:2"
              }
            ],
            "id": 2864,
            "name": "FunctionDefinition",
            "src": "27608:133:2"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "scoreThresholdParams",
              "payable": false,
              "scope": 3292,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_avatar",
                      "scope": 2894,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 2865,
                        "name": "ElementaryTypeName",
                        "src": "28017:7:2"
                      }
                    ],
                    "id": 2866,
                    "name": "VariableDeclaration",
                    "src": "28017:15:2"
                  }
                ],
                "id": 2867,
                "name": "ParameterList",
                "src": "28016:17:2"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 2894,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 2868,
                        "name": "ElementaryTypeName",
                        "src": "28058:4:2"
                      }
                    ],
                    "id": 2869,
                    "name": "VariableDeclaration",
                    "src": "28058:4:2"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 2894,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 2870,
                        "name": "ElementaryTypeName",
                        "src": "28063:4:2"
                      }
                    ],
                    "id": 2871,
                    "name": "VariableDeclaration",
                    "src": "28063:4:2"
                  }
                ],
                "id": 2872,
                "name": "ParameterList",
                "src": "28057:11:2"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        2874
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "paramsHash",
                          "scope": 2894,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "bytes32",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "bytes32",
                              "type": "bytes32"
                            },
                            "id": 2873,
                            "name": "ElementaryTypeName",
                            "src": "28079:7:2"
                          }
                        ],
                        "id": 2874,
                        "name": "VariableDeclaration",
                        "src": "28079:18:2"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bytes32",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_Avatar_$3873",
                                  "typeString": "contract Avatar"
                                }
                              ],
                              "overloadedDeclarations": [
                                9584
                              ],
                              "referencedDeclaration": 9584,
                              "type": "function (contract Avatar) view returns (bytes32)",
                              "value": "getParametersFromController"
                            },
                            "id": 2875,
                            "name": "Identifier",
                            "src": "28100:27:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "contract Avatar",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3873,
                                  "type": "type(contract Avatar)",
                                  "value": "Avatar"
                                },
                                "id": 2876,
                                "name": "Identifier",
                                "src": "28128:6:2"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2866,
                                  "type": "address",
                                  "value": "_avatar"
                                },
                                "id": 2877,
                                "name": "Identifier",
                                "src": "28135:7:2"
                              }
                            ],
                            "id": 2878,
                            "name": "FunctionCall",
                            "src": "28128:15:2"
                          }
                        ],
                        "id": 2879,
                        "name": "FunctionCall",
                        "src": "28100:44:2"
                      }
                    ],
                    "id": 2880,
                    "name": "VariableDeclarationStatement",
                    "src": "28079:65:2"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        2882
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "params",
                          "scope": 2894,
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "type": "struct GenesisProtocol.Parameters memory",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "Parameters",
                              "referencedDeclaration": 931,
                              "type": "struct GenesisProtocol.Parameters storage pointer"
                            },
                            "id": 2881,
                            "name": "UserDefinedTypeName",
                            "src": "28154:10:2"
                          }
                        ],
                        "id": 2882,
                        "name": "VariableDeclaration",
                        "src": "28154:24:2"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "struct GenesisProtocol.Parameters storage ref"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1042,
                              "type": "mapping(bytes32 => struct GenesisProtocol.Parameters storage ref)",
                              "value": "parameters"
                            },
                            "id": 2883,
                            "name": "Identifier",
                            "src": "28181:10:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2874,
                              "type": "bytes32",
                              "value": "paramsHash"
                            },
                            "id": 2884,
                            "name": "Identifier",
                            "src": "28192:10:2"
                          }
                        ],
                        "id": 2885,
                        "name": "IndexAccess",
                        "src": "28181:22:2"
                      }
                    ],
                    "id": 2886,
                    "name": "VariableDeclarationStatement",
                    "src": "28154:49:2"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 2872
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "tuple(uint256,uint256)"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "thresholdConstA",
                              "referencedDeclaration": 912,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2882,
                                  "type": "struct GenesisProtocol.Parameters memory",
                                  "value": "params"
                                },
                                "id": 2887,
                                "name": "Identifier",
                                "src": "28221:6:2"
                              }
                            ],
                            "id": 2888,
                            "name": "MemberAccess",
                            "src": "28221:22:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "thresholdConstB",
                              "referencedDeclaration": 914,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2882,
                                  "type": "struct GenesisProtocol.Parameters memory",
                                  "value": "params"
                                },
                                "id": 2889,
                                "name": "Identifier",
                                "src": "28244:6:2"
                              }
                            ],
                            "id": 2890,
                            "name": "MemberAccess",
                            "src": "28244:22:2"
                          }
                        ],
                        "id": 2891,
                        "name": "TupleExpression",
                        "src": "28220:47:2"
                      }
                    ],
                    "id": 2892,
                    "name": "Return",
                    "src": "28213:54:2"
                  }
                ],
                "id": 2893,
                "name": "Block",
                "src": "28069:205:2"
              }
            ],
            "id": 2894,
            "name": "FunctionDefinition",
            "src": "27987:287:2"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "staker",
              "payable": false,
              "scope": 3292,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_proposalId",
                      "scope": 2922,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 2895,
                        "name": "ElementaryTypeName",
                        "src": "28538:7:2"
                      }
                    ],
                    "id": 2896,
                    "name": "VariableDeclaration",
                    "src": "28538:19:2"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_staker",
                      "scope": 2922,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 2897,
                        "name": "ElementaryTypeName",
                        "src": "28558:7:2"
                      }
                    ],
                    "id": 2898,
                    "name": "VariableDeclaration",
                    "src": "28558:15:2"
                  }
                ],
                "id": 2899,
                "name": "ParameterList",
                "src": "28537:37:2"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 2922,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 2900,
                        "name": "ElementaryTypeName",
                        "src": "28599:4:2"
                      }
                    ],
                    "id": 2901,
                    "name": "VariableDeclaration",
                    "src": "28599:4:2"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 2922,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 2902,
                        "name": "ElementaryTypeName",
                        "src": "28604:4:2"
                      }
                    ],
                    "id": 2903,
                    "name": "VariableDeclaration",
                    "src": "28604:4:2"
                  }
                ],
                "id": 2904,
                "name": "ParameterList",
                "src": "28598:11:2"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 2904
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "tuple(uint256,uint256)"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "vote",
                              "referencedDeclaration": 940,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "struct GenesisProtocol.Staker storage ref"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "stakers",
                                      "referencedDeclaration": 985,
                                      "type": "mapping(address => struct GenesisProtocol.Staker storage ref)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "type": "struct GenesisProtocol.Proposal storage ref"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1046,
                                              "type": "mapping(bytes32 => struct GenesisProtocol.Proposal storage ref)",
                                              "value": "proposals"
                                            },
                                            "id": 2905,
                                            "name": "Identifier",
                                            "src": "28628:9:2"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 2896,
                                              "type": "bytes32",
                                              "value": "_proposalId"
                                            },
                                            "id": 2906,
                                            "name": "Identifier",
                                            "src": "28638:11:2"
                                          }
                                        ],
                                        "id": 2907,
                                        "name": "IndexAccess",
                                        "src": "28628:22:2"
                                      }
                                    ],
                                    "id": 2908,
                                    "name": "MemberAccess",
                                    "src": "28628:30:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2898,
                                      "type": "address",
                                      "value": "_staker"
                                    },
                                    "id": 2909,
                                    "name": "Identifier",
                                    "src": "28659:7:2"
                                  }
                                ],
                                "id": 2910,
                                "name": "IndexAccess",
                                "src": "28628:39:2"
                              }
                            ],
                            "id": 2911,
                            "name": "MemberAccess",
                            "src": "28628:44:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "amount",
                              "referencedDeclaration": 942,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "struct GenesisProtocol.Staker storage ref"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "stakers",
                                      "referencedDeclaration": 985,
                                      "type": "mapping(address => struct GenesisProtocol.Staker storage ref)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "type": "struct GenesisProtocol.Proposal storage ref"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1046,
                                              "type": "mapping(bytes32 => struct GenesisProtocol.Proposal storage ref)",
                                              "value": "proposals"
                                            },
                                            "id": 2912,
                                            "name": "Identifier",
                                            "src": "28673:9:2"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 2896,
                                              "type": "bytes32",
                                              "value": "_proposalId"
                                            },
                                            "id": 2913,
                                            "name": "Identifier",
                                            "src": "28683:11:2"
                                          }
                                        ],
                                        "id": 2914,
                                        "name": "IndexAccess",
                                        "src": "28673:22:2"
                                      }
                                    ],
                                    "id": 2915,
                                    "name": "MemberAccess",
                                    "src": "28673:30:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2898,
                                      "type": "address",
                                      "value": "_staker"
                                    },
                                    "id": 2916,
                                    "name": "Identifier",
                                    "src": "28704:7:2"
                                  }
                                ],
                                "id": 2917,
                                "name": "IndexAccess",
                                "src": "28673:39:2"
                              }
                            ],
                            "id": 2918,
                            "name": "MemberAccess",
                            "src": "28673:46:2"
                          }
                        ],
                        "id": 2919,
                        "name": "TupleExpression",
                        "src": "28627:93:2"
                      }
                    ],
                    "id": 2920,
                    "name": "Return",
                    "src": "28620:100:2"
                  }
                ],
                "id": 2921,
                "name": "Block",
                "src": "28610:117:2"
              }
            ],
            "id": 2922,
            "name": "FunctionDefinition",
            "src": "28522:205:2"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "voteStake",
              "payable": false,
              "scope": 3292,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_proposalId",
                      "scope": 2939,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 2923,
                        "name": "ElementaryTypeName",
                        "src": "28962:7:2"
                      }
                    ],
                    "id": 2924,
                    "name": "VariableDeclaration",
                    "src": "28962:19:2"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_vote",
                      "scope": 2939,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 2925,
                        "name": "ElementaryTypeName",
                        "src": "28982:4:2"
                      }
                    ],
                    "id": 2926,
                    "name": "VariableDeclaration",
                    "src": "28982:10:2"
                  }
                ],
                "id": 2927,
                "name": "ParameterList",
                "src": "28961:32:2"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 2939,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 2928,
                        "name": "ElementaryTypeName",
                        "src": "29018:4:2"
                      }
                    ],
                    "id": 2929,
                    "name": "VariableDeclaration",
                    "src": "29018:4:2"
                  }
                ],
                "id": 2930,
                "name": "ParameterList",
                "src": "29017:6:2"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 2930
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "stakes",
                              "referencedDeclaration": 981,
                              "type": "mapping(uint256 => uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "struct GenesisProtocol.Proposal storage ref"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1046,
                                      "type": "mapping(bytes32 => struct GenesisProtocol.Proposal storage ref)",
                                      "value": "proposals"
                                    },
                                    "id": 2931,
                                    "name": "Identifier",
                                    "src": "29041:9:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2924,
                                      "type": "bytes32",
                                      "value": "_proposalId"
                                    },
                                    "id": 2932,
                                    "name": "Identifier",
                                    "src": "29051:11:2"
                                  }
                                ],
                                "id": 2933,
                                "name": "IndexAccess",
                                "src": "29041:22:2"
                              }
                            ],
                            "id": 2934,
                            "name": "MemberAccess",
                            "src": "29041:29:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2926,
                              "type": "uint256",
                              "value": "_vote"
                            },
                            "id": 2935,
                            "name": "Identifier",
                            "src": "29071:5:2"
                          }
                        ],
                        "id": 2936,
                        "name": "IndexAccess",
                        "src": "29041:36:2"
                      }
                    ],
                    "id": 2937,
                    "name": "Return",
                    "src": "29034:43:2"
                  }
                ],
                "id": 2938,
                "name": "Block",
                "src": "29024:60:2"
              }
            ],
            "id": 2939,
            "name": "FunctionDefinition",
            "src": "28943:141:2"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "winningVote",
              "payable": false,
              "scope": 3292,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_proposalId",
                      "scope": 2952,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 2940,
                        "name": "ElementaryTypeName",
                        "src": "29276:7:2"
                      }
                    ],
                    "id": 2941,
                    "name": "VariableDeclaration",
                    "src": "29276:19:2"
                  }
                ],
                "id": 2942,
                "name": "ParameterList",
                "src": "29275:21:2"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 2952,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 2943,
                        "name": "ElementaryTypeName",
                        "src": "29321:4:2"
                      }
                    ],
                    "id": 2944,
                    "name": "VariableDeclaration",
                    "src": "29321:4:2"
                  }
                ],
                "id": 2945,
                "name": "ParameterList",
                "src": "29320:6:2"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 2945
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "member_name": "winningVote",
                          "referencedDeclaration": 965,
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "struct GenesisProtocol.Proposal storage ref"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1046,
                                  "type": "mapping(bytes32 => struct GenesisProtocol.Proposal storage ref)",
                                  "value": "proposals"
                                },
                                "id": 2946,
                                "name": "Identifier",
                                "src": "29344:9:2"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2941,
                                  "type": "bytes32",
                                  "value": "_proposalId"
                                },
                                "id": 2947,
                                "name": "Identifier",
                                "src": "29354:11:2"
                              }
                            ],
                            "id": 2948,
                            "name": "IndexAccess",
                            "src": "29344:22:2"
                          }
                        ],
                        "id": 2949,
                        "name": "MemberAccess",
                        "src": "29344:34:2"
                      }
                    ],
                    "id": 2950,
                    "name": "Return",
                    "src": "29337:41:2"
                  }
                ],
                "id": 2951,
                "name": "Block",
                "src": "29327:58:2"
              }
            ],
            "id": 2952,
            "name": "FunctionDefinition",
            "src": "29255:130:2"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "state",
              "payable": false,
              "scope": 3292,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_proposalId",
                      "scope": 2965,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 2953,
                        "name": "ElementaryTypeName",
                        "src": "29577:7:2"
                      }
                    ],
                    "id": 2954,
                    "name": "VariableDeclaration",
                    "src": "29577:19:2"
                  }
                ],
                "id": 2955,
                "name": "ParameterList",
                "src": "29576:21:2"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 2965,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "enum GenesisProtocol.ProposalState",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "ProposalState",
                          "referencedDeclaration": 904,
                          "type": "enum GenesisProtocol.ProposalState"
                        },
                        "id": 2956,
                        "name": "UserDefinedTypeName",
                        "src": "29622:13:2"
                      }
                    ],
                    "id": 2957,
                    "name": "VariableDeclaration",
                    "src": "29622:13:2"
                  }
                ],
                "id": 2958,
                "name": "ParameterList",
                "src": "29621:15:2"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 2958
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "member_name": "state",
                          "referencedDeclaration": 963,
                          "type": "enum GenesisProtocol.ProposalState"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "struct GenesisProtocol.Proposal storage ref"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1046,
                                  "type": "mapping(bytes32 => struct GenesisProtocol.Proposal storage ref)",
                                  "value": "proposals"
                                },
                                "id": 2959,
                                "name": "Identifier",
                                "src": "29654:9:2"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2954,
                                  "type": "bytes32",
                                  "value": "_proposalId"
                                },
                                "id": 2960,
                                "name": "Identifier",
                                "src": "29664:11:2"
                              }
                            ],
                            "id": 2961,
                            "name": "IndexAccess",
                            "src": "29654:22:2"
                          }
                        ],
                        "id": 2962,
                        "name": "MemberAccess",
                        "src": "29654:28:2"
                      }
                    ],
                    "id": 2963,
                    "name": "Return",
                    "src": "29647:35:2"
                  }
                ],
                "id": 2964,
                "name": "Block",
                "src": "29637:52:2"
              }
            ],
            "id": 2965,
            "name": "FunctionDefinition",
            "src": "29562:127:2"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "internalVote",
              "payable": false,
              "scope": 3292,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "private"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_proposalId",
                      "scope": 3233,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 2966,
                        "name": "ElementaryTypeName",
                        "src": "30381:7:2"
                      }
                    ],
                    "id": 2967,
                    "name": "VariableDeclaration",
                    "src": "30381:19:2"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_voter",
                      "scope": 3233,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 2968,
                        "name": "ElementaryTypeName",
                        "src": "30402:7:2"
                      }
                    ],
                    "id": 2969,
                    "name": "VariableDeclaration",
                    "src": "30402:14:2"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_vote",
                      "scope": 3233,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 2970,
                        "name": "ElementaryTypeName",
                        "src": "30418:4:2"
                      }
                    ],
                    "id": 2971,
                    "name": "VariableDeclaration",
                    "src": "30418:10:2"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_rep",
                      "scope": 3233,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 2972,
                        "name": "ElementaryTypeName",
                        "src": "30430:4:2"
                      }
                    ],
                    "id": 2973,
                    "name": "VariableDeclaration",
                    "src": "30430:9:2"
                  }
                ],
                "id": 2974,
                "name": "ParameterList",
                "src": "30380:60:2"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 3233,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 2975,
                        "name": "ElementaryTypeName",
                        "src": "30457:4:2"
                      }
                    ],
                    "id": 2976,
                    "name": "VariableDeclaration",
                    "src": "30457:4:2"
                  }
                ],
                "id": 2977,
                "name": "ParameterList",
                "src": "30456:6:2"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bool",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "overloadedDeclarations": [
                                1865
                              ],
                              "referencedDeclaration": 1865,
                              "type": "function (bytes32) returns (bool)",
                              "value": "execute"
                            },
                            "id": 2978,
                            "name": "Identifier",
                            "src": "30478:7:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2967,
                              "type": "bytes32",
                              "value": "_proposalId"
                            },
                            "id": 2979,
                            "name": "Identifier",
                            "src": "30486:11:2"
                          }
                        ],
                        "id": 2980,
                        "name": "FunctionCall",
                        "src": "30478:20:2"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "functionReturnParameters": 2977
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "74727565",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "bool",
                                  "type": "bool",
                                  "value": "true"
                                },
                                "id": 2981,
                                "name": "Literal",
                                "src": "30521:4:2"
                              }
                            ],
                            "id": 2982,
                            "name": "Return",
                            "src": "30514:11:2"
                          }
                        ],
                        "id": 2983,
                        "name": "Block",
                        "src": "30500:36:2"
                      }
                    ],
                    "id": 2984,
                    "name": "IfStatement",
                    "src": "30474:62:2"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        2986
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "paramsHash",
                          "scope": 3233,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "bytes32",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "bytes32",
                              "type": "bytes32"
                            },
                            "id": 2985,
                            "name": "ElementaryTypeName",
                            "src": "30546:7:2"
                          }
                        ],
                        "id": 2986,
                        "name": "VariableDeclaration",
                        "src": "30546:18:2"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bytes32",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_Avatar_$3873",
                                  "typeString": "contract Avatar"
                                }
                              ],
                              "overloadedDeclarations": [
                                9584
                              ],
                              "referencedDeclaration": 9584,
                              "type": "function (contract Avatar) view returns (bytes32)",
                              "value": "getParametersFromController"
                            },
                            "id": 2987,
                            "name": "Identifier",
                            "src": "30567:27:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "contract Avatar",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3873,
                                  "type": "type(contract Avatar)",
                                  "value": "Avatar"
                                },
                                "id": 2988,
                                "name": "Identifier",
                                "src": "30595:6:2"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "avatar",
                                  "referencedDeclaration": 945,
                                  "type": "address"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "type": "struct GenesisProtocol.Proposal storage ref"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1046,
                                          "type": "mapping(bytes32 => struct GenesisProtocol.Proposal storage ref)",
                                          "value": "proposals"
                                        },
                                        "id": 2989,
                                        "name": "Identifier",
                                        "src": "30602:9:2"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 2967,
                                          "type": "bytes32",
                                          "value": "_proposalId"
                                        },
                                        "id": 2990,
                                        "name": "Identifier",
                                        "src": "30612:11:2"
                                      }
                                    ],
                                    "id": 2991,
                                    "name": "IndexAccess",
                                    "src": "30602:22:2"
                                  }
                                ],
                                "id": 2992,
                                "name": "MemberAccess",
                                "src": "30602:29:2"
                              }
                            ],
                            "id": 2993,
                            "name": "FunctionCall",
                            "src": "30595:37:2"
                          }
                        ],
                        "id": 2994,
                        "name": "FunctionCall",
                        "src": "30567:66:2"
                      }
                    ],
                    "id": 2995,
                    "name": "VariableDeclarationStatement",
                    "src": "30546:87:2"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        2997
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "params",
                          "scope": 3233,
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "type": "struct GenesisProtocol.Parameters memory",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "Parameters",
                              "referencedDeclaration": 931,
                              "type": "struct GenesisProtocol.Parameters storage pointer"
                            },
                            "id": 2996,
                            "name": "UserDefinedTypeName",
                            "src": "30643:10:2"
                          }
                        ],
                        "id": 2997,
                        "name": "VariableDeclaration",
                        "src": "30643:24:2"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "struct GenesisProtocol.Parameters storage ref"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1042,
                              "type": "mapping(bytes32 => struct GenesisProtocol.Parameters storage ref)",
                              "value": "parameters"
                            },
                            "id": 2998,
                            "name": "Identifier",
                            "src": "30670:10:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2986,
                              "type": "bytes32",
                              "value": "paramsHash"
                            },
                            "id": 2999,
                            "name": "Identifier",
                            "src": "30681:10:2"
                          }
                        ],
                        "id": 3000,
                        "name": "IndexAccess",
                        "src": "30670:22:2"
                      }
                    ],
                    "id": 3001,
                    "name": "VariableDeclarationStatement",
                    "src": "30643:49:2"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        3003
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "proposal",
                          "scope": 3233,
                          "stateVariable": false,
                          "storageLocation": "storage",
                          "type": "struct GenesisProtocol.Proposal storage pointer",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "Proposal",
                              "referencedDeclaration": 986,
                              "type": "struct GenesisProtocol.Proposal storage pointer"
                            },
                            "id": 3002,
                            "name": "UserDefinedTypeName",
                            "src": "30702:8:2"
                          }
                        ],
                        "id": 3003,
                        "name": "VariableDeclaration",
                        "src": "30702:25:2"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "struct GenesisProtocol.Proposal storage ref"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1046,
                              "type": "mapping(bytes32 => struct GenesisProtocol.Proposal storage ref)",
                              "value": "proposals"
                            },
                            "id": 3004,
                            "name": "Identifier",
                            "src": "30730:9:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2967,
                              "type": "bytes32",
                              "value": "_proposalId"
                            },
                            "id": 3005,
                            "name": "Identifier",
                            "src": "30740:11:2"
                          }
                        ],
                        "id": 3006,
                        "name": "IndexAccess",
                        "src": "30730:22:2"
                      }
                    ],
                    "id": 3007,
                    "name": "VariableDeclarationStatement",
                    "src": "30702:50:2"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12014,
                              "type": "function (bool) pure",
                              "value": "require"
                            },
                            "id": 3008,
                            "name": "Identifier",
                            "src": "30791:7:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "<",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2971,
                                  "type": "uint256",
                                  "value": "_vote"
                                },
                                "id": 3009,
                                "name": "Identifier",
                                "src": "30799:5:2"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "numOfChoices",
                                  "referencedDeclaration": 947,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3003,
                                      "type": "struct GenesisProtocol.Proposal storage pointer",
                                      "value": "proposal"
                                    },
                                    "id": 3010,
                                    "name": "Identifier",
                                    "src": "30807:8:2"
                                  }
                                ],
                                "id": 3011,
                                "name": "MemberAccess",
                                "src": "30807:21:2"
                              }
                            ],
                            "id": 3012,
                            "name": "BinaryOperation",
                            "src": "30799:29:2"
                          }
                        ],
                        "id": 3013,
                        "name": "FunctionCall",
                        "src": "30791:38:2"
                      }
                    ],
                    "id": 3014,
                    "name": "ExpressionStatement",
                    "src": "30791:38:2"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        3016
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "reputation",
                          "scope": 3233,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint",
                              "type": "uint256"
                            },
                            "id": 3015,
                            "name": "ElementaryTypeName",
                            "src": "30886:4:2"
                          }
                        ],
                        "id": 3016,
                        "name": "VariableDeclaration",
                        "src": "30886:15:2"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "uint256",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "reputationOf",
                              "referencedDeclaration": 5266,
                              "type": "function (address) view external returns (uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "contract Reputation",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        null
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "nativeReputation",
                                      "referencedDeclaration": 3606,
                                      "type": "function () view external returns (contract Reputation)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "isStructConstructorCall": false,
                                          "lValueRequested": false,
                                          "names": [
                                            null
                                          ],
                                          "type": "contract Avatar",
                                          "type_conversion": true
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              ],
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 3873,
                                              "type": "type(contract Avatar)",
                                              "value": "Avatar"
                                            },
                                            "id": 3017,
                                            "name": "Identifier",
                                            "src": "30904:6:2"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "avatar",
                                              "referencedDeclaration": 945,
                                              "type": "address"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 3003,
                                                  "type": "struct GenesisProtocol.Proposal storage pointer",
                                                  "value": "proposal"
                                                },
                                                "id": 3018,
                                                "name": "Identifier",
                                                "src": "30911:8:2"
                                              }
                                            ],
                                            "id": 3019,
                                            "name": "MemberAccess",
                                            "src": "30911:15:2"
                                          }
                                        ],
                                        "id": 3020,
                                        "name": "FunctionCall",
                                        "src": "30904:23:2"
                                      }
                                    ],
                                    "id": 3021,
                                    "name": "MemberAccess",
                                    "src": "30904:40:2"
                                  }
                                ],
                                "id": 3022,
                                "name": "FunctionCall",
                                "src": "30904:42:2"
                              }
                            ],
                            "id": 3023,
                            "name": "MemberAccess",
                            "src": "30904:55:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2969,
                              "type": "address",
                              "value": "_voter"
                            },
                            "id": 3024,
                            "name": "Identifier",
                            "src": "30960:6:2"
                          }
                        ],
                        "id": 3025,
                        "name": "FunctionCall",
                        "src": "30904:63:2"
                      }
                    ],
                    "id": 3026,
                    "name": "VariableDeclarationStatement",
                    "src": "30886:81:2"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12014,
                              "type": "function (bool) pure",
                              "value": "require"
                            },
                            "id": 3027,
                            "name": "Identifier",
                            "src": "30977:7:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": ">=",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3016,
                                  "type": "uint256",
                                  "value": "reputation"
                                },
                                "id": 3028,
                                "name": "Identifier",
                                "src": "30985:10:2"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2973,
                                  "type": "uint256",
                                  "value": "_rep"
                                },
                                "id": 3029,
                                "name": "Identifier",
                                "src": "30999:4:2"
                              }
                            ],
                            "id": 3030,
                            "name": "BinaryOperation",
                            "src": "30985:18:2"
                          }
                        ],
                        "id": 3031,
                        "name": "FunctionCall",
                        "src": "30977:27:2"
                      }
                    ],
                    "id": 3032,
                    "name": "ExpressionStatement",
                    "src": "30977:27:2"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        3034
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "rep",
                          "scope": 3233,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint",
                              "type": "uint256"
                            },
                            "id": 3033,
                            "name": "ElementaryTypeName",
                            "src": "31014:4:2"
                          }
                        ],
                        "id": 3034,
                        "name": "VariableDeclaration",
                        "src": "31014:8:2"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 2973,
                          "type": "uint256",
                          "value": "_rep"
                        },
                        "id": 3035,
                        "name": "Identifier",
                        "src": "31025:4:2"
                      }
                    ],
                    "id": 3036,
                    "name": "VariableDeclarationStatement",
                    "src": "31014:15:2"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "==",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3034,
                              "type": "uint256",
                              "value": "rep"
                            },
                            "id": 3037,
                            "name": "Identifier",
                            "src": "31043:3:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 3038,
                            "name": "Literal",
                            "src": "31050:1:2"
                          }
                        ],
                        "id": 3039,
                        "name": "BinaryOperation",
                        "src": "31043:8:2"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "=",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3034,
                                      "type": "uint256",
                                      "value": "rep"
                                    },
                                    "id": 3040,
                                    "name": "Identifier",
                                    "src": "31067:3:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3016,
                                      "type": "uint256",
                                      "value": "reputation"
                                    },
                                    "id": 3041,
                                    "name": "Identifier",
                                    "src": "31073:10:2"
                                  }
                                ],
                                "id": 3042,
                                "name": "Assignment",
                                "src": "31067:16:2"
                              }
                            ],
                            "id": 3043,
                            "name": "ExpressionStatement",
                            "src": "31067:16:2"
                          }
                        ],
                        "id": 3044,
                        "name": "Block",
                        "src": "31053:41:2"
                      }
                    ],
                    "id": 3045,
                    "name": "IfStatement",
                    "src": "31039:55:2"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "!=",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "reputation",
                              "referencedDeclaration": 935,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "struct GenesisProtocol.Voter storage ref"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "voters",
                                      "referencedDeclaration": 977,
                                      "type": "mapping(address => struct GenesisProtocol.Voter storage ref)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 3003,
                                          "type": "struct GenesisProtocol.Proposal storage pointer",
                                          "value": "proposal"
                                        },
                                        "id": 3046,
                                        "name": "Identifier",
                                        "src": "31165:8:2"
                                      }
                                    ],
                                    "id": 3047,
                                    "name": "MemberAccess",
                                    "src": "31165:15:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2969,
                                      "type": "address",
                                      "value": "_voter"
                                    },
                                    "id": 3048,
                                    "name": "Identifier",
                                    "src": "31181:6:2"
                                  }
                                ],
                                "id": 3049,
                                "name": "IndexAccess",
                                "src": "31165:23:2"
                              }
                            ],
                            "id": 3050,
                            "name": "MemberAccess",
                            "src": "31165:34:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 3051,
                            "name": "Literal",
                            "src": "31203:1:2"
                          }
                        ],
                        "id": 3052,
                        "name": "BinaryOperation",
                        "src": "31165:39:2"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "functionReturnParameters": 2977
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "66616c7365",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "bool",
                                  "type": "bool",
                                  "value": "false"
                                },
                                "id": 3053,
                                "name": "Literal",
                                "src": "31227:5:2"
                              }
                            ],
                            "id": 3054,
                            "name": "Return",
                            "src": "31220:12:2"
                          }
                        ],
                        "id": 3055,
                        "name": "Block",
                        "src": "31206:37:2"
                      }
                    ],
                    "id": 3056,
                    "name": "IfStatement",
                    "src": "31161:82:2"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "votes",
                                  "referencedDeclaration": 973,
                                  "type": "mapping(uint256 => uint256)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3003,
                                      "type": "struct GenesisProtocol.Proposal storage pointer",
                                      "value": "proposal"
                                    },
                                    "id": 3057,
                                    "name": "Identifier",
                                    "src": "31282:8:2"
                                  }
                                ],
                                "id": 3060,
                                "name": "MemberAccess",
                                "src": "31282:14:2"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2971,
                                  "type": "uint256",
                                  "value": "_vote"
                                },
                                "id": 3059,
                                "name": "Identifier",
                                "src": "31297:5:2"
                              }
                            ],
                            "id": 3061,
                            "name": "IndexAccess",
                            "src": "31282:21:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "uint256",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "add",
                                  "referencedDeclaration": 11364,
                                  "type": "function (uint256,uint256) pure returns (uint256)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3034,
                                      "type": "uint256",
                                      "value": "rep"
                                    },
                                    "id": 3062,
                                    "name": "Identifier",
                                    "src": "31306:3:2"
                                  }
                                ],
                                "id": 3063,
                                "name": "MemberAccess",
                                "src": "31306:7:2"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "votes",
                                      "referencedDeclaration": 973,
                                      "type": "mapping(uint256 => uint256)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 3003,
                                          "type": "struct GenesisProtocol.Proposal storage pointer",
                                          "value": "proposal"
                                        },
                                        "id": 3064,
                                        "name": "Identifier",
                                        "src": "31314:8:2"
                                      }
                                    ],
                                    "id": 3065,
                                    "name": "MemberAccess",
                                    "src": "31314:14:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2971,
                                      "type": "uint256",
                                      "value": "_vote"
                                    },
                                    "id": 3066,
                                    "name": "Identifier",
                                    "src": "31329:5:2"
                                  }
                                ],
                                "id": 3067,
                                "name": "IndexAccess",
                                "src": "31314:21:2"
                              }
                            ],
                            "id": 3068,
                            "name": "FunctionCall",
                            "src": "31306:30:2"
                          }
                        ],
                        "id": 3069,
                        "name": "Assignment",
                        "src": "31282:54:2"
                      }
                    ],
                    "id": 3070,
                    "name": "ExpressionStatement",
                    "src": "31282:54:2"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": ">",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "votes",
                                  "referencedDeclaration": 973,
                                  "type": "mapping(uint256 => uint256)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3003,
                                      "type": "struct GenesisProtocol.Proposal storage pointer",
                                      "value": "proposal"
                                    },
                                    "id": 3071,
                                    "name": "Identifier",
                                    "src": "31350:8:2"
                                  }
                                ],
                                "id": 3072,
                                "name": "MemberAccess",
                                "src": "31350:14:2"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2971,
                                  "type": "uint256",
                                  "value": "_vote"
                                },
                                "id": 3073,
                                "name": "Identifier",
                                "src": "31365:5:2"
                              }
                            ],
                            "id": 3074,
                            "name": "IndexAccess",
                            "src": "31350:21:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "votes",
                                  "referencedDeclaration": 973,
                                  "type": "mapping(uint256 => uint256)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3003,
                                      "type": "struct GenesisProtocol.Proposal storage pointer",
                                      "value": "proposal"
                                    },
                                    "id": 3075,
                                    "name": "Identifier",
                                    "src": "31374:8:2"
                                  }
                                ],
                                "id": 3076,
                                "name": "MemberAccess",
                                "src": "31374:14:2"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "winningVote",
                                  "referencedDeclaration": 965,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3003,
                                      "type": "struct GenesisProtocol.Proposal storage pointer",
                                      "value": "proposal"
                                    },
                                    "id": 3077,
                                    "name": "Identifier",
                                    "src": "31389:8:2"
                                  }
                                ],
                                "id": 3078,
                                "name": "MemberAccess",
                                "src": "31389:20:2"
                              }
                            ],
                            "id": 3079,
                            "name": "IndexAccess",
                            "src": "31374:36:2"
                          }
                        ],
                        "id": 3080,
                        "name": "BinaryOperation",
                        "src": "31350:60:2"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "assignments": [
                                3082
                              ]
                            },
                            "children": [
                              {
                                "attributes": {
                                  "constant": false,
                                  "name": "_now",
                                  "scope": 3233,
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "type": "uint256",
                                  "value": null,
                                  "visibility": "internal"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "uint",
                                      "type": "uint256"
                                    },
                                    "id": 3081,
                                    "name": "ElementaryTypeName",
                                    "src": "31491:4:2"
                                  }
                                ],
                                "id": 3082,
                                "name": "VariableDeclaration",
                                "src": "31491:9:2"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12013,
                                  "type": "uint256",
                                  "value": "now"
                                },
                                "id": 3083,
                                "name": "Identifier",
                                "src": "31503:3:2"
                              }
                            ],
                            "id": 3084,
                            "name": "VariableDeclarationStatement",
                            "src": "31491:15:2"
                          },
                          {
                            "attributes": {
                              "falseBody": null
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "||",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "type": "bool"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_enum$_ProposalState_$904",
                                            "typeString": "enum GenesisProtocol.ProposalState"
                                          },
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "==",
                                          "type": "bool"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "state",
                                              "referencedDeclaration": 963,
                                              "type": "enum GenesisProtocol.ProposalState"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 3003,
                                                  "type": "struct GenesisProtocol.Proposal storage pointer",
                                                  "value": "proposal"
                                                },
                                                "id": 3085,
                                                "name": "Identifier",
                                                "src": "31525:8:2"
                                              }
                                            ],
                                            "id": 3086,
                                            "name": "MemberAccess",
                                            "src": "31525:14:2"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "member_name": "QuietEndingPeriod",
                                              "referencedDeclaration": null,
                                              "type": "enum GenesisProtocol.ProposalState"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 904,
                                                  "type": "type(enum GenesisProtocol.ProposalState)",
                                                  "value": "ProposalState"
                                                },
                                                "id": 3087,
                                                "name": "Identifier",
                                                "src": "31543:13:2"
                                              }
                                            ],
                                            "id": 3088,
                                            "name": "MemberAccess",
                                            "src": "31543:31:2"
                                          }
                                        ],
                                        "id": 3089,
                                        "name": "BinaryOperation",
                                        "src": "31525:49:2"
                                      }
                                    ],
                                    "id": 3090,
                                    "name": "TupleExpression",
                                    "src": "31524:51:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "type": "bool"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          },
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "&&",
                                          "type": "bool"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isInlineArray": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "type": "bool"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "commonType": {
                                                    "typeIdentifier": "t_enum$_ProposalState_$904",
                                                    "typeString": "enum GenesisProtocol.ProposalState"
                                                  },
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "operator": "==",
                                                  "type": "bool"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "member_name": "state",
                                                      "referencedDeclaration": 963,
                                                      "type": "enum GenesisProtocol.ProposalState"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "argumentTypes": null,
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 3003,
                                                          "type": "struct GenesisProtocol.Proposal storage pointer",
                                                          "value": "proposal"
                                                        },
                                                        "id": 3091,
                                                        "name": "Identifier",
                                                        "src": "31596:8:2"
                                                      }
                                                    ],
                                                    "id": 3092,
                                                    "name": "MemberAccess",
                                                    "src": "31596:14:2"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "lValueRequested": false,
                                                      "member_name": "Boosted",
                                                      "referencedDeclaration": null,
                                                      "type": "enum GenesisProtocol.ProposalState"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "argumentTypes": null,
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 904,
                                                          "type": "type(enum GenesisProtocol.ProposalState)",
                                                          "value": "ProposalState"
                                                        },
                                                        "id": 3093,
                                                        "name": "Identifier",
                                                        "src": "31614:13:2"
                                                      }
                                                    ],
                                                    "id": 3094,
                                                    "name": "MemberAccess",
                                                    "src": "31614:21:2"
                                                  }
                                                ],
                                                "id": 3095,
                                                "name": "BinaryOperation",
                                                "src": "31596:39:2"
                                              }
                                            ],
                                            "id": 3096,
                                            "name": "TupleExpression",
                                            "src": "31595:41:2"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isInlineArray": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "type": "bool"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "commonType": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  },
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "operator": ">=",
                                                  "type": "bool"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "isConstant": false,
                                                      "isInlineArray": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "type": "uint256"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "argumentTypes": null,
                                                          "commonType": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          },
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "operator": "-",
                                                          "type": "uint256"
                                                        },
                                                        "children": [
                                                          {
                                                            "attributes": {
                                                              "argumentTypes": null,
                                                              "overloadedDeclarations": [
                                                                null
                                                              ],
                                                              "referencedDeclaration": 3082,
                                                              "type": "uint256",
                                                              "value": "_now"
                                                            },
                                                            "id": 3097,
                                                            "name": "Identifier",
                                                            "src": "31642:4:2"
                                                          },
                                                          {
                                                            "attributes": {
                                                              "argumentTypes": null,
                                                              "isConstant": false,
                                                              "isLValue": true,
                                                              "isPure": false,
                                                              "lValueRequested": false,
                                                              "member_name": "boostedPhaseTime",
                                                              "referencedDeclaration": 961,
                                                              "type": "uint256"
                                                            },
                                                            "children": [
                                                              {
                                                                "attributes": {
                                                                  "argumentTypes": null,
                                                                  "overloadedDeclarations": [
                                                                    null
                                                                  ],
                                                                  "referencedDeclaration": 3003,
                                                                  "type": "struct GenesisProtocol.Proposal storage pointer",
                                                                  "value": "proposal"
                                                                },
                                                                "id": 3098,
                                                                "name": "Identifier",
                                                                "src": "31649:8:2"
                                                              }
                                                            ],
                                                            "id": 3099,
                                                            "name": "MemberAccess",
                                                            "src": "31649:25:2"
                                                          }
                                                        ],
                                                        "id": 3100,
                                                        "name": "BinaryOperation",
                                                        "src": "31642:32:2"
                                                      }
                                                    ],
                                                    "id": 3101,
                                                    "name": "TupleExpression",
                                                    "src": "31641:34:2"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "isConstant": false,
                                                      "isInlineArray": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "type": "uint256"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "argumentTypes": null,
                                                          "commonType": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          },
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "operator": "-",
                                                          "type": "uint256"
                                                        },
                                                        "children": [
                                                          {
                                                            "attributes": {
                                                              "argumentTypes": null,
                                                              "isConstant": false,
                                                              "isLValue": true,
                                                              "isPure": false,
                                                              "lValueRequested": false,
                                                              "member_name": "boostedVotePeriodLimit",
                                                              "referencedDeclaration": 910,
                                                              "type": "uint256"
                                                            },
                                                            "children": [
                                                              {
                                                                "attributes": {
                                                                  "argumentTypes": null,
                                                                  "overloadedDeclarations": [
                                                                    null
                                                                  ],
                                                                  "referencedDeclaration": 2997,
                                                                  "type": "struct GenesisProtocol.Parameters memory",
                                                                  "value": "params"
                                                                },
                                                                "id": 3102,
                                                                "name": "Identifier",
                                                                "src": "31680:6:2"
                                                              }
                                                            ],
                                                            "id": 3103,
                                                            "name": "MemberAccess",
                                                            "src": "31680:29:2"
                                                          },
                                                          {
                                                            "attributes": {
                                                              "argumentTypes": null,
                                                              "isConstant": false,
                                                              "isLValue": true,
                                                              "isPure": false,
                                                              "lValueRequested": false,
                                                              "member_name": "quietEndingPeriod",
                                                              "referencedDeclaration": 920,
                                                              "type": "uint256"
                                                            },
                                                            "children": [
                                                              {
                                                                "attributes": {
                                                                  "argumentTypes": null,
                                                                  "overloadedDeclarations": [
                                                                    null
                                                                  ],
                                                                  "referencedDeclaration": 2997,
                                                                  "type": "struct GenesisProtocol.Parameters memory",
                                                                  "value": "params"
                                                                },
                                                                "id": 3104,
                                                                "name": "Identifier",
                                                                "src": "31712:6:2"
                                                              }
                                                            ],
                                                            "id": 3105,
                                                            "name": "MemberAccess",
                                                            "src": "31712:24:2"
                                                          }
                                                        ],
                                                        "id": 3106,
                                                        "name": "BinaryOperation",
                                                        "src": "31680:56:2"
                                                      }
                                                    ],
                                                    "id": 3107,
                                                    "name": "TupleExpression",
                                                    "src": "31679:58:2"
                                                  }
                                                ],
                                                "id": 3108,
                                                "name": "BinaryOperation",
                                                "src": "31641:96:2"
                                              }
                                            ],
                                            "id": 3109,
                                            "name": "TupleExpression",
                                            "src": "31640:98:2"
                                          }
                                        ],
                                        "id": 3110,
                                        "name": "BinaryOperation",
                                        "src": "31595:143:2"
                                      }
                                    ],
                                    "id": 3111,
                                    "name": "TupleExpression",
                                    "src": "31594:145:2"
                                  }
                                ],
                                "id": 3112,
                                "name": "BinaryOperation",
                                "src": "31524:215:2"
                              },
                              {
                                "children": [
                                  {
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "=",
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "member_name": "boostedPhaseTime",
                                              "referencedDeclaration": 961,
                                              "type": "uint256"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 3003,
                                                  "type": "struct GenesisProtocol.Proposal storage pointer",
                                                  "value": "proposal"
                                                },
                                                "id": 3113,
                                                "name": "Identifier",
                                                "src": "31795:8:2"
                                              }
                                            ],
                                            "id": 3115,
                                            "name": "MemberAccess",
                                            "src": "31795:25:2"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 3082,
                                              "type": "uint256",
                                              "value": "_now"
                                            },
                                            "id": 3116,
                                            "name": "Identifier",
                                            "src": "31823:4:2"
                                          }
                                        ],
                                        "id": 3117,
                                        "name": "Assignment",
                                        "src": "31795:32:2"
                                      }
                                    ],
                                    "id": 3118,
                                    "name": "ExpressionStatement",
                                    "src": "31795:32:2"
                                  },
                                  {
                                    "attributes": {
                                      "falseBody": null
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_enum$_ProposalState_$904",
                                            "typeString": "enum GenesisProtocol.ProposalState"
                                          },
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "!=",
                                          "type": "bool"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "state",
                                              "referencedDeclaration": 963,
                                              "type": "enum GenesisProtocol.ProposalState"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 3003,
                                                  "type": "struct GenesisProtocol.Proposal storage pointer",
                                                  "value": "proposal"
                                                },
                                                "id": 3119,
                                                "name": "Identifier",
                                                "src": "31849:8:2"
                                              }
                                            ],
                                            "id": 3120,
                                            "name": "MemberAccess",
                                            "src": "31849:14:2"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "member_name": "QuietEndingPeriod",
                                              "referencedDeclaration": null,
                                              "type": "enum GenesisProtocol.ProposalState"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 904,
                                                  "type": "type(enum GenesisProtocol.ProposalState)",
                                                  "value": "ProposalState"
                                                },
                                                "id": 3121,
                                                "name": "Identifier",
                                                "src": "31867:13:2"
                                              }
                                            ],
                                            "id": 3122,
                                            "name": "MemberAccess",
                                            "src": "31867:31:2"
                                          }
                                        ],
                                        "id": 3123,
                                        "name": "BinaryOperation",
                                        "src": "31849:49:2"
                                      },
                                      {
                                        "children": [
                                          {
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "operator": "=",
                                                  "type": "uint256"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": true,
                                                      "member_name": "boostedVotePeriodLimit",
                                                      "referencedDeclaration": 969,
                                                      "type": "uint256"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "argumentTypes": null,
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 3003,
                                                          "type": "struct GenesisProtocol.Proposal storage pointer",
                                                          "value": "proposal"
                                                        },
                                                        "id": 3124,
                                                        "name": "Identifier",
                                                        "src": "31922:8:2"
                                                      }
                                                    ],
                                                    "id": 3126,
                                                    "name": "MemberAccess",
                                                    "src": "31922:31:2"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "member_name": "quietEndingPeriod",
                                                      "referencedDeclaration": 920,
                                                      "type": "uint256"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "argumentTypes": null,
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 2997,
                                                          "type": "struct GenesisProtocol.Parameters memory",
                                                          "value": "params"
                                                        },
                                                        "id": 3127,
                                                        "name": "Identifier",
                                                        "src": "31956:6:2"
                                                      }
                                                    ],
                                                    "id": 3128,
                                                    "name": "MemberAccess",
                                                    "src": "31956:24:2"
                                                  }
                                                ],
                                                "id": 3129,
                                                "name": "Assignment",
                                                "src": "31922:58:2"
                                              }
                                            ],
                                            "id": 3130,
                                            "name": "ExpressionStatement",
                                            "src": "31922:58:2"
                                          },
                                          {
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "operator": "=",
                                                  "type": "enum GenesisProtocol.ProposalState"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": true,
                                                      "member_name": "state",
                                                      "referencedDeclaration": 963,
                                                      "type": "enum GenesisProtocol.ProposalState"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "argumentTypes": null,
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 3003,
                                                          "type": "struct GenesisProtocol.Proposal storage pointer",
                                                          "value": "proposal"
                                                        },
                                                        "id": 3131,
                                                        "name": "Identifier",
                                                        "src": "32002:8:2"
                                                      }
                                                    ],
                                                    "id": 3133,
                                                    "name": "MemberAccess",
                                                    "src": "32002:14:2"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "lValueRequested": false,
                                                      "member_name": "QuietEndingPeriod",
                                                      "referencedDeclaration": null,
                                                      "type": "enum GenesisProtocol.ProposalState"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "argumentTypes": null,
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 904,
                                                          "type": "type(enum GenesisProtocol.ProposalState)",
                                                          "value": "ProposalState"
                                                        },
                                                        "id": 3134,
                                                        "name": "Identifier",
                                                        "src": "32019:13:2"
                                                      }
                                                    ],
                                                    "id": 3135,
                                                    "name": "MemberAccess",
                                                    "src": "32019:31:2"
                                                  }
                                                ],
                                                "id": 3136,
                                                "name": "Assignment",
                                                "src": "32002:48:2"
                                              }
                                            ],
                                            "id": 3137,
                                            "name": "ExpressionStatement",
                                            "src": "32002:48:2"
                                          }
                                        ],
                                        "id": 3138,
                                        "name": "Block",
                                        "src": "31900:169:2"
                                      }
                                    ],
                                    "id": 3139,
                                    "name": "IfStatement",
                                    "src": "31845:224:2"
                                  }
                                ],
                                "id": 3140,
                                "name": "Block",
                                "src": "31741:342:2"
                              }
                            ],
                            "id": 3141,
                            "name": "IfStatement",
                            "src": "31520:563:2"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "=",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "member_name": "winningVote",
                                      "referencedDeclaration": 965,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 3003,
                                          "type": "struct GenesisProtocol.Proposal storage pointer",
                                          "value": "proposal"
                                        },
                                        "id": 3142,
                                        "name": "Identifier",
                                        "src": "32096:8:2"
                                      }
                                    ],
                                    "id": 3144,
                                    "name": "MemberAccess",
                                    "src": "32096:20:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2971,
                                      "type": "uint256",
                                      "value": "_vote"
                                    },
                                    "id": 3145,
                                    "name": "Identifier",
                                    "src": "32119:5:2"
                                  }
                                ],
                                "id": 3146,
                                "name": "Assignment",
                                "src": "32096:28:2"
                              }
                            ],
                            "id": 3147,
                            "name": "ExpressionStatement",
                            "src": "32096:28:2"
                          }
                        ],
                        "id": 3148,
                        "name": "Block",
                        "src": "31412:723:2"
                      }
                    ],
                    "id": 3149,
                    "name": "IfStatement",
                    "src": "31346:789:2"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "totalVotes",
                              "referencedDeclaration": 951,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3003,
                                  "type": "struct GenesisProtocol.Proposal storage pointer",
                                  "value": "proposal"
                                },
                                "id": 3150,
                                "name": "Identifier",
                                "src": "32144:8:2"
                              }
                            ],
                            "id": 3152,
                            "name": "MemberAccess",
                            "src": "32144:19:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "uint256",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "add",
                                  "referencedDeclaration": 11364,
                                  "type": "function (uint256,uint256) pure returns (uint256)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3034,
                                      "type": "uint256",
                                      "value": "rep"
                                    },
                                    "id": 3153,
                                    "name": "Identifier",
                                    "src": "32166:3:2"
                                  }
                                ],
                                "id": 3154,
                                "name": "MemberAccess",
                                "src": "32166:7:2"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "totalVotes",
                                  "referencedDeclaration": 951,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3003,
                                      "type": "struct GenesisProtocol.Proposal storage pointer",
                                      "value": "proposal"
                                    },
                                    "id": 3155,
                                    "name": "Identifier",
                                    "src": "32174:8:2"
                                  }
                                ],
                                "id": 3156,
                                "name": "MemberAccess",
                                "src": "32174:19:2"
                              }
                            ],
                            "id": 3157,
                            "name": "FunctionCall",
                            "src": "32166:28:2"
                          }
                        ],
                        "id": 3158,
                        "name": "Assignment",
                        "src": "32144:50:2"
                      }
                    ],
                    "id": 3159,
                    "name": "ExpressionStatement",
                    "src": "32144:50:2"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ProposalState_$904",
                            "typeString": "enum GenesisProtocol.ProposalState"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "!=",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "state",
                              "referencedDeclaration": 963,
                              "type": "enum GenesisProtocol.ProposalState"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3003,
                                  "type": "struct GenesisProtocol.Proposal storage pointer",
                                  "value": "proposal"
                                },
                                "id": 3160,
                                "name": "Identifier",
                                "src": "32208:8:2"
                              }
                            ],
                            "id": 3161,
                            "name": "MemberAccess",
                            "src": "32208:14:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "member_name": "Boosted",
                              "referencedDeclaration": null,
                              "type": "enum GenesisProtocol.ProposalState"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 904,
                                  "type": "type(enum GenesisProtocol.ProposalState)",
                                  "value": "ProposalState"
                                },
                                "id": 3162,
                                "name": "Identifier",
                                "src": "32226:13:2"
                              }
                            ],
                            "id": 3163,
                            "name": "MemberAccess",
                            "src": "32226:21:2"
                          }
                        ],
                        "id": 3164,
                        "name": "BinaryOperation",
                        "src": "32208:39:2"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "assignments": [
                                3166
                              ]
                            },
                            "children": [
                              {
                                "attributes": {
                                  "constant": false,
                                  "name": "reputationDeposit",
                                  "scope": 3233,
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "type": "uint256",
                                  "value": null,
                                  "visibility": "internal"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "uint",
                                      "type": "uint256"
                                    },
                                    "id": 3165,
                                    "name": "ElementaryTypeName",
                                    "src": "32263:4:2"
                                  }
                                ],
                                "id": 3166,
                                "name": "VariableDeclaration",
                                "src": "32263:22:2"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "/",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "*",
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "votersReputationLossRatio",
                                              "referencedDeclaration": 928,
                                              "type": "uint256"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 2997,
                                                  "type": "struct GenesisProtocol.Parameters memory",
                                                  "value": "params"
                                                },
                                                "id": 3167,
                                                "name": "Identifier",
                                                "src": "32289:6:2"
                                              }
                                            ],
                                            "id": 3168,
                                            "name": "MemberAccess",
                                            "src": "32289:32:2"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 3034,
                                              "type": "uint256",
                                              "value": "rep"
                                            },
                                            "id": 3169,
                                            "name": "Identifier",
                                            "src": "32324:3:2"
                                          }
                                        ],
                                        "id": 3170,
                                        "name": "BinaryOperation",
                                        "src": "32289:38:2"
                                      }
                                    ],
                                    "id": 3171,
                                    "name": "TupleExpression",
                                    "src": "32288:40:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "313030",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 100",
                                      "value": "100"
                                    },
                                    "id": 3172,
                                    "name": "Literal",
                                    "src": "32329:3:2"
                                  }
                                ],
                                "id": 3173,
                                "name": "BinaryOperation",
                                "src": "32288:44:2"
                              }
                            ],
                            "id": 3174,
                            "name": "VariableDeclarationStatement",
                            "src": "32263:69:2"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "bool",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "mintReputation",
                                      "referencedDeclaration": 4984,
                                      "type": "function (int256,address,address) external returns (bool)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "isStructConstructorCall": false,
                                          "lValueRequested": false,
                                          "names": [
                                            null
                                          ],
                                          "type": "contract ControllerInterface",
                                          "type_conversion": true
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              ],
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 5172,
                                              "type": "type(contract ControllerInterface)",
                                              "value": "ControllerInterface"
                                            },
                                            "id": 3175,
                                            "name": "Identifier",
                                            "src": "32346:19:2"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "arguments": [
                                                null
                                              ],
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "isStructConstructorCall": false,
                                              "lValueRequested": false,
                                              "names": [
                                                null
                                              ],
                                              "type": "address",
                                              "type_conversion": false
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": [
                                                    null
                                                  ],
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "member_name": "owner",
                                                  "referencedDeclaration": 11393,
                                                  "type": "function () view external returns (address)"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "isStructConstructorCall": false,
                                                      "lValueRequested": false,
                                                      "names": [
                                                        null
                                                      ],
                                                      "type": "contract Avatar",
                                                      "type_conversion": true
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "argumentTypes": [
                                                            {
                                                              "typeIdentifier": "t_address",
                                                              "typeString": "address"
                                                            }
                                                          ],
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 3873,
                                                          "type": "type(contract Avatar)",
                                                          "value": "Avatar"
                                                        },
                                                        "id": 3176,
                                                        "name": "Identifier",
                                                        "src": "32366:6:2"
                                                      },
                                                      {
                                                        "attributes": {
                                                          "argumentTypes": null,
                                                          "isConstant": false,
                                                          "isLValue": true,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "member_name": "avatar",
                                                          "referencedDeclaration": 945,
                                                          "type": "address"
                                                        },
                                                        "children": [
                                                          {
                                                            "attributes": {
                                                              "argumentTypes": null,
                                                              "overloadedDeclarations": [
                                                                null
                                                              ],
                                                              "referencedDeclaration": 3003,
                                                              "type": "struct GenesisProtocol.Proposal storage pointer",
                                                              "value": "proposal"
                                                            },
                                                            "id": 3177,
                                                            "name": "Identifier",
                                                            "src": "32373:8:2"
                                                          }
                                                        ],
                                                        "id": 3178,
                                                        "name": "MemberAccess",
                                                        "src": "32373:15:2"
                                                      }
                                                    ],
                                                    "id": 3179,
                                                    "name": "FunctionCall",
                                                    "src": "32366:23:2"
                                                  }
                                                ],
                                                "id": 3180,
                                                "name": "MemberAccess",
                                                "src": "32366:29:2"
                                              }
                                            ],
                                            "id": 3181,
                                            "name": "FunctionCall",
                                            "src": "32366:31:2"
                                          }
                                        ],
                                        "id": 3182,
                                        "name": "FunctionCall",
                                        "src": "32346:52:2"
                                      }
                                    ],
                                    "id": 3183,
                                    "name": "MemberAccess",
                                    "src": "32346:67:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "*",
                                      "type": "int256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "type": "int_const -1"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "operator": "-",
                                              "prefix": true,
                                              "type": "int_const -1"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "hexvalue": "31",
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "subdenomination": null,
                                                  "token": "number",
                                                  "type": "int_const 1",
                                                  "value": "1"
                                                },
                                                "id": 3184,
                                                "name": "Literal",
                                                "src": "32416:1:2"
                                              }
                                            ],
                                            "id": 3185,
                                            "name": "UnaryOperation",
                                            "src": "32415:2:2"
                                          }
                                        ],
                                        "id": 3186,
                                        "name": "TupleExpression",
                                        "src": "32414:4:2"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "isStructConstructorCall": false,
                                          "lValueRequested": false,
                                          "names": [
                                            null
                                          ],
                                          "type": "int256",
                                          "type_conversion": true
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "type": "type(int256)",
                                              "value": "int"
                                            },
                                            "id": 3187,
                                            "name": "ElementaryTypeNameExpression",
                                            "src": "32421:3:2"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 3166,
                                              "type": "uint256",
                                              "value": "reputationDeposit"
                                            },
                                            "id": 3188,
                                            "name": "Identifier",
                                            "src": "32425:17:2"
                                          }
                                        ],
                                        "id": 3189,
                                        "name": "FunctionCall",
                                        "src": "32421:22:2"
                                      }
                                    ],
                                    "id": 3190,
                                    "name": "BinaryOperation",
                                    "src": "32414:29:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2969,
                                      "type": "address",
                                      "value": "_voter"
                                    },
                                    "id": 3191,
                                    "name": "Identifier",
                                    "src": "32444:6:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "avatar",
                                      "referencedDeclaration": 945,
                                      "type": "address"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 3003,
                                          "type": "struct GenesisProtocol.Proposal storage pointer",
                                          "value": "proposal"
                                        },
                                        "id": 3192,
                                        "name": "Identifier",
                                        "src": "32451:8:2"
                                      }
                                    ],
                                    "id": 3193,
                                    "name": "MemberAccess",
                                    "src": "32451:15:2"
                                  }
                                ],
                                "id": 3194,
                                "name": "FunctionCall",
                                "src": "32346:121:2"
                              }
                            ],
                            "id": 3195,
                            "name": "ExpressionStatement",
                            "src": "32346:121:2"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "+=",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "member_name": "lostReputation",
                                      "referencedDeclaration": 957,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 3003,
                                          "type": "struct GenesisProtocol.Proposal storage pointer",
                                          "value": "proposal"
                                        },
                                        "id": 3196,
                                        "name": "Identifier",
                                        "src": "32481:8:2"
                                      }
                                    ],
                                    "id": 3198,
                                    "name": "MemberAccess",
                                    "src": "32481:23:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3166,
                                      "type": "uint256",
                                      "value": "reputationDeposit"
                                    },
                                    "id": 3199,
                                    "name": "Identifier",
                                    "src": "32508:17:2"
                                  }
                                ],
                                "id": 3200,
                                "name": "Assignment",
                                "src": "32481:44:2"
                              }
                            ],
                            "id": 3201,
                            "name": "ExpressionStatement",
                            "src": "32481:44:2"
                          }
                        ],
                        "id": 3202,
                        "name": "Block",
                        "src": "32249:287:2"
                      }
                    ],
                    "id": 3203,
                    "name": "IfStatement",
                    "src": "32204:332:2"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "struct GenesisProtocol.Voter storage ref"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "type": "struct GenesisProtocol.Voter storage ref"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "voters",
                                  "referencedDeclaration": 977,
                                  "type": "mapping(address => struct GenesisProtocol.Voter storage ref)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3003,
                                      "type": "struct GenesisProtocol.Proposal storage pointer",
                                      "value": "proposal"
                                    },
                                    "id": 3204,
                                    "name": "Identifier",
                                    "src": "32545:8:2"
                                  }
                                ],
                                "id": 3207,
                                "name": "MemberAccess",
                                "src": "32545:15:2"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2969,
                                  "type": "address",
                                  "value": "_voter"
                                },
                                "id": 3206,
                                "name": "Identifier",
                                "src": "32561:6:2"
                              }
                            ],
                            "id": 3208,
                            "name": "IndexAccess",
                            "src": "32545:23:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": true,
                              "lValueRequested": false,
                              "names": [
                                "reputation",
                                "vote",
                                "preBoosted"
                              ],
                              "type": "struct GenesisProtocol.Voter memory",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 938,
                                  "type": "type(struct GenesisProtocol.Voter storage pointer)",
                                  "value": "Voter"
                                },
                                "id": 3209,
                                "name": "Identifier",
                                "src": "32571:5:2"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3034,
                                  "type": "uint256",
                                  "value": "rep"
                                },
                                "id": 3210,
                                "name": "Identifier",
                                "src": "32603:3:2"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2971,
                                  "type": "uint256",
                                  "value": "_vote"
                                },
                                "id": 3211,
                                "name": "Identifier",
                                "src": "32626:5:2"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_enum$_ProposalState_$904",
                                        "typeString": "enum GenesisProtocol.ProposalState"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "==",
                                      "type": "bool"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "state",
                                          "referencedDeclaration": 963,
                                          "type": "enum GenesisProtocol.ProposalState"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 3003,
                                              "type": "struct GenesisProtocol.Proposal storage pointer",
                                              "value": "proposal"
                                            },
                                            "id": 3212,
                                            "name": "Identifier",
                                            "src": "32657:8:2"
                                          }
                                        ],
                                        "id": 3213,
                                        "name": "MemberAccess",
                                        "src": "32657:14:2"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "member_name": "PreBoosted",
                                          "referencedDeclaration": null,
                                          "type": "enum GenesisProtocol.ProposalState"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 904,
                                              "type": "type(enum GenesisProtocol.ProposalState)",
                                              "value": "ProposalState"
                                            },
                                            "id": 3214,
                                            "name": "Identifier",
                                            "src": "32675:13:2"
                                          }
                                        ],
                                        "id": 3215,
                                        "name": "MemberAccess",
                                        "src": "32675:24:2"
                                      }
                                    ],
                                    "id": 3216,
                                    "name": "BinaryOperation",
                                    "src": "32657:42:2"
                                  }
                                ],
                                "id": 3217,
                                "name": "TupleExpression",
                                "src": "32656:44:2"
                              }
                            ],
                            "id": 3218,
                            "name": "FunctionCall",
                            "src": "32571:140:2"
                          }
                        ],
                        "id": 3219,
                        "name": "Assignment",
                        "src": "32545:166:2"
                      }
                    ],
                    "id": 3220,
                    "name": "ExpressionStatement",
                    "src": "32545:166:2"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1012,
                              "type": "function (bytes32,address,uint256,uint256)",
                              "value": "VoteProposal"
                            },
                            "id": 3221,
                            "name": "Identifier",
                            "src": "32739:12:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2967,
                              "type": "bytes32",
                              "value": "_proposalId"
                            },
                            "id": 3222,
                            "name": "Identifier",
                            "src": "32752:11:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2969,
                              "type": "address",
                              "value": "_voter"
                            },
                            "id": 3223,
                            "name": "Identifier",
                            "src": "32765:6:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2971,
                              "type": "uint256",
                              "value": "_vote"
                            },
                            "id": 3224,
                            "name": "Identifier",
                            "src": "32773:5:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3016,
                              "type": "uint256",
                              "value": "reputation"
                            },
                            "id": 3225,
                            "name": "Identifier",
                            "src": "32780:10:2"
                          }
                        ],
                        "id": 3226,
                        "name": "FunctionCall",
                        "src": "32739:52:2"
                      }
                    ],
                    "id": 3227,
                    "name": "ExpressionStatement",
                    "src": "32739:52:2"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 2977
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bool",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "overloadedDeclarations": [
                                1865
                              ],
                              "referencedDeclaration": 1865,
                              "type": "function (bytes32) returns (bool)",
                              "value": "execute"
                            },
                            "id": 3228,
                            "name": "Identifier",
                            "src": "32867:7:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2967,
                              "type": "bytes32",
                              "value": "_proposalId"
                            },
                            "id": 3229,
                            "name": "Identifier",
                            "src": "32875:11:2"
                          }
                        ],
                        "id": 3230,
                        "name": "FunctionCall",
                        "src": "32867:20:2"
                      }
                    ],
                    "id": 3231,
                    "name": "Return",
                    "src": "32860:27:2"
                  }
                ],
                "id": 3232,
                "name": "Block",
                "src": "30463:2431:2"
              }
            ],
            "id": 3233,
            "name": "FunctionDefinition",
            "src": "30359:2535:2"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "_score",
              "payable": false,
              "scope": 3292,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "private"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_proposalId",
                      "scope": 3291,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 3234,
                        "name": "ElementaryTypeName",
                        "src": "33230:7:2"
                      }
                    ],
                    "id": 3235,
                    "name": "VariableDeclaration",
                    "src": "33230:19:2"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_totalSupply",
                      "scope": 3291,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 3236,
                        "name": "ElementaryTypeName",
                        "src": "33251:4:2"
                      }
                    ],
                    "id": 3237,
                    "name": "VariableDeclaration",
                    "src": "33251:17:2"
                  }
                ],
                "id": 3238,
                "name": "ParameterList",
                "src": "33229:40:2"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 3291,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "int256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "int",
                          "type": "int256"
                        },
                        "id": 3239,
                        "name": "ElementaryTypeName",
                        "src": "33291:3:2"
                      }
                    ],
                    "id": 3240,
                    "name": "VariableDeclaration",
                    "src": "33291:3:2"
                  }
                ],
                "id": 3241,
                "name": "ParameterList",
                "src": "33290:5:2"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        3243
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "proposal",
                          "scope": 3291,
                          "stateVariable": false,
                          "storageLocation": "storage",
                          "type": "struct GenesisProtocol.Proposal storage pointer",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "Proposal",
                              "referencedDeclaration": 986,
                              "type": "struct GenesisProtocol.Proposal storage pointer"
                            },
                            "id": 3242,
                            "name": "UserDefinedTypeName",
                            "src": "33306:8:2"
                          }
                        ],
                        "id": 3243,
                        "name": "VariableDeclaration",
                        "src": "33306:25:2"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "struct GenesisProtocol.Proposal storage ref"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1046,
                              "type": "mapping(bytes32 => struct GenesisProtocol.Proposal storage ref)",
                              "value": "proposals"
                            },
                            "id": 3244,
                            "name": "Identifier",
                            "src": "33334:9:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3235,
                              "type": "bytes32",
                              "value": "_proposalId"
                            },
                            "id": 3245,
                            "name": "Identifier",
                            "src": "33344:11:2"
                          }
                        ],
                        "id": 3246,
                        "name": "IndexAccess",
                        "src": "33334:22:2"
                      }
                    ],
                    "id": 3247,
                    "name": "VariableDeclarationStatement",
                    "src": "33306:50:2"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "==",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "numOfChoices",
                              "referencedDeclaration": 947,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3243,
                                  "type": "struct GenesisProtocol.Proposal storage pointer",
                                  "value": "proposal"
                                },
                                "id": 3248,
                                "name": "Identifier",
                                "src": "33370:8:2"
                              }
                            ],
                            "id": 3249,
                            "name": "MemberAccess",
                            "src": "33370:21:2"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "32",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 2",
                              "value": "2"
                            },
                            "id": 3250,
                            "name": "Literal",
                            "src": "33395:1:2"
                          }
                        ],
                        "id": 3251,
                        "name": "BinaryOperation",
                        "src": "33370:26:2"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "functionReturnParameters": 3241
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "-",
                                  "type": "int256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "type": "int256",
                                      "type_conversion": true
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "type": "type(int256)",
                                          "value": "int"
                                        },
                                        "id": 3252,
                                        "name": "ElementaryTypeNameExpression",
                                        "src": "33419:3:2"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "stakes",
                                              "referencedDeclaration": 981,
                                              "type": "mapping(uint256 => uint256)"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 3243,
                                                  "type": "struct GenesisProtocol.Proposal storage pointer",
                                                  "value": "proposal"
                                                },
                                                "id": 3253,
                                                "name": "Identifier",
                                                "src": "33423:8:2"
                                              }
                                            ],
                                            "id": 3254,
                                            "name": "MemberAccess",
                                            "src": "33423:15:2"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "hexvalue": "31",
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "subdenomination": null,
                                              "token": "number",
                                              "type": "int_const 1",
                                              "value": "1"
                                            },
                                            "id": 3255,
                                            "name": "Literal",
                                            "src": "33439:1:2"
                                          }
                                        ],
                                        "id": 3256,
                                        "name": "IndexAccess",
                                        "src": "33423:18:2"
                                      }
                                    ],
                                    "id": 3257,
                                    "name": "FunctionCall",
                                    "src": "33419:23:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "type": "int256",
                                      "type_conversion": true
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "type": "type(int256)",
                                          "value": "int"
                                        },
                                        "id": 3258,
                                        "name": "ElementaryTypeNameExpression",
                                        "src": "33445:3:2"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "stakes",
                                              "referencedDeclaration": 981,
                                              "type": "mapping(uint256 => uint256)"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 3243,
                                                  "type": "struct GenesisProtocol.Proposal storage pointer",
                                                  "value": "proposal"
                                                },
                                                "id": 3259,
                                                "name": "Identifier",
                                                "src": "33449:8:2"
                                              }
                                            ],
                                            "id": 3260,
                                            "name": "MemberAccess",
                                            "src": "33449:15:2"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "hexvalue": "30",
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "subdenomination": null,
                                              "token": "number",
                                              "type": "int_const 0",
                                              "value": "0"
                                            },
                                            "id": 3261,
                                            "name": "Literal",
                                            "src": "33465:1:2"
                                          }
                                        ],
                                        "id": 3262,
                                        "name": "IndexAccess",
                                        "src": "33449:18:2"
                                      }
                                    ],
                                    "id": 3263,
                                    "name": "FunctionCall",
                                    "src": "33445:23:2"
                                  }
                                ],
                                "id": 3264,
                                "name": "BinaryOperation",
                                "src": "33419:49:2"
                              }
                            ],
                            "id": 3265,
                            "name": "Return",
                            "src": "33412:56:2"
                          }
                        ],
                        "id": 3266,
                        "name": "Block",
                        "src": "33398:81:2"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "functionReturnParameters": 3241
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "int256",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "type": "type(int256)",
                                      "value": "int"
                                    },
                                    "id": 3267,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "33505:3:2"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "/",
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "operator": "*",
                                              "type": "uint256"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "isConstant": false,
                                                  "isInlineArray": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "type": "uint256"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      },
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "operator": "+",
                                                      "type": "uint256"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "argumentTypes": null,
                                                          "isConstant": false,
                                                          "isLValue": true,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "member_name": "totalStakes",
                                                          "referencedDeclaration": 953,
                                                          "type": "uint256"
                                                        },
                                                        "children": [
                                                          {
                                                            "attributes": {
                                                              "argumentTypes": null,
                                                              "overloadedDeclarations": [
                                                                null
                                                              ],
                                                              "referencedDeclaration": 3243,
                                                              "type": "struct GenesisProtocol.Proposal storage pointer",
                                                              "value": "proposal"
                                                            },
                                                            "id": 3268,
                                                            "name": "Identifier",
                                                            "src": "33511:8:2"
                                                          }
                                                        ],
                                                        "id": 3269,
                                                        "name": "MemberAccess",
                                                        "src": "33511:20:2"
                                                      },
                                                      {
                                                        "attributes": {
                                                          "argumentTypes": null,
                                                          "isConstant": false,
                                                          "isLValue": true,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "member_name": "votersStakes",
                                                          "referencedDeclaration": 955,
                                                          "type": "uint256"
                                                        },
                                                        "children": [
                                                          {
                                                            "attributes": {
                                                              "argumentTypes": null,
                                                              "overloadedDeclarations": [
                                                                null
                                                              ],
                                                              "referencedDeclaration": 3243,
                                                              "type": "struct GenesisProtocol.Proposal storage pointer",
                                                              "value": "proposal"
                                                            },
                                                            "id": 3270,
                                                            "name": "Identifier",
                                                            "src": "33532:8:2"
                                                          }
                                                        ],
                                                        "id": 3271,
                                                        "name": "MemberAccess",
                                                        "src": "33532:21:2"
                                                      }
                                                    ],
                                                    "id": 3272,
                                                    "name": "BinaryOperation",
                                                    "src": "33511:42:2"
                                                  }
                                                ],
                                                "id": 3273,
                                                "name": "TupleExpression",
                                                "src": "33510:44:2"
                                              },
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "isConstant": false,
                                                  "isInlineArray": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "type": "uint256"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      },
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "operator": "**",
                                                      "type": "uint256"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "argumentTypes": null,
                                                          "isConstant": false,
                                                          "isLValue": true,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "member_name": "totalVotes",
                                                          "referencedDeclaration": 951,
                                                          "type": "uint256"
                                                        },
                                                        "children": [
                                                          {
                                                            "attributes": {
                                                              "argumentTypes": null,
                                                              "overloadedDeclarations": [
                                                                null
                                                              ],
                                                              "referencedDeclaration": 3243,
                                                              "type": "struct GenesisProtocol.Proposal storage pointer",
                                                              "value": "proposal"
                                                            },
                                                            "id": 3274,
                                                            "name": "Identifier",
                                                            "src": "33558:8:2"
                                                          }
                                                        ],
                                                        "id": 3275,
                                                        "name": "MemberAccess",
                                                        "src": "33558:19:2"
                                                      },
                                                      {
                                                        "attributes": {
                                                          "argumentTypes": null,
                                                          "hexvalue": "32",
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": true,
                                                          "lValueRequested": false,
                                                          "subdenomination": null,
                                                          "token": "number",
                                                          "type": "int_const 2",
                                                          "value": "2"
                                                        },
                                                        "id": 3276,
                                                        "name": "Literal",
                                                        "src": "33579:1:2"
                                                      }
                                                    ],
                                                    "id": 3277,
                                                    "name": "BinaryOperation",
                                                    "src": "33558:22:2"
                                                  }
                                                ],
                                                "id": 3278,
                                                "name": "TupleExpression",
                                                "src": "33557:24:2"
                                              }
                                            ],
                                            "id": 3279,
                                            "name": "BinaryOperation",
                                            "src": "33510:71:2"
                                          }
                                        ],
                                        "id": 3280,
                                        "name": "TupleExpression",
                                        "src": "33509:73:2"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "operator": "**",
                                              "type": "uint256"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 3237,
                                                  "type": "uint256",
                                                  "value": "_totalSupply"
                                                },
                                                "id": 3281,
                                                "name": "Identifier",
                                                "src": "33584:12:2"
                                              },
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "hexvalue": "32",
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "subdenomination": null,
                                                  "token": "number",
                                                  "type": "int_const 2",
                                                  "value": "2"
                                                },
                                                "id": 3282,
                                                "name": "Literal",
                                                "src": "33598:1:2"
                                              }
                                            ],
                                            "id": 3283,
                                            "name": "BinaryOperation",
                                            "src": "33584:15:2"
                                          }
                                        ],
                                        "id": 3284,
                                        "name": "TupleExpression",
                                        "src": "33583:17:2"
                                      }
                                    ],
                                    "id": 3285,
                                    "name": "BinaryOperation",
                                    "src": "33509:91:2"
                                  }
                                ],
                                "id": 3286,
                                "name": "FunctionCall",
                                "src": "33505:96:2"
                              }
                            ],
                            "id": 3287,
                            "name": "Return",
                            "src": "33498:103:2"
                          }
                        ],
                        "id": 3288,
                        "name": "Block",
                        "src": "33484:128:2"
                      }
                    ],
                    "id": 3289,
                    "name": "IfStatement",
                    "src": "33366:246:2"
                  }
                ],
                "id": 3290,
                "name": "Block",
                "src": "33296:322:2"
              }
            ],
            "id": 3291,
            "name": "FunctionDefinition",
            "src": "33214:404:2"
          }
        ],
        "id": 3292,
        "name": "ContractDefinition",
        "src": "281:33339:2"
      }
    ],
    "id": 3293,
    "name": "SourceUnit",
    "src": "0:33621:2"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.18+commit.9cf6e910.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "1.0.1",
  "updatedAt": "2018-02-04T21:57:39.045Z"
}