{
  "contractName": "Voting",
  "abi": [
    {
      "constant": true,
      "inputs": [],
      "name": "hasInitialized",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_script",
          "type": "bytes"
        }
      ],
      "name": "getEVMScriptExecutor",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getRecoveryVault",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "MODIFY_QUORUM_ROLE",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "MODIFY_SUPPORT_ROLE",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "token",
          "type": "address"
        }
      ],
      "name": "allowRecoverability",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "appId",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getInitializationBlock",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_token",
          "type": "address"
        }
      ],
      "name": "transferToVault",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_sender",
          "type": "address"
        },
        {
          "name": "_role",
          "type": "bytes32"
        },
        {
          "name": "_params",
          "type": "uint256[]"
        }
      ],
      "name": "canPerform",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getEVMScriptRegistry",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "voteTime",
      "outputs": [
        {
          "name": "",
          "type": "uint64"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "CREATE_VOTES_ROLE",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "kernel",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "minAcceptQuorumPct",
      "outputs": [
        {
          "name": "",
          "type": "uint64"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "isPetrified",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "votesLength",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "supportRequiredPct",
      "outputs": [
        {
          "name": "",
          "type": "uint64"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "token",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "PCT_BASE",
      "outputs": [
        {
          "name": "",
          "type": "uint64"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "voteId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "name": "creator",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "metadata",
          "type": "string"
        }
      ],
      "name": "StartVote",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "voteId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "name": "voter",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "supports",
          "type": "bool"
        },
        {
          "indexed": false,
          "name": "stake",
          "type": "uint256"
        }
      ],
      "name": "CastVote",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "voteId",
          "type": "uint256"
        }
      ],
      "name": "ExecuteVote",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "name": "supportRequiredPct",
          "type": "uint64"
        }
      ],
      "name": "ChangeSupportRequired",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "name": "minAcceptQuorumPct",
          "type": "uint64"
        }
      ],
      "name": "ChangeMinQuorum",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "executor",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "script",
          "type": "bytes"
        },
        {
          "indexed": false,
          "name": "input",
          "type": "bytes"
        },
        {
          "indexed": false,
          "name": "returnData",
          "type": "bytes"
        }
      ],
      "name": "ScriptResult",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "vault",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "token",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "RecoverToVault",
      "type": "event"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_token",
          "type": "address"
        },
        {
          "name": "_supportRequiredPct",
          "type": "uint64"
        },
        {
          "name": "_minAcceptQuorumPct",
          "type": "uint64"
        },
        {
          "name": "_voteTime",
          "type": "uint64"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_supportRequiredPct",
          "type": "uint64"
        }
      ],
      "name": "changeSupportRequiredPct",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_minAcceptQuorumPct",
          "type": "uint64"
        }
      ],
      "name": "changeMinAcceptQuorumPct",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_executionScript",
          "type": "bytes"
        },
        {
          "name": "_metadata",
          "type": "string"
        }
      ],
      "name": "newVote",
      "outputs": [
        {
          "name": "voteId",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_executionScript",
          "type": "bytes"
        },
        {
          "name": "_metadata",
          "type": "string"
        },
        {
          "name": "_castVote",
          "type": "bool"
        },
        {
          "name": "_executesIfDecided",
          "type": "bool"
        }
      ],
      "name": "newVote",
      "outputs": [
        {
          "name": "voteId",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_voteId",
          "type": "uint256"
        },
        {
          "name": "_supports",
          "type": "bool"
        },
        {
          "name": "_executesIfDecided",
          "type": "bool"
        }
      ],
      "name": "vote",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_voteId",
          "type": "uint256"
        }
      ],
      "name": "executeVote",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "isForwarder",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_evmScript",
          "type": "bytes"
        }
      ],
      "name": "forward",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_sender",
          "type": "address"
        },
        {
          "name": "",
          "type": "bytes"
        }
      ],
      "name": "canForward",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_voteId",
          "type": "uint256"
        }
      ],
      "name": "canExecute",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_voteId",
          "type": "uint256"
        },
        {
          "name": "_voter",
          "type": "address"
        }
      ],
      "name": "canVote",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_voteId",
          "type": "uint256"
        }
      ],
      "name": "getVote",
      "outputs": [
        {
          "name": "open",
          "type": "bool"
        },
        {
          "name": "executed",
          "type": "bool"
        },
        {
          "name": "startDate",
          "type": "uint64"
        },
        {
          "name": "snapshotBlock",
          "type": "uint64"
        },
        {
          "name": "supportRequired",
          "type": "uint64"
        },
        {
          "name": "minAcceptQuorum",
          "type": "uint64"
        },
        {
          "name": "yea",
          "type": "uint256"
        },
        {
          "name": "nay",
          "type": "uint256"
        },
        {
          "name": "votingPower",
          "type": "uint256"
        },
        {
          "name": "script",
          "type": "bytes"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_voteId",
          "type": "uint256"
        },
        {
          "name": "_voter",
          "type": "address"
        }
      ],
      "name": "getVoterState",
      "outputs": [
        {
          "name": "",
          "type": "uint8"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[],\"name\":\"hasInitialized\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_script\",\"type\":\"bytes\"}],\"name\":\"getEVMScriptExecutor\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getRecoveryVault\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"MODIFY_QUORUM_ROLE\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_voteId\",\"type\":\"uint256\"},{\"name\":\"_voter\",\"type\":\"address\"}],\"name\":\"getVoterState\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_voteId\",\"type\":\"uint256\"}],\"name\":\"getVote\",\"outputs\":[{\"name\":\"open\",\"type\":\"bool\"},{\"name\":\"executed\",\"type\":\"bool\"},{\"name\":\"startDate\",\"type\":\"uint64\"},{\"name\":\"snapshotBlock\",\"type\":\"uint64\"},{\"name\":\"supportRequired\",\"type\":\"uint64\"},{\"name\":\"minAcceptQuorum\",\"type\":\"uint64\"},{\"name\":\"yea\",\"type\":\"uint256\"},{\"name\":\"nay\",\"type\":\"uint256\"},{\"name\":\"votingPower\",\"type\":\"uint256\"},{\"name\":\"script\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_minAcceptQuorumPct\",\"type\":\"uint64\"}],\"name\":\"changeMinAcceptQuorumPct\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"MODIFY_SUPPORT_ROLE\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_supportRequiredPct\",\"type\":\"uint64\"}],\"name\":\"changeSupportRequiredPct\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"token\",\"type\":\"address\"}],\"name\":\"allowRecoverability\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"appId\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getInitializationBlock\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"transferToVault\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_sender\",\"type\":\"address\"},{\"name\":\"_role\",\"type\":\"bytes32\"},{\"name\":\"_params\",\"type\":\"uint256[]\"}],\"name\":\"canPerform\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getEVMScriptRegistry\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"voteTime\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CREATE_VOTES_ROLE\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_sender\",\"type\":\"address\"},{\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"canForward\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_voteId\",\"type\":\"uint256\"}],\"name\":\"canExecute\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_voteId\",\"type\":\"uint256\"},{\"name\":\"_voter\",\"type\":\"address\"}],\"name\":\"canVote\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"kernel\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_executionScript\",\"type\":\"bytes\"},{\"name\":\"_metadata\",\"type\":\"string\"}],\"name\":\"newVote\",\"outputs\":[{\"name\":\"voteId\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_evmScript\",\"type\":\"bytes\"}],\"name\":\"forward\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"minAcceptQuorumPct\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isPetrified\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"votesLength\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_voteId\",\"type\":\"uint256\"},{\"name\":\"_supports\",\"type\":\"bool\"},{\"name\":\"_executesIfDecided\",\"type\":\"bool\"}],\"name\":\"vote\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"},{\"name\":\"_supportRequiredPct\",\"type\":\"uint64\"},{\"name\":\"_minAcceptQuorumPct\",\"type\":\"uint64\"},{\"name\":\"_voteTime\",\"type\":\"uint64\"}],\"name\":\"initialize\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_executionScript\",\"type\":\"bytes\"},{\"name\":\"_metadata\",\"type\":\"string\"},{\"name\":\"_castVote\",\"type\":\"bool\"},{\"name\":\"_executesIfDecided\",\"type\":\"bool\"}],\"name\":\"newVote\",\"outputs\":[{\"name\":\"voteId\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_voteId\",\"type\":\"uint256\"}],\"name\":\"executeVote\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"supportRequiredPct\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"token\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"PCT_BASE\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isForwarder\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"voteId\",\"type\":\"uint256\"},{\"indexed\":true,\"name\":\"creator\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"metadata\",\"type\":\"string\"}],\"name\":\"StartVote\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"voteId\",\"type\":\"uint256\"},{\"indexed\":true,\"name\":\"voter\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"supports\",\"type\":\"bool\"},{\"indexed\":false,\"name\":\"stake\",\"type\":\"uint256\"}],\"name\":\"CastVote\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"voteId\",\"type\":\"uint256\"}],\"name\":\"ExecuteVote\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"supportRequiredPct\",\"type\":\"uint64\"}],\"name\":\"ChangeSupportRequired\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"minAcceptQuorumPct\",\"type\":\"uint64\"}],\"name\":\"ChangeMinQuorum\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"executor\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"script\",\"type\":\"bytes\"},{\"indexed\":false,\"name\":\"input\",\"type\":\"bytes\"},{\"indexed\":false,\"name\":\"returnData\",\"type\":\"bytes\"}],\"name\":\"ScriptResult\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"vault\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"RecoverToVault\",\"type\":\"event\"}],\"devdoc\":{\"methods\":{\"allowRecoverability(address)\":{\"details\":\"By default deriving from AragonApp makes it recoverable\",\"params\":{\"token\":\"Token address that would be recovered\"},\"return\":\"bool whether the app allows the recovery\"},\"canExecute(uint256)\":{\"details\":\"Initialization check is implicitly provided by `voteExists()` as new votes can only be     created via `newVote(),` which requires initialization\"},\"canPerform(address,bytes32,uint256[])\":{\"details\":\"Check whether an action can be performed by a sender for a particular role on this app\",\"params\":{\"_params\":\"Permission params for the role\",\"_role\":\"Role on this app\",\"_sender\":\"Sender of the call\"},\"return\":\"Boolean indicating whether the sender has the permissions to perform the action.        Always returns false if the app hasn't been initialized yet.\"},\"canVote(uint256,address)\":{\"details\":\"Initialization check is implicitly provided by `voteExists()` as new votes can only be     created via `newVote(),` which requires initialization\"},\"changeMinAcceptQuorumPct(uint64)\":{\"params\":{\"_minAcceptQuorumPct\":\"New acceptance quorum\"}},\"changeSupportRequiredPct(uint64)\":{\"params\":{\"_supportRequiredPct\":\"New required support\"}},\"executeVote(uint256)\":{\"details\":\"Initialization check is implicitly provided by `voteExists()` as new votes can only be     created via `newVote(),` which requires initialization\",\"params\":{\"_voteId\":\"Id for vote\"}},\"forward(bytes)\":{\"details\":\"IForwarder interface conformance\",\"params\":{\"_evmScript\":\"Start vote with script\"}},\"getInitializationBlock()\":{\"return\":\"Block number in which the contract was initialized\"},\"getRecoveryVault()\":{\"details\":\"Get the recovery vault for the app\",\"return\":\"Recovery vault address for the app\"},\"hasInitialized()\":{\"return\":\"Whether the contract has been initialized by the time of the current block\"},\"initialize(address,uint64,uint64,uint64)\":{\"params\":{\"_minAcceptQuorumPct\":\"Percentage of yeas in total possible votes for a vote to succeed (expressed as a percentage of 10^18; eg. 10^16 = 1%, 10^18 = 100%)\",\"_supportRequiredPct\":\"Percentage of yeas in casted votes for a vote to succeed (expressed as a percentage of 10^18; eg. 10^16 = 1%, 10^18 = 100%)\",\"_token\":\"MiniMeToken Address that will be used as governance token\",\"_voteTime\":\"Seconds that a vote will be open for token holders to vote (unless enough yeas or nays have been cast to make an early decision)\"}},\"newVote(bytes,string)\":{\"params\":{\"_executionScript\":\"EVM script to be executed on approval\",\"_metadata\":\"Vote metadata\"},\"return\":\"voteId Id for newly created vote\"},\"newVote(bytes,string,bool,bool)\":{\"params\":{\"_castVote\":\"Whether to also cast newly created vote\",\"_executesIfDecided\":\"Whether to also immediately execute newly created vote if decided\",\"_executionScript\":\"EVM script to be executed on approval\",\"_metadata\":\"Vote metadata\"},\"return\":\"voteId id for newly created vote\"},\"transferToVault(address)\":{\"params\":{\"_token\":\"Token balance to be sent to recovery vault.\"}},\"vote(uint256,bool,bool)\":{\"details\":\"Initialization check is implicitly provided by `voteExists()` as new votes can only be     created via `newVote(),` which requires initialization\",\"params\":{\"_executesIfDecided\":\"Whether the vote should execute its action if it becomes decided\",\"_supports\":\"Whether voter supports the vote\",\"_voteId\":\"Id for vote\"}}}},\"userdoc\":{\"methods\":{\"changeMinAcceptQuorumPct(uint64)\":{\"notice\":\"Change minimum acceptance quorum to `@formatPct(_minAcceptQuorumPct)`%\"},\"changeSupportRequiredPct(uint64)\":{\"notice\":\"Change required support to `@formatPct(_supportRequiredPct)`%\"},\"executeVote(uint256)\":{\"notice\":\"Execute vote #`_voteId`\"},\"forward(bytes)\":{\"notice\":\"Creates a vote to execute the desired action, and casts a support vote if possible\"},\"initialize(address,uint64,uint64,uint64)\":{\"notice\":\"Initialize Voting app with `_token.symbol(): string` for governance, minimum support of `@formatPct(_supportRequiredPct)`%, minimum acceptance quorum of `@formatPct(_minAcceptQuorumPct)`%, and a voting duration of `@transformTime(_voteTime)`\"},\"newVote(bytes,string)\":{\"notice\":\"Create a new vote about \\\"`_metadata`\\\"\"},\"newVote(bytes,string,bool,bool)\":{\"notice\":\"Create a new vote about \\\"`_metadata`\\\"\"},\"transferToVault(address)\":{\"notice\":\"Send funds to recovery Vault. This contract should never receive funds,        but in case it does, this function allows one to recover them.\"},\"vote(uint256,bool,bool)\":{\"notice\":\"Vote `_supports ? 'yes' : 'no'` in vote #`_voteId`\"}}}},\"settings\":{\"compilationTarget\":{\"@aragon/apps-voting/contracts/Voting.sol\":\"Voting\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@aragon/apps-shared-minime/contracts/ITokenController.sol\":{\"keccak256\":\"0x030d1ea5543fd23d3c962cbf34b1c3b6e15d9bbfb711416e1cf4160c3bcdccaa\",\"urls\":[\"bzzr://64ccd0852c1b90d55248f9b56898854c32bd881a9eb61637d6ecb7430a77764c\"]},\"@aragon/apps-shared-minime/contracts/MiniMeToken.sol\":{\"keccak256\":\"0xae8693d9ccee144cfd4949f87d0994d12e7d232b0b39d3f2f72a7b5c1e54800c\",\"urls\":[\"bzzr://077b0f24788509f8aecd01587c0522a3b22c15c6bbdfe8b65a5234f3ae3502cf\"]},\"@aragon/apps-voting/contracts/Voting.sol\":{\"keccak256\":\"0x02d197def022067a0841bed3bbdfdf08403a43ab9ffa8e69cd6bf45318315b5f\",\"urls\":[\"bzzr://7923ff46bfa140c3b7c1ed55e1f8dc9b4a3f77fc620454ad2f246d339b959ce8\"]},\"@aragon/os/contracts/acl/ACLSyntaxSugar.sol\":{\"keccak256\":\"0x519915c14576b679b5ed5767d6b21b44a13aa7ae2fe7b33664ca364fafc33e00\",\"urls\":[\"bzzr://8d899afdbf161eaa5e6ce6a68d9ea420c3f98a00a71d70b293e8de8771e6aa62\"]},\"@aragon/os/contracts/acl/IACL.sol\":{\"keccak256\":\"0xe3492bc29d2482e65d2e39c96487b5388f6181f6bcdc6fe6329b8206b84c0cf1\",\"urls\":[\"bzzr://3af0b7e423c7ff4100a3b5868203ec169c866328f2d93d3b6a2111e916cdc411\"]},\"@aragon/os/contracts/apps/AppStorage.sol\":{\"keccak256\":\"0xb1c8eb71d1bdfe1241cc1714b280b46bbfc5bcb1e8499d42c24d3f5f5e8130f1\",\"urls\":[\"bzzr://503beec9e0e19834cb685a1d037eb9caaa412e3709d90bf6e53f51d143d58029\"]},\"@aragon/os/contracts/apps/AragonApp.sol\":{\"keccak256\":\"0xba456000d65bea8d9d82e9f1789086c3777df68fe364f8f397973b6d579f3a2a\",\"urls\":[\"bzzr://85ae9658277830a9454e34e319f8fbcb27d4e015d3bb1219c4d42ec33b9a184e\"]},\"@aragon/os/contracts/common/Autopetrified.sol\":{\"keccak256\":\"0x216e6ecbdcf45d90e8846ab2773072bd82180558a7dcf0c5425ed13b0188c5f3\",\"urls\":[\"bzzr://95b7ec6b2e8d3d8cd8c02f9be8b17d715c48a35445ba194429cca5264bfd0435\"]},\"@aragon/os/contracts/common/ConversionHelpers.sol\":{\"keccak256\":\"0x9872383d458352f5c68fa5afd1fc84ab6b172cbee33359cfa57655b8eda92416\",\"urls\":[\"bzzr://4636d13fecb497561ff5a2c54bb936a0339308bffa4e71a988b8ce00dcc249f3\"]},\"@aragon/os/contracts/common/EtherTokenConstant.sol\":{\"keccak256\":\"0xb18d16ad5127519251d9759349bf0ce1e5cfc861a776c5297b91a625c84d0363\",\"urls\":[\"bzzr://42b57d455cdbf7a8ab1383eb977c55d1826870a488cfc0cbc906a3d0f9ad2328\"]},\"@aragon/os/contracts/common/IForwarder.sol\":{\"keccak256\":\"0xd862ca160ed12725de3044b1f1c90248e8c26ec764f64f2c06ac57279a7a712b\",\"urls\":[\"bzzr://9385ac177e250e9e05e34772a7f6c1cd05fb8ecf4220c1a2c028b03da4fdeabf\"]},\"@aragon/os/contracts/common/IVaultRecoverable.sol\":{\"keccak256\":\"0xd7cb66ee5d01be69a6abab04583cc86755bf63c2f1fd03b519a876162f52b323\",\"urls\":[\"bzzr://acb75e2637639bbc83b95032a822a54a588889f203b188e97cd78292cc0ee7f5\"]},\"@aragon/os/contracts/common/Initializable.sol\":{\"keccak256\":\"0xc559fdbee1c0ee18b6f2f866c28ed6eb96859b2c88f75867ca11f25ebd00b090\",\"urls\":[\"bzzr://3d3bca8b35030fc12f94bb52a162be9520868b27ff2cb32f09179d67b6ffdf93\"]},\"@aragon/os/contracts/common/IsContract.sol\":{\"keccak256\":\"0xb76e263e3532883fe32dfe4b1447eb487a570e121c5cce01cee604dd9e44a075\",\"urls\":[\"bzzr://4a7dd7aafff496a2c6403a7e9f4e74562088b5a38e2f6e2670e38dab11b9cd8f\"]},\"@aragon/os/contracts/common/Petrifiable.sol\":{\"keccak256\":\"0xb69f9d6de8ff6f2a084aca2e0228c9008a8776482a70bcab16f46a693ec77be6\",\"urls\":[\"bzzr://ca1d7bb504b8d9d75c162f5edc8588ac86934b69f765f2010d603027dc534375\"]},\"@aragon/os/contracts/common/ReentrancyGuard.sol\":{\"keccak256\":\"0x2b2014de57620aedded6365e742e17b9a23492d754e48dfeefa56f7e5bcf5645\",\"urls\":[\"bzzr://1aa2b79808ccb14b6c2d68f9283bd40300877c749b44edf0f66d78f0c1d17708\"]},\"@aragon/os/contracts/common/SafeERC20.sol\":{\"keccak256\":\"0xd251a1207e1faa4c41500bf927310bb739b1fbc0bf880f236f8e0a9236d6a03a\",\"urls\":[\"bzzr://b2d0f5981950b4e90eaee65c85050ac4f86a79f579f4ef38e6b281c0de980b2b\"]},\"@aragon/os/contracts/common/TimeHelpers.sol\":{\"keccak256\":\"0x95b785dc4319f6ce5255c9adf5e68a469a0f837f7b02e01b6bc974b4921d4024\",\"urls\":[\"bzzr://53f41920d95ed5cb7326de3062063c9296076809377fbadf2cbd26ab0c84ffd1\"]},\"@aragon/os/contracts/common/Uint256Helpers.sol\":{\"keccak256\":\"0x83033025a3f4402be3b7bcc9a23ce96ae4fadc7f251da8f139d73a13a3400b0c\",\"urls\":[\"bzzr://bd0e059eff36a66c3a28298ed5a2e1b058ce93057866ab36063e9f3095cef36f\"]},\"@aragon/os/contracts/common/UnstructuredStorage.sol\":{\"keccak256\":\"0xe0d627fc7a7716409389f34cfe49366ba7871309d3a73262ec9608ef73e47591\",\"urls\":[\"bzzr://9742204494402cdecc66b266f0e420fcfe2677ba710db7651c40f96a63940bef\"]},\"@aragon/os/contracts/common/VaultRecoverable.sol\":{\"keccak256\":\"0x4f4de2c27ea7df731ad7d9babc37965a805282fed16b422f46a35d9d2ef931a1\",\"urls\":[\"bzzr://02d492884e6b1cf7c0869974219c40453d23cf2021cc1deaa6895e0f1b4404b9\"]},\"@aragon/os/contracts/evmscript/EVMScriptRunner.sol\":{\"keccak256\":\"0xcb6b5f7d2610321882cdc86819f1a51341c33b510fff7c60936ac7d7a015d7be\",\"urls\":[\"bzzr://bc430c1487d75909dc059de848123822c257ea9e7c812a7252c10986be253e21\"]},\"@aragon/os/contracts/evmscript/IEVMScriptExecutor.sol\":{\"keccak256\":\"0x9cab64cd2f10148d4e20433ecd11679e69be1fbde112892c48db94f92e48c571\",\"urls\":[\"bzzr://b4bf9f4fc41e6e7791a84d0847410677fc0066ed393872186d90f819f5f22cc0\"]},\"@aragon/os/contracts/evmscript/IEVMScriptRegistry.sol\":{\"keccak256\":\"0x00d98507ec160cb7cc814cc9bdebd01a414353636d6045720fe6d1592277694b\",\"urls\":[\"bzzr://170505211d1846fe24b89cfceea7f5b59a587527f68f89e8f36fed8e08b02db4\"]},\"@aragon/os/contracts/kernel/IKernel.sol\":{\"keccak256\":\"0xd02b98282ccd271b0caa86f2c249986f1619dcf41811f5dadce520b32610b68e\",\"urls\":[\"bzzr://e77000fc50cf4cfb160518af1cfb612e6cbbc06cb4357b1e03ff492fd17d8d2e\"]},\"@aragon/os/contracts/kernel/KernelConstants.sol\":{\"keccak256\":\"0x95e46be2becfb4c8952880909cd32adf5dcfa8c2e0fdf4ae054bbf83ef7f53cd\",\"urls\":[\"bzzr://68d3ce6cda841600d1e5724c0752314a084e4eeebc1fdcb6bc22c92d77c9a3db\"]},\"@aragon/os/contracts/lib/math/SafeMath.sol\":{\"keccak256\":\"0x2e11c8dcead82c452ef452f4dbced40e20ae105fa4145d920dac6e077b31d846\",\"urls\":[\"bzzr://91dbd0e3335720d4a3d12a90682b8d9834f76e75918c1f646a84debb38089ece\"]},\"@aragon/os/contracts/lib/math/SafeMath64.sol\":{\"keccak256\":\"0x34f18573e7b2180645c67faaff60ebc713ab22c697606d3b3ce4fe0e745955f4\",\"urls\":[\"bzzr://192cb9d1b7a1fbf7e3709b1a18bccd3ee023f5b98e117246dc7ddc701e2fd9c0\"]},\"@aragon/os/contracts/lib/token/ERC20.sol\":{\"keccak256\":\"0xa2e319fde92f9e70912f09bf6e99bbf8b9b798961d54ffcba59d347d37bde1b7\",\"urls\":[\"bzzr://8c9a4aec8e185884f26ffb125975bd52c2363359b9adff481649c59cfe15660f\"]}},\"version\":1}",
  "bytecode": "0x6080604052620000176401000000006200001d810204565b6200023b565b6200003064010000000062000125810204565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a45440000000000000000602082015290156200010c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015620000d0578181015183820152602001620000b6565b50505050905090810190601f168015620000fe5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506200012360001964010000000062000154810204565b565b60006200014f60008051602062004030833981519152640100000000620025006200023382021704565b905090565b6200016764010000000062000125810204565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a454400000000000000006020820152901562000206576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015620000d0578181015183820152602001620000b6565b50620002306000805160206200403083398151915282640100000000620034db6200023782021704565b50565b5490565b9055565b613de5806200024b6000396000f3006080604052600436106101ab5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630803fac081146101b05780632914b9bd146101d957806332f0a3b51461025b5780633c624c75146102705780634b12311c146102975780635a55c1f0146102ec5780635eb243321461041357806362de7e5a146104375780637c1d0b871461044c5780637e7db6e11461046e57806380afdea81461049c5780638b3dd749146104b15780639d4941d8146104c6578063a1658fad146104f4578063a479e50814610568578063bcf93dd61461057d578063be2c64d4146105af578063c0774df3146105c4578063cc63604a14610638578063cdb2867b14610650578063d4aae0c414610681578063d5db2c8014610696578063d948d468146106c2578063dc474b1a1461071b578063de4796ed14610730578063de4f634714610745578063df133bca1461075a578063df3d33051461077c578063f4b00513146107c3578063f98a4eca146107f9578063fad167ab14610811578063fc0c546a14610826578063fc157cb41461083b578063fd64eccb14610850575b600080fd5b3480156101bc57600080fd5b506101c5610865565b604080519115158252519081900360200190f35b3480156101e557600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261023294369492936024939284019190819084018382808284375094975061088f9650505050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561026757600080fd5b5061023261099b565b34801561027c57600080fd5b50610285610a3a565b60408051918252519081900360200190f35b3480156102a357600080fd5b506102c860043573ffffffffffffffffffffffffffffffffffffffff60243516610a6f565b604051808260028111156102d857fe5b60ff16815260200191505060405180910390f35b3480156102f857600080fd5b50610304600435610b91565b604051808b1515151581526020018a1515151581526020018967ffffffffffffffff1667ffffffffffffffff1681526020018867ffffffffffffffff1667ffffffffffffffff1681526020018767ffffffffffffffff1667ffffffffffffffff1681526020018667ffffffffffffffff1667ffffffffffffffff16815260200185815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156103cf5781810151838201526020016103b7565b50505050905090810190601f1680156103fc5780820380516001836020036101000a031916815260200191505b509b50505050505050505050505060405180910390f35b34801561041f57600080fd5b5061043567ffffffffffffffff60043516610da7565b005b34801561044357600080fd5b50610285610fd3565b34801561045857600080fd5b5061043567ffffffffffffffff60043516611008565b34801561047a57600080fd5b506101c573ffffffffffffffffffffffffffffffffffffffff600435166112fd565b3480156104a857600080fd5b50610285611303565b3480156104bd57600080fd5b50610285611333565b3480156104d257600080fd5b5061043573ffffffffffffffffffffffffffffffffffffffff6004351661135e565b34801561050057600080fd5b5060408051602060046044358181013583810280860185019096528085526101c595833573ffffffffffffffffffffffffffffffffffffffff169560248035963696956064959394920192918291850190849080828437509497506116809650505050505050565b34801561057457600080fd5b50610232611810565b34801561058957600080fd5b506105926118d2565b6040805167ffffffffffffffff9092168252519081900360200190f35b3480156105bb57600080fd5b506102856118ee565b3480156105d057600080fd5b5060408051602060046024803582810135601f81018590048502860185019096528585526101c595833573ffffffffffffffffffffffffffffffffffffffff169536956044949193909101919081908401838280828437509497506119239650505050505050565b34801561064457600080fd5b506101c5600435611973565b34801561065c57600080fd5b506101c560043573ffffffffffffffffffffffffffffffffffffffff60243516611a2b565b34801561068d57600080fd5b50610232611ae3565b3480156106a257600080fd5b506102856024600480358281019290820135918135918201910135611b0e565b3480156106ce57600080fd5b506040805160206004803580820135601f8101849004840285018401909552848452610435943694929360249392840191908190840183828082843750949750611c719650505050505050565b34801561072757600080fd5b50610592611d3a565b34801561073c57600080fd5b506101c5611d4a565b34801561075157600080fd5b50610285611d7b565b34801561076657600080fd5b5061043560043560243515156044351515611d81565b34801561078857600080fd5b5061043573ffffffffffffffffffffffffffffffffffffffff6004351667ffffffffffffffff60243581169060443581169060643516611edd565b3480156107cf57600080fd5b506102856024600480358281019290820135918135918201910135604435151560643515156121d8565b34801561080557600080fd5b5061043560043561233a565b34801561081d57600080fd5b506105926123e5565b34801561083257600080fd5b5061023261240d565b34801561084757600080fd5b50610592612429565b34801561085c57600080fd5b506101c5612435565b600080610870611333565b9050801580159061088857508061088561243a565b10155b91505b5090565b6000610899611810565b73ffffffffffffffffffffffffffffffffffffffff166304bf2a7f836040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561091d578181015183820152602001610905565b50505050905090810190601f16801561094a5780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b15801561096957600080fd5b505af115801561097d573d6000803e3d6000fd5b505050506040513d602081101561099357600080fd5b505192915050565b60006109a5611ae3565b73ffffffffffffffffffffffffffffffffffffffff166332f0a3b56040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015610a0857600080fd5b505af1158015610a1c573d6000803e3d6000fd5b505050506040513d6020811015610a3257600080fd5b505190505b90565b604080517f4d4f444946595f51554f52554d5f524f4c4500000000000000000000000000008152905190819003601201902081565b60035460408051808201909152600e81527f564f54494e475f4e4f5f564f544500000000000000000000000000000000000060208201526000918491908210610b50576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610b15578181015183820152602001610afd565b50505050905090810190601f168015610b425780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600084815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845260060190915290205460ff1691505b5092915050565b6000806000806000806000806000606060008b60035481106040805190810160405280600e81526020017f564f54494e475f4e4f5f564f5445000000000000000000000000000000000000815250901515610c48576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610b15578181015183820152602001610afd565b5060008d81526002602052604090209150610c628261243e565b9b508160000160009054906101000a900460ff169a508160000160019054906101000a900467ffffffffffffffff1699508160000160099054906101000a900467ffffffffffffffff1698508160000160119054906101000a900467ffffffffffffffff1697508160010160009054906101000a900467ffffffffffffffff169650816002015495508160030154945081600401549350816005018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610d915780601f10610d6657610100808354040283529160200191610d91565b820191906000526020600020905b815481529060010190602001808311610d7457829003601f168201915b5050505050925050509193959799509193959799565b604080517f4d4f444946595f51554f52554d5f524f4c45000000000000000000000000000081529051908190036012019020600154610df39067ffffffffffffffff80851691166124a5565b610dfe338383611680565b60408051808201909152600f81527f4150505f415554485f4641494c454400000000000000000000000000000000006020820152901515610e9b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610b15578181015183820152602001610afd565b5060005460408051808201909152601981527f564f54494e475f4348414e47455f51554f52554d5f504354530000000000000060208201529067ffffffffffffffff7401000000000000000000000000000000000000000090910481169085161115610f63576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610b15578181015183820152602001610afd565b506001805467ffffffffffffffff85167fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000909116811790915560408051918252517f3172f2e9273c729c2a47cc8bf7e7f18506e3e3035126d562602bd2155bc78a509181900360200190a1505050565b604080517f4d4f444946595f535550504f52545f524f4c45000000000000000000000000008152905190819003601301902081565b604080517f4d4f444946595f535550504f52545f524f4c45000000000000000000000000008152905190819003601301902060005461106c9067ffffffffffffffff80851691740100000000000000000000000000000000000000009004166124a5565b611077338383611680565b60408051808201909152600f81527f4150505f415554485f4641494c454400000000000000000000000000000000006020820152901515611114576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610b15578181015183820152602001610afd565b5060015460408051808201909152601a81527f564f54494e475f4348414e47455f535550504f52545f5043545300000000000060208201529067ffffffffffffffff808616911611156111c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610b15578181015183820152602001610afd565b5060408051808201909152601a81527f564f54494e475f4348414e47455f535550505f544f4f5f4249470000000000006020820152670de0b6b3a764000067ffffffffffffffff851610611273576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610b15578181015183820152602001610afd565b506000805467ffffffffffffffff85167401000000000000000000000000000000000000000081027fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff9092169190911790915560408051918252517f903b617f7f36eb047a29b89d1bf7885fdae31d250c3320fccf11d045c11b396e9181900360200190a1505050565b50600190565b600061132e7fd625496217aa6a3453eecb9c3489dc5a53e6c67b444329ea2b2cbc9ff547639b612500565b905090565b600061132e7febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e612500565b600080600061136c846112fd565b60408051808201909152601281527f5245434f5645525f444953414c4c4f57454400000000000000000000000000006020820152901515611409576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610b15578181015183820152602001610afd565b5061141261099b565b925061141d83612508565b60408051808201909152601a81527f5245434f5645525f5641554c545f4e4f545f434f4e545241435400000000000060208201529015156114ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610b15578181015183820152602001610afd565b5073ffffffffffffffffffffffffffffffffffffffff84161515611525576040513031925073ffffffffffffffffffffffffffffffffffffffff84169083156108fc029084906000818181858888f1935050505015801561151f573d6000803e3d6000fd5b50611615565b508261154d73ffffffffffffffffffffffffffffffffffffffff82163063ffffffff61253b16565b915061157673ffffffffffffffffffffffffffffffffffffffff8216848463ffffffff61267416565b60408051808201909152601d81527f5245434f5645525f544f4b454e5f5452414e534645525f4641494c45440000006020820152901515611613576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610b15578181015183820152602001610afd565b505b8373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f596caf56044b55fb8c4ca640089bbc2b63cae3e978b851f5745cbb7c5b288e02846040518082815260200191505060405180910390a350505050565b60008061168b610865565b151561169a5760009150611808565b6116a2611ae3565b905073ffffffffffffffffffffffffffffffffffffffff811615156116ca5760009150611808565b8073ffffffffffffffffffffffffffffffffffffffff1663fdef91068630876116f28861270c565b6040517c010000000000000000000000000000000000000000000000000000000063ffffffff871602815273ffffffffffffffffffffffffffffffffffffffff808616600483019081529085166024830152604482018490526080606483019081528351608484015283519192909160a490910190602085019080838360005b8381101561178a578181015183820152602001611772565b50505050905090810190601f1680156117b75780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1580156117d957600080fd5b505af11580156117ed573d6000803e3d6000fd5b505050506040513d602081101561180357600080fd5b505191505b509392505050565b60008061181b611ae3565b604080517fbe00bbd80000000000000000000000000000000000000000000000000000000081527fd6f028ca0e8edb4a8c9757ca4fdccab25fa1e0317da1188108f7d2dee14902fb60048201527fddbcfd564f642ab5627cf68b9b7d374fb4f8a36e941a75d89c87998cef03bd616024820152905173ffffffffffffffffffffffffffffffffffffffff929092169163be00bbd8916044808201926020929091908290030181600087803b15801561096957600080fd5b60015468010000000000000000900467ffffffffffffffff1681565b604080517f4352454154455f564f5445535f524f4c450000000000000000000000000000008152905190819003601101902081565b600061196c8360405180807f4352454154455f564f5445535f524f4c4500000000000000000000000000000081525060110190506040518091039020611967612716565b611680565b9392505050565b60035460408051808201909152600e81527f564f54494e475f4e4f5f564f544500000000000000000000000000000000000060208201526000918391908210611a18576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610b15578181015183820152602001610afd565b50611a2283612728565b91505b50919050565b60035460408051808201909152600e81527f564f54494e475f4e4f5f564f544500000000000000000000000000000000000060208201526000918491908210611ad0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610b15578181015183820152602001610afd565b50611adb8484612841565b949350505050565b600061132e7f4172f0f7d2289153072b0a6ca36959e0cbe2efc3afe50fc81636caa96338137b612500565b604080517f4352454154455f564f5445535f524f4c450000000000000000000000000000008152815190819003601101812060008083526020830190935290611b5d9033908390855b50611680565b60408051808201909152600f81527f4150505f415554485f4641494c454400000000000000000000000000000000006020820152901515611bfa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610b15578181015183820152602001610afd565b50611c6786868080601f0160208091040260200160405190810160405280939291908181526020018383808284375050604080516020601f8c018190048102820181019092528a815294508a93508992508291508401838280828437820191505050505050600180612928565b9695505050505050565b611c7b3382611923565b60408051808201909152601681527f564f54494e475f43414e5f4e4f545f464f5257415244000000000000000000006020820152901515611d18576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610b15578181015183820152602001610afd565b50611d36816020604051908101604052806000815250600180612928565b5050565b60015467ffffffffffffffff1681565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611d75611333565b14905090565b60035481565b60035460408051808201909152600e81527f564f54494e475f4e4f5f564f5445000000000000000000000000000000000000602082015284918210611e22576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610b15578181015183820152602001610afd565b50611e2d8433612841565b60408051808201909152601381527f564f54494e475f43414e5f4e4f545f564f5445000000000000000000000000006020820152901515611eca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610b15578181015183820152602001610afd565b50611ed784843385612ca1565b50505050565b611ee5611333565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a4544000000000000000060208201529015611f81576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610b15578181015183820152602001610afd565b50611f8a612f2f565b60408051808201909152601081527f564f54494e475f494e49545f5043545300000000000000000000000000000000602082015267ffffffffffffffff8085169084161115612035576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610b15578181015183820152602001610afd565b5060408051808201909152601b81527f564f54494e475f494e49545f535550504f52545f544f4f5f42494700000000006020820152670de0b6b3a764000067ffffffffffffffff8516106120e5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610b15578181015183820152602001610afd565b50600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff95909516949094177fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000067ffffffffffffffff9485160217909355600180547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016918316919091177fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff16680100000000000000009390921692909202179055565b604080517f4352454154455f564f5445535f524f4c450000000000000000000000000000008152815190819003601101812060008083526020830190935290612225903390839085611b57565b60408051808201909152600f81527f4150505f415554485f4641494c4544000000000000000000000000000000000060208201529015156122c2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610b15578181015183820152602001610afd565b5061232e88888080601f0160208091040260200160405190810160405280939291908181526020018383808284375050604080516020601f8e018190048102820181019092528c815294508c93508b925082915084018382808284378201915050505050508686612928565b98975050505050505050565b60035460408051808201909152600e81527f564f54494e475f4e4f5f564f54450000000000000000000000000000000000006020820152829182106123db576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610b15578181015183820152602001610afd565b50611d368261300e565b60005474010000000000000000000000000000000000000000900467ffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b670de0b6b3a764000081565b600190565b4390565b600154815460009161247491610100900467ffffffffffffffff908116916801000000000000000090041663ffffffff6130c116565b67ffffffffffffffff16612486613173565b67ffffffffffffffff1610801561249f5750815460ff16155b92915050565b6040805160028082526060808301845292602083019080388339019050509050828160008151811015156124d557fe5b6020908102909101015280518290829060019081106124f057fe5b6020908102909101015292915050565b5490565b5490565b60008073ffffffffffffffffffffffffffffffffffffffff831615156125315760009150611a25565b50506000903b1190565b6040805173ffffffffffffffffffffffffffffffffffffffff83166024808301919091528251808303909101815260449091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f70a082310000000000000000000000000000000000000000000000000000000017905260009081806125c88684613185565b60408051808201909152601c81527f534146455f4552435f32305f42414c414e43455f5245564552544544000000006020820152919350915082151561266a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610b15578181015183820152602001610afd565b5095945050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260009061270385826131b6565b95945050505050565b8051602002815290565b60408051600081526020810190915290565b60008181526002602052604081208054829060ff161561274b576000925061283a565b60028201546004830154835461278192919071010000000000000000000000000000000000900467ffffffffffffffff16613204565b1561278f576001925061283a565b6127988261243e565b156127a6576000925061283a565b600382015460028301546127bf9163ffffffff61324616565b600283015483549192506127f391839071010000000000000000000000000000000000900467ffffffffffffffff16613204565b1515612802576000925061283a565b60028201546004830154600184015461282692919067ffffffffffffffff16613204565b1515612835576000925061283a565b600192505b5050919050565b60008281526002602052604081206128588161243e565b8015611adb5750600080548254604080517f4ee2cd7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8881166004830152690100000000000000000090930467ffffffffffffffff16602482015290519190921691634ee2cd7e91604480830192602092919082900301818787803b1580156128f357600080fd5b505af1158015612907573d6000803e3d6000fd5b505050506040513d602081101561291d57600080fd5b505111949350505050565b60008060008060016129386132eb565b60008054604080517f981b24d00000000000000000000000000000000000000000000000000000000081529490930367ffffffffffffffff81166004860152925192965073ffffffffffffffffffffffffffffffffffffffff169263981b24d09260248083019360209383900390910190829087803b1580156129ba57600080fd5b505af11580156129ce573d6000803e3d6000fd5b505050506040513d60208110156129e457600080fd5b505160408051808201909152601681527f564f54494e475f4e4f5f564f54494e475f504f57455200000000000000000000602082015290925060008311612a87576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610b15578181015183820152602001610afd565b505060038054600181019091556000818152600260205260409020909350612aad613173565b81547fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000ff1661010067ffffffffffffffff92831602177fffffffffffffffffffffffffffffff0000000000000000ffffffffffffffffff16690100000000000000000085831602178083556000547fffffffffffffff0000000000000000ffffffffffffffffffffffffffffffffff9091167401000000000000000000000000000000000000000090910482167101000000000000000000000000000000000002178255600180549083018054919092167fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000909116179055600481018290558751612bc090600583019060208b0190613d2b565b503373ffffffffffffffffffffffffffffffffffffffff16847f4d72fe0577a3a3f7da968d7b892779dde102519c25527b29cf7054f245c791b9896040518080602001828103825283818151815260200191508051906020019080838360005b83811015612c38578181015183820152602001612c20565b50505050905090810190601f168015612c655780820380516001836020036101000a031916815260200191505b509250505060405180910390a3858015612c845750612c848433612841565b15612c9657612c968460013388612ca1565b505050949350505050565b60008481526002602090815260408083208354815483517f4ee2cd7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8981166004830152690100000000000000000090920467ffffffffffffffff166024820152935192959485949190921692634ee2cd7e9260448084019391929182900301818787803b158015612d4557600080fd5b505af1158015612d59573d6000803e3d6000fd5b505050506040513d6020811015612d6f57600080fd5b505173ffffffffffffffffffffffffffffffffffffffff8616600090815260068501602052604090205490925060ff1690506001816002811115612daf57fe5b1415612dd4576002830154612dca908363ffffffff6132f816565b6002840155612e03565b6002816002811115612de257fe5b1415612e03576003830154612dfd908363ffffffff6132f816565b60038401555b8515612e28576002830154612e1e908363ffffffff61324616565b6002840155612e43565b6003830154612e3d908363ffffffff61324616565b60038401555b85612e4f576002612e52565b60015b73ffffffffffffffffffffffffffffffffffffffff86166000908152600685016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001836002811115612eab57fe5b021790555060408051871515815260208101849052815173ffffffffffffffffffffffffffffffffffffffff8816928a927fb34ee265e3d4f5ec4e8b52d59b2a9be8fceca2f274ebc080d8fba797fea9391f929081900390910190a3838015612f185750612f1887612728565b15612f2657612f26876133a3565b50505050505050565b612f37611333565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a4544000000000000000060208201529015612fd3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610b15578181015183820152602001610afd565b5061300c612fdf61243a565b7febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e9063ffffffff6134db16565b565b61301781612728565b60408051808201909152601681527f564f54494e475f43414e5f4e4f545f455845435554450000000000000000000060208201529015156130b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610b15578181015183820152602001610afd565b506130be816133a3565b50565b60408051808201909152601381527f4d41544836345f4144445f4f564552464c4f570000000000000000000000000060208201526000908383019067ffffffffffffffff8086169083161015611808576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610b15578181015183820152602001610afd565b600061132e6131806134df565b6134e3565b6000806000806040516020818751602089018a5afa925060008311156131aa57805191505b50909590945092505050565b6000806040516020818551602087016000895af160008111156131fa573d80156131e757602081146131f0576131f8565b600193506131f8565b600183511493505b505b5090949350505050565b6000808315156132175760009150611808565b8361323086670de0b6b3a764000063ffffffff61359316565b81151561323957fe5b0492909211949350505050565b60408051808201909152601181527f4d4154485f4144445f4f564552464c4f5700000000000000000000000000000060208201526000908383019084821015611808576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610b15578181015183820152602001610afd565b600061132e61318061243a565b60408051808201909152601281527f4d4154485f5355425f554e444552464c4f570000000000000000000000000000602082015260009081908484111561339b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610b15578181015183820152602001610afd565b505050900390565b600081815260026020818152604080842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660019081178255825195865260058201805491821615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190911694909404601f810184900484028601830183529285018381529094936134aa93919290919085018282801561348d5780601f106134625761010080835404028352916020019161348d565b820191906000526020600020905b81548152906001019060200180831161347057829003601f168201915b505060408051600081526020810190915286935091506136559050565b5060405183907fbf8e2b108bb7c980e08903a8a46527699d5e84905a082d56dacb4150725c8cab90600090a2505050565b9055565b4290565b60408051808201909152601581527f55494e5436345f4e554d4245525f544f4f5f4249470000000000000000000000602082015260009067ffffffffffffffff83111561358c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610b15578181015183820152602001610afd565b5090919050565b6000808315156135a65760009150610b8a565b508282028284828115156135b657fe5b60408051808201909152601181527f4d4154485f4d554c5f4f564552464c4f5700000000000000000000000000000060208201529291900414611808576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610b15578181015183820152602001610afd565b6060600080606080613665610865565b60408051808201909152601481527f494e49545f4e4f545f494e495449414c495a45440000000000000000000000006020820152901515613702576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610b15578181015183820152602001610afd565b5060008061370e611ae3565b9150613718611303565b90506137238a61088f565b60408051808201909152601b81527f45564d52554e5f4558454355544f525f554e415641494c41424c450000000000602082015290965073ffffffffffffffffffffffffffffffffffffffff871615156137d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610b15578181015183820152602001610afd565b506040516060602482019081528b5160848301528b517f279cea3500000000000000000000000000000000000000000000000000000000975087928d928d928d9282916044820191606481019160a490910190602089019080838360005b8381101561384f578181015183820152602001613837565b50505050905090810190601f16801561387c5780820380516001836020036101000a031916815260200191505b50848103835286518152865160209182019188019080838360005b838110156138af578181015183820152602001613897565b50505050905090810190601f1680156138dc5780820380516001836020036101000a031916815260200191505b508481038252855181528551602091820191808801910280838360005b838110156139115781810151838201526020016138f9565b505050509050019650505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509350600080855160208701895af46040519350808015613a1657603f3d1180156139b45760203d03806020883e8601604052613a10565b7f08c379a000000000000000000000000000000000000000000000000000000000865260206004870152601e60248701527f45564d52554e5f4558454355544f525f494e56414c49445f52455455524e00006044870152606486fd5b50613a1f565b3d6000863e3d85fd5b50508573ffffffffffffffffffffffffffffffffffffffff167f5229a5dba83a54ae8cb5b51bdd6de9474cacbe9dd332f5185f3a4f4f2e3f4ad98b8b8660405180806020018060200180602001848103845287818151815260200191508051906020019080838360005b83811015613aa1578181015183820152602001613a89565b50505050905090810190601f168015613ace5780820380516001836020036101000a031916815260200191505b50848103835286518152865160209182019188019080838360005b83811015613b01578181015183820152602001613ae9565b50505050905090810190601f168015613b2e5780820380516001836020036101000a031916815260200191505b50848103825285518152855160209182019187019080838360005b83811015613b61578181015183820152602001613b49565b50505050905090810190601f168015613b8e5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a28296508173ffffffffffffffffffffffffffffffffffffffff16613bc1611ae3565b73ffffffffffffffffffffffffffffffffffffffff16146040805190810160405280601f81526020017f45564d52554e5f50524f5445435445445f53544154455f4d4f44494649454400815250901515613c77576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610b15578181015183820152602001610afd565b5080613c81611303565b60408051808201909152601f81527f45564d52554e5f50524f5445435445445f53544154455f4d4f4449464945440060208201529114613d1d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610b15578181015183820152602001610afd565b505050505050509392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10613d6c57805160ff1916838001178555613d99565b82800160010185558215613d99579182015b82811115613d99578251825591602001919060010190613d7e565b5061088b92610a379250905b8082111561088b5760008155600101613da55600a165627a7a72305820c48eb7047765cae16d42397057a74c211ec0b6f6ca8899698ba8ecb9dcb13a0e0029ebb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e",
  "deployedBytecode": "0x6080604052600436106101ab5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630803fac081146101b05780632914b9bd146101d957806332f0a3b51461025b5780633c624c75146102705780634b12311c146102975780635a55c1f0146102ec5780635eb243321461041357806362de7e5a146104375780637c1d0b871461044c5780637e7db6e11461046e57806380afdea81461049c5780638b3dd749146104b15780639d4941d8146104c6578063a1658fad146104f4578063a479e50814610568578063bcf93dd61461057d578063be2c64d4146105af578063c0774df3146105c4578063cc63604a14610638578063cdb2867b14610650578063d4aae0c414610681578063d5db2c8014610696578063d948d468146106c2578063dc474b1a1461071b578063de4796ed14610730578063de4f634714610745578063df133bca1461075a578063df3d33051461077c578063f4b00513146107c3578063f98a4eca146107f9578063fad167ab14610811578063fc0c546a14610826578063fc157cb41461083b578063fd64eccb14610850575b600080fd5b3480156101bc57600080fd5b506101c5610865565b604080519115158252519081900360200190f35b3480156101e557600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261023294369492936024939284019190819084018382808284375094975061088f9650505050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561026757600080fd5b5061023261099b565b34801561027c57600080fd5b50610285610a3a565b60408051918252519081900360200190f35b3480156102a357600080fd5b506102c860043573ffffffffffffffffffffffffffffffffffffffff60243516610a6f565b604051808260028111156102d857fe5b60ff16815260200191505060405180910390f35b3480156102f857600080fd5b50610304600435610b91565b604051808b1515151581526020018a1515151581526020018967ffffffffffffffff1667ffffffffffffffff1681526020018867ffffffffffffffff1667ffffffffffffffff1681526020018767ffffffffffffffff1667ffffffffffffffff1681526020018667ffffffffffffffff1667ffffffffffffffff16815260200185815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156103cf5781810151838201526020016103b7565b50505050905090810190601f1680156103fc5780820380516001836020036101000a031916815260200191505b509b50505050505050505050505060405180910390f35b34801561041f57600080fd5b5061043567ffffffffffffffff60043516610da7565b005b34801561044357600080fd5b50610285610fd3565b34801561045857600080fd5b5061043567ffffffffffffffff60043516611008565b34801561047a57600080fd5b506101c573ffffffffffffffffffffffffffffffffffffffff600435166112fd565b3480156104a857600080fd5b50610285611303565b3480156104bd57600080fd5b50610285611333565b3480156104d257600080fd5b5061043573ffffffffffffffffffffffffffffffffffffffff6004351661135e565b34801561050057600080fd5b5060408051602060046044358181013583810280860185019096528085526101c595833573ffffffffffffffffffffffffffffffffffffffff169560248035963696956064959394920192918291850190849080828437509497506116809650505050505050565b34801561057457600080fd5b50610232611810565b34801561058957600080fd5b506105926118d2565b6040805167ffffffffffffffff9092168252519081900360200190f35b3480156105bb57600080fd5b506102856118ee565b3480156105d057600080fd5b5060408051602060046024803582810135601f81018590048502860185019096528585526101c595833573ffffffffffffffffffffffffffffffffffffffff169536956044949193909101919081908401838280828437509497506119239650505050505050565b34801561064457600080fd5b506101c5600435611973565b34801561065c57600080fd5b506101c560043573ffffffffffffffffffffffffffffffffffffffff60243516611a2b565b34801561068d57600080fd5b50610232611ae3565b3480156106a257600080fd5b506102856024600480358281019290820135918135918201910135611b0e565b3480156106ce57600080fd5b506040805160206004803580820135601f8101849004840285018401909552848452610435943694929360249392840191908190840183828082843750949750611c719650505050505050565b34801561072757600080fd5b50610592611d3a565b34801561073c57600080fd5b506101c5611d4a565b34801561075157600080fd5b50610285611d7b565b34801561076657600080fd5b5061043560043560243515156044351515611d81565b34801561078857600080fd5b5061043573ffffffffffffffffffffffffffffffffffffffff6004351667ffffffffffffffff60243581169060443581169060643516611edd565b3480156107cf57600080fd5b506102856024600480358281019290820135918135918201910135604435151560643515156121d8565b34801561080557600080fd5b5061043560043561233a565b34801561081d57600080fd5b506105926123e5565b34801561083257600080fd5b5061023261240d565b34801561084757600080fd5b50610592612429565b34801561085c57600080fd5b506101c5612435565b600080610870611333565b9050801580159061088857508061088561243a565b10155b91505b5090565b6000610899611810565b73ffffffffffffffffffffffffffffffffffffffff166304bf2a7f836040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561091d578181015183820152602001610905565b50505050905090810190601f16801561094a5780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b15801561096957600080fd5b505af115801561097d573d6000803e3d6000fd5b505050506040513d602081101561099357600080fd5b505192915050565b60006109a5611ae3565b73ffffffffffffffffffffffffffffffffffffffff166332f0a3b56040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015610a0857600080fd5b505af1158015610a1c573d6000803e3d6000fd5b505050506040513d6020811015610a3257600080fd5b505190505b90565b604080517f4d4f444946595f51554f52554d5f524f4c4500000000000000000000000000008152905190819003601201902081565b60035460408051808201909152600e81527f564f54494e475f4e4f5f564f544500000000000000000000000000000000000060208201526000918491908210610b50576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610b15578181015183820152602001610afd565b50505050905090810190601f168015610b425780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600084815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845260060190915290205460ff1691505b5092915050565b6000806000806000806000806000606060008b60035481106040805190810160405280600e81526020017f564f54494e475f4e4f5f564f5445000000000000000000000000000000000000815250901515610c48576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610b15578181015183820152602001610afd565b5060008d81526002602052604090209150610c628261243e565b9b508160000160009054906101000a900460ff169a508160000160019054906101000a900467ffffffffffffffff1699508160000160099054906101000a900467ffffffffffffffff1698508160000160119054906101000a900467ffffffffffffffff1697508160010160009054906101000a900467ffffffffffffffff169650816002015495508160030154945081600401549350816005018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610d915780601f10610d6657610100808354040283529160200191610d91565b820191906000526020600020905b815481529060010190602001808311610d7457829003601f168201915b5050505050925050509193959799509193959799565b604080517f4d4f444946595f51554f52554d5f524f4c45000000000000000000000000000081529051908190036012019020600154610df39067ffffffffffffffff80851691166124a5565b610dfe338383611680565b60408051808201909152600f81527f4150505f415554485f4641494c454400000000000000000000000000000000006020820152901515610e9b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610b15578181015183820152602001610afd565b5060005460408051808201909152601981527f564f54494e475f4348414e47455f51554f52554d5f504354530000000000000060208201529067ffffffffffffffff7401000000000000000000000000000000000000000090910481169085161115610f63576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610b15578181015183820152602001610afd565b506001805467ffffffffffffffff85167fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000909116811790915560408051918252517f3172f2e9273c729c2a47cc8bf7e7f18506e3e3035126d562602bd2155bc78a509181900360200190a1505050565b604080517f4d4f444946595f535550504f52545f524f4c45000000000000000000000000008152905190819003601301902081565b604080517f4d4f444946595f535550504f52545f524f4c45000000000000000000000000008152905190819003601301902060005461106c9067ffffffffffffffff80851691740100000000000000000000000000000000000000009004166124a5565b611077338383611680565b60408051808201909152600f81527f4150505f415554485f4641494c454400000000000000000000000000000000006020820152901515611114576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610b15578181015183820152602001610afd565b5060015460408051808201909152601a81527f564f54494e475f4348414e47455f535550504f52545f5043545300000000000060208201529067ffffffffffffffff808616911611156111c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610b15578181015183820152602001610afd565b5060408051808201909152601a81527f564f54494e475f4348414e47455f535550505f544f4f5f4249470000000000006020820152670de0b6b3a764000067ffffffffffffffff851610611273576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610b15578181015183820152602001610afd565b506000805467ffffffffffffffff85167401000000000000000000000000000000000000000081027fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff9092169190911790915560408051918252517f903b617f7f36eb047a29b89d1bf7885fdae31d250c3320fccf11d045c11b396e9181900360200190a1505050565b50600190565b600061132e7fd625496217aa6a3453eecb9c3489dc5a53e6c67b444329ea2b2cbc9ff547639b612500565b905090565b600061132e7febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e612500565b600080600061136c846112fd565b60408051808201909152601281527f5245434f5645525f444953414c4c4f57454400000000000000000000000000006020820152901515611409576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610b15578181015183820152602001610afd565b5061141261099b565b925061141d83612508565b60408051808201909152601a81527f5245434f5645525f5641554c545f4e4f545f434f4e545241435400000000000060208201529015156114ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610b15578181015183820152602001610afd565b5073ffffffffffffffffffffffffffffffffffffffff84161515611525576040513031925073ffffffffffffffffffffffffffffffffffffffff84169083156108fc029084906000818181858888f1935050505015801561151f573d6000803e3d6000fd5b50611615565b508261154d73ffffffffffffffffffffffffffffffffffffffff82163063ffffffff61253b16565b915061157673ffffffffffffffffffffffffffffffffffffffff8216848463ffffffff61267416565b60408051808201909152601d81527f5245434f5645525f544f4b454e5f5452414e534645525f4641494c45440000006020820152901515611613576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610b15578181015183820152602001610afd565b505b8373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f596caf56044b55fb8c4ca640089bbc2b63cae3e978b851f5745cbb7c5b288e02846040518082815260200191505060405180910390a350505050565b60008061168b610865565b151561169a5760009150611808565b6116a2611ae3565b905073ffffffffffffffffffffffffffffffffffffffff811615156116ca5760009150611808565b8073ffffffffffffffffffffffffffffffffffffffff1663fdef91068630876116f28861270c565b6040517c010000000000000000000000000000000000000000000000000000000063ffffffff871602815273ffffffffffffffffffffffffffffffffffffffff808616600483019081529085166024830152604482018490526080606483019081528351608484015283519192909160a490910190602085019080838360005b8381101561178a578181015183820152602001611772565b50505050905090810190601f1680156117b75780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1580156117d957600080fd5b505af11580156117ed573d6000803e3d6000fd5b505050506040513d602081101561180357600080fd5b505191505b509392505050565b60008061181b611ae3565b604080517fbe00bbd80000000000000000000000000000000000000000000000000000000081527fd6f028ca0e8edb4a8c9757ca4fdccab25fa1e0317da1188108f7d2dee14902fb60048201527fddbcfd564f642ab5627cf68b9b7d374fb4f8a36e941a75d89c87998cef03bd616024820152905173ffffffffffffffffffffffffffffffffffffffff929092169163be00bbd8916044808201926020929091908290030181600087803b15801561096957600080fd5b60015468010000000000000000900467ffffffffffffffff1681565b604080517f4352454154455f564f5445535f524f4c450000000000000000000000000000008152905190819003601101902081565b600061196c8360405180807f4352454154455f564f5445535f524f4c4500000000000000000000000000000081525060110190506040518091039020611967612716565b611680565b9392505050565b60035460408051808201909152600e81527f564f54494e475f4e4f5f564f544500000000000000000000000000000000000060208201526000918391908210611a18576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610b15578181015183820152602001610afd565b50611a2283612728565b91505b50919050565b60035460408051808201909152600e81527f564f54494e475f4e4f5f564f544500000000000000000000000000000000000060208201526000918491908210611ad0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610b15578181015183820152602001610afd565b50611adb8484612841565b949350505050565b600061132e7f4172f0f7d2289153072b0a6ca36959e0cbe2efc3afe50fc81636caa96338137b612500565b604080517f4352454154455f564f5445535f524f4c450000000000000000000000000000008152815190819003601101812060008083526020830190935290611b5d9033908390855b50611680565b60408051808201909152600f81527f4150505f415554485f4641494c454400000000000000000000000000000000006020820152901515611bfa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610b15578181015183820152602001610afd565b50611c6786868080601f0160208091040260200160405190810160405280939291908181526020018383808284375050604080516020601f8c018190048102820181019092528a815294508a93508992508291508401838280828437820191505050505050600180612928565b9695505050505050565b611c7b3382611923565b60408051808201909152601681527f564f54494e475f43414e5f4e4f545f464f5257415244000000000000000000006020820152901515611d18576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610b15578181015183820152602001610afd565b50611d36816020604051908101604052806000815250600180612928565b5050565b60015467ffffffffffffffff1681565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611d75611333565b14905090565b60035481565b60035460408051808201909152600e81527f564f54494e475f4e4f5f564f5445000000000000000000000000000000000000602082015284918210611e22576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610b15578181015183820152602001610afd565b50611e2d8433612841565b60408051808201909152601381527f564f54494e475f43414e5f4e4f545f564f5445000000000000000000000000006020820152901515611eca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610b15578181015183820152602001610afd565b50611ed784843385612ca1565b50505050565b611ee5611333565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a4544000000000000000060208201529015611f81576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610b15578181015183820152602001610afd565b50611f8a612f2f565b60408051808201909152601081527f564f54494e475f494e49545f5043545300000000000000000000000000000000602082015267ffffffffffffffff8085169084161115612035576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610b15578181015183820152602001610afd565b5060408051808201909152601b81527f564f54494e475f494e49545f535550504f52545f544f4f5f42494700000000006020820152670de0b6b3a764000067ffffffffffffffff8516106120e5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610b15578181015183820152602001610afd565b50600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff95909516949094177fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000067ffffffffffffffff9485160217909355600180547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016918316919091177fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff16680100000000000000009390921692909202179055565b604080517f4352454154455f564f5445535f524f4c450000000000000000000000000000008152815190819003601101812060008083526020830190935290612225903390839085611b57565b60408051808201909152600f81527f4150505f415554485f4641494c4544000000000000000000000000000000000060208201529015156122c2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610b15578181015183820152602001610afd565b5061232e88888080601f0160208091040260200160405190810160405280939291908181526020018383808284375050604080516020601f8e018190048102820181019092528c815294508c93508b925082915084018382808284378201915050505050508686612928565b98975050505050505050565b60035460408051808201909152600e81527f564f54494e475f4e4f5f564f54450000000000000000000000000000000000006020820152829182106123db576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610b15578181015183820152602001610afd565b50611d368261300e565b60005474010000000000000000000000000000000000000000900467ffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b670de0b6b3a764000081565b600190565b4390565b600154815460009161247491610100900467ffffffffffffffff908116916801000000000000000090041663ffffffff6130c116565b67ffffffffffffffff16612486613173565b67ffffffffffffffff1610801561249f5750815460ff16155b92915050565b6040805160028082526060808301845292602083019080388339019050509050828160008151811015156124d557fe5b6020908102909101015280518290829060019081106124f057fe5b6020908102909101015292915050565b5490565b5490565b60008073ffffffffffffffffffffffffffffffffffffffff831615156125315760009150611a25565b50506000903b1190565b6040805173ffffffffffffffffffffffffffffffffffffffff83166024808301919091528251808303909101815260449091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f70a082310000000000000000000000000000000000000000000000000000000017905260009081806125c88684613185565b60408051808201909152601c81527f534146455f4552435f32305f42414c414e43455f5245564552544544000000006020820152919350915082151561266a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610b15578181015183820152602001610afd565b5095945050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260009061270385826131b6565b95945050505050565b8051602002815290565b60408051600081526020810190915290565b60008181526002602052604081208054829060ff161561274b576000925061283a565b60028201546004830154835461278192919071010000000000000000000000000000000000900467ffffffffffffffff16613204565b1561278f576001925061283a565b6127988261243e565b156127a6576000925061283a565b600382015460028301546127bf9163ffffffff61324616565b600283015483549192506127f391839071010000000000000000000000000000000000900467ffffffffffffffff16613204565b1515612802576000925061283a565b60028201546004830154600184015461282692919067ffffffffffffffff16613204565b1515612835576000925061283a565b600192505b5050919050565b60008281526002602052604081206128588161243e565b8015611adb5750600080548254604080517f4ee2cd7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8881166004830152690100000000000000000090930467ffffffffffffffff16602482015290519190921691634ee2cd7e91604480830192602092919082900301818787803b1580156128f357600080fd5b505af1158015612907573d6000803e3d6000fd5b505050506040513d602081101561291d57600080fd5b505111949350505050565b60008060008060016129386132eb565b60008054604080517f981b24d00000000000000000000000000000000000000000000000000000000081529490930367ffffffffffffffff81166004860152925192965073ffffffffffffffffffffffffffffffffffffffff169263981b24d09260248083019360209383900390910190829087803b1580156129ba57600080fd5b505af11580156129ce573d6000803e3d6000fd5b505050506040513d60208110156129e457600080fd5b505160408051808201909152601681527f564f54494e475f4e4f5f564f54494e475f504f57455200000000000000000000602082015290925060008311612a87576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610b15578181015183820152602001610afd565b505060038054600181019091556000818152600260205260409020909350612aad613173565b81547fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000ff1661010067ffffffffffffffff92831602177fffffffffffffffffffffffffffffff0000000000000000ffffffffffffffffff16690100000000000000000085831602178083556000547fffffffffffffff0000000000000000ffffffffffffffffffffffffffffffffff9091167401000000000000000000000000000000000000000090910482167101000000000000000000000000000000000002178255600180549083018054919092167fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000909116179055600481018290558751612bc090600583019060208b0190613d2b565b503373ffffffffffffffffffffffffffffffffffffffff16847f4d72fe0577a3a3f7da968d7b892779dde102519c25527b29cf7054f245c791b9896040518080602001828103825283818151815260200191508051906020019080838360005b83811015612c38578181015183820152602001612c20565b50505050905090810190601f168015612c655780820380516001836020036101000a031916815260200191505b509250505060405180910390a3858015612c845750612c848433612841565b15612c9657612c968460013388612ca1565b505050949350505050565b60008481526002602090815260408083208354815483517f4ee2cd7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8981166004830152690100000000000000000090920467ffffffffffffffff166024820152935192959485949190921692634ee2cd7e9260448084019391929182900301818787803b158015612d4557600080fd5b505af1158015612d59573d6000803e3d6000fd5b505050506040513d6020811015612d6f57600080fd5b505173ffffffffffffffffffffffffffffffffffffffff8616600090815260068501602052604090205490925060ff1690506001816002811115612daf57fe5b1415612dd4576002830154612dca908363ffffffff6132f816565b6002840155612e03565b6002816002811115612de257fe5b1415612e03576003830154612dfd908363ffffffff6132f816565b60038401555b8515612e28576002830154612e1e908363ffffffff61324616565b6002840155612e43565b6003830154612e3d908363ffffffff61324616565b60038401555b85612e4f576002612e52565b60015b73ffffffffffffffffffffffffffffffffffffffff86166000908152600685016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001836002811115612eab57fe5b021790555060408051871515815260208101849052815173ffffffffffffffffffffffffffffffffffffffff8816928a927fb34ee265e3d4f5ec4e8b52d59b2a9be8fceca2f274ebc080d8fba797fea9391f929081900390910190a3838015612f185750612f1887612728565b15612f2657612f26876133a3565b50505050505050565b612f37611333565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a4544000000000000000060208201529015612fd3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610b15578181015183820152602001610afd565b5061300c612fdf61243a565b7febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e9063ffffffff6134db16565b565b61301781612728565b60408051808201909152601681527f564f54494e475f43414e5f4e4f545f455845435554450000000000000000000060208201529015156130b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610b15578181015183820152602001610afd565b506130be816133a3565b50565b60408051808201909152601381527f4d41544836345f4144445f4f564552464c4f570000000000000000000000000060208201526000908383019067ffffffffffffffff8086169083161015611808576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610b15578181015183820152602001610afd565b600061132e6131806134df565b6134e3565b6000806000806040516020818751602089018a5afa925060008311156131aa57805191505b50909590945092505050565b6000806040516020818551602087016000895af160008111156131fa573d80156131e757602081146131f0576131f8565b600193506131f8565b600183511493505b505b5090949350505050565b6000808315156132175760009150611808565b8361323086670de0b6b3a764000063ffffffff61359316565b81151561323957fe5b0492909211949350505050565b60408051808201909152601181527f4d4154485f4144445f4f564552464c4f5700000000000000000000000000000060208201526000908383019084821015611808576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610b15578181015183820152602001610afd565b600061132e61318061243a565b60408051808201909152601281527f4d4154485f5355425f554e444552464c4f570000000000000000000000000000602082015260009081908484111561339b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610b15578181015183820152602001610afd565b505050900390565b600081815260026020818152604080842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660019081178255825195865260058201805491821615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190911694909404601f810184900484028601830183529285018381529094936134aa93919290919085018282801561348d5780601f106134625761010080835404028352916020019161348d565b820191906000526020600020905b81548152906001019060200180831161347057829003601f168201915b505060408051600081526020810190915286935091506136559050565b5060405183907fbf8e2b108bb7c980e08903a8a46527699d5e84905a082d56dacb4150725c8cab90600090a2505050565b9055565b4290565b60408051808201909152601581527f55494e5436345f4e554d4245525f544f4f5f4249470000000000000000000000602082015260009067ffffffffffffffff83111561358c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610b15578181015183820152602001610afd565b5090919050565b6000808315156135a65760009150610b8a565b508282028284828115156135b657fe5b60408051808201909152601181527f4d4154485f4d554c5f4f564552464c4f5700000000000000000000000000000060208201529291900414611808576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610b15578181015183820152602001610afd565b6060600080606080613665610865565b60408051808201909152601481527f494e49545f4e4f545f494e495449414c495a45440000000000000000000000006020820152901515613702576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610b15578181015183820152602001610afd565b5060008061370e611ae3565b9150613718611303565b90506137238a61088f565b60408051808201909152601b81527f45564d52554e5f4558454355544f525f554e415641494c41424c450000000000602082015290965073ffffffffffffffffffffffffffffffffffffffff871615156137d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610b15578181015183820152602001610afd565b506040516060602482019081528b5160848301528b517f279cea3500000000000000000000000000000000000000000000000000000000975087928d928d928d9282916044820191606481019160a490910190602089019080838360005b8381101561384f578181015183820152602001613837565b50505050905090810190601f16801561387c5780820380516001836020036101000a031916815260200191505b50848103835286518152865160209182019188019080838360005b838110156138af578181015183820152602001613897565b50505050905090810190601f1680156138dc5780820380516001836020036101000a031916815260200191505b508481038252855181528551602091820191808801910280838360005b838110156139115781810151838201526020016138f9565b505050509050019650505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509350600080855160208701895af46040519350808015613a1657603f3d1180156139b45760203d03806020883e8601604052613a10565b7f08c379a000000000000000000000000000000000000000000000000000000000865260206004870152601e60248701527f45564d52554e5f4558454355544f525f494e56414c49445f52455455524e00006044870152606486fd5b50613a1f565b3d6000863e3d85fd5b50508573ffffffffffffffffffffffffffffffffffffffff167f5229a5dba83a54ae8cb5b51bdd6de9474cacbe9dd332f5185f3a4f4f2e3f4ad98b8b8660405180806020018060200180602001848103845287818151815260200191508051906020019080838360005b83811015613aa1578181015183820152602001613a89565b50505050905090810190601f168015613ace5780820380516001836020036101000a031916815260200191505b50848103835286518152865160209182019188019080838360005b83811015613b01578181015183820152602001613ae9565b50505050905090810190601f168015613b2e5780820380516001836020036101000a031916815260200191505b50848103825285518152855160209182019187019080838360005b83811015613b61578181015183820152602001613b49565b50505050905090810190601f168015613b8e5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a28296508173ffffffffffffffffffffffffffffffffffffffff16613bc1611ae3565b73ffffffffffffffffffffffffffffffffffffffff16146040805190810160405280601f81526020017f45564d52554e5f50524f5445435445445f53544154455f4d4f44494649454400815250901515613c77576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610b15578181015183820152602001610afd565b5080613c81611303565b60408051808201909152601f81527f45564d52554e5f50524f5445435445445f53544154455f4d4f4449464945440060208201529114613d1d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610b15578181015183820152602001610afd565b505050505050509392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10613d6c57805160ff1916838001178555613d99565b82800160010185558215613d99579182015b82811115613d99578251825591602001919060010190613d7e565b5061088b92610a379250905b8082111561088b5760008155600101613da55600a165627a7a72305820c48eb7047765cae16d42397057a74c211ec0b6f6ca8899698ba8ecb9dcb13a0e0029",
  "sourceMap": "360:13716:10:-;;;344:9:22;:7;;;;:9;:::i;:::-;360:13716:10;;590:84:32;615:24:30;:22;;;;:24;:::i;:::-;646:25;;;;;;;;;;;;;;;;;;615:29;607:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;607:65:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;637:30:32;-1:-1:-1;;637:13:32;;;;:30;:::i;:::-;590:84::o;881:137:30:-;936:7;962:49;-1:-1:-1;;;;;;;;;;;962:47:30;;;;;;:49;:::i;:::-;955:56;;881:137;:::o;1751:141::-;615:24;:22;;;;:24;:::i;:::-;646:25;;;;;;;;;;;;;;;;;;615:29;607:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;607:65:30;-1:-1:-1;1824:61:30;-1:-1:-1;;;;;;;;;;;1872:12:30;1824:47;;;;;;:61;:::i;:::-;1751:141;:::o;519:134:37:-;630:15;;620:27::o;1028:119::-;1117:22;;1115:26::o;360:13716:10:-;;;;;;;",
  "deployedSourceMap": "360:13716:10:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1128:208:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1128:208:30;;;;;;;;;;;;;;;;;;;;;;795:179:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;795:179:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;795:179:40;;-1:-1:-1;795:179:40;;-1:-1:-1;;;;;;;795:179:40;;;;;;;;;;;;;;;;;;;;2253:229:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2253:229:21;;;;637:76:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;637:76:10;;;;;;;;;;;;;;;;;;;;9593:162;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;9593:162:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8731:856;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;8731:856:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;8731:856:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4850:376;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4850:376:10;;;;;;;;;553:78;;8:9:-1;5:2;;;30:1;27;20:12;5:2;553:78:10;;;;4226:463;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4226:463:10;;;;;;;1659:99:38;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1659:99:38;;;;;;;796:106:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;796:106:20;;;;881:137:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;881:137:30;;;;836:623:38;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;836:623:38;;;;;;;1641:496:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1641:496:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1641:496:21;;-1:-1:-1;1641:496:21;;-1:-1:-1;;;;;;;1641:496:21;980:231:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;980:231:40;;;;2059:22:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2059:22:10;;;;;;;;;;;;;;;;;;;;;;;473:74;;8:9:-1;5:2;;;30:1;27;20:12;5:2;473:74:10;;;;7839:223;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;7839:223:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7839:223:10;;-1:-1:-1;7839:223:10;;-1:-1:-1;;;;;;;7839:223:10;8266:128;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;8266:128:10;;;;;8579:146;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;8579:146:10;;;;;;;;;674:116:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;674:116:20;;;;5451:190:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5451:190:10;;;;;;;;;;;;;;;;;;;;;;;;7662:171;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;7662:171:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7662:171:10;;-1:-1:-1;7662:171:10;;-1:-1:-1;;;;;;;7662:171:10;2021:32;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2021:32:10;;;;287:117:32;;8:9:-1;5:2;;;30:1;27;20:12;5:2;287:117:32;;;;2226:26:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2226:26:10;;;;6740:243;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6740:243:10;;;;;;;;;;;;;3544:531;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3544:531:10;;;;;;;;;;;;;;;;;;;;;6027:278;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6027:278:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7239:105;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;7239:105:10;;;;;1983:32;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1983:32:10;;;;1953:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1953:24:10;;;;720:42;;8:9:-1;5:2;;;30:1;27;20:12;5:2;720:42:10;;;;7373:80;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7373:80:10;;;;1128:208:30;1175:4;1191:27;1221:24;:22;:24::i;:::-;1191:54;-1:-1:-1;1262:24:30;;;;;:67;;;1310:19;1290:16;:14;:16::i;:::-;:39;;1262:67;1255:74;;1128:208;;;:::o;795:179:40:-;861:18;917:22;:20;:22::i;:::-;:40;;;958:7;917:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;917:49:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;917:49:40;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;917:49:40;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;917:49:40;;795:179;-1:-1:-1;;795:179:40:o;2253:229:21:-;2302:7;2408:8;:6;:8::i;:::-;:25;;;:27;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2408:27:21;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2408:27:21;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2408:27:21;;-1:-1:-1;2253:229:21;;:::o;637:76:10:-;682:31;;;;;;;;;;;;;;;;637:76;:::o;9593:162::-;2670:11;;2683:13;;;;;;;;;;;;;;;;;9690:10;;9672:7;;2683:13;2660:21;;2652:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2652:45:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9719:14:10;;;;:5;:14;;;;;;;;:29;;;;;:21;;:29;;;;;;;;;-1:-1:-1;2707:1:10;9593:162;;;;;:::o;8731:856::-;8851:9;8874:13;8901:16;8931:20;8965:22;9001;9037:11;9062;9087:19;9120:12;9157:18;8812:7;2670:11;;2660:7;:21;2683:13;;;;;;;;;;;;;;;;;;2652:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;2652:45:10;-1:-1:-1;9178:14:10;;;;:5;:14;;;;;;-1:-1:-1;9210:18:10;9178:14;9210:11;:18::i;:::-;9203:25;;9249:5;:14;;;;;;;;;;;;9238:25;;9285:5;:15;;;;;;;;;;;;9273:27;;9326:5;:19;;;;;;;;;;;;9310:35;;9373:5;:24;;;;;;;;;;;;9355:42;;9425:5;:24;;;;;;;;;;;;9407:42;;9465:5;:9;;;9459:15;;9490:5;:9;;;9484:15;;9523:5;:17;;;9509:31;;9559:5;:21;;9550:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8731:856;;;;;;;;;;;;;:::o;4850:376::-;682:31;;;;;;;;;;;;;;;;5005:18;;4963:62;;4967:28;;;;;5005:18;4963:3;:62::i;:::-;1148:38:21;1159:10;1171:5;1178:7;1148:10;:38::i;:::-;1188:17;;;;;;;;;;;;;;;;;;1140:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;1140:66:21;-1:-1:-1;5072:18:10;;5092:24;;;;;;;;;;;;;;;;;;5072:18;;;;;;;5049:41;;;;;5041:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;5041:76:10;-1:-1:-1;5127:18:10;:40;;;;;;;;;;;;;;5183:36;;;;;;;;;;;;;;;;4850:376;;;:::o;553:78::-;599:32;;;;;;;;;;;;;;;;553:78;:::o;4226:463::-;599:32;;;;;;;;;;;;;;;;4382:18;;4340:62;;4344:28;;;;;4382:18;;;;4340:3;:62::i;:::-;1148:38:21;1159:10;1171:5;1178:7;1148:10;:38::i;:::-;1188:17;;;;;;;;;;;;;;;;;;1140:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;1140:66:21;-1:-1:-1;4426:18:10;;4469:25;;;;;;;;;;;;;;;;;;4426:41;;;;:18;;:41;;4418:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;4418:77:10;-1:-1:-1;4545:28:10;;;;;;;;;;;;;;;;;754:8;4513:30;;;;4505:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;4505:69:10;-1:-1:-1;4584:18:10;:40;;;;;;;;;;;;;;;;;;;4640:42;;;;;;;;;;;;;;;;4226:463;;;:::o;1659:99:38:-;-1:-1:-1;1747:4:38;;1659:99::o;796:106:20:-;834:7;860:35;601:66;860:33;:35::i;:::-;853:42;;796:106;:::o;881:137:30:-;936:7;962:49;345:66;962:47;:49::i;836:623:38:-;960:13;1067:15;1224:11;904:27;924:6;904:19;:27::i;:::-;933:16;;;;;;;;;;;;;;;;;;896:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;896:54:38;;976:18;:16;:18::i;:::-;960:34;;1012:17;1023:5;1012:10;:17::i;:::-;1031:24;;;;;;;;;;;;;;;;;;1004:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;1004:52:38;-1:-1:-1;1096:13:38;;;;1092:307;;;1170:23;;1143:4;1135:21;;-1:-1:-1;1135:21:38;1170:14;;;:23;;;;;1135:21;;1170:23;;;;1135:21;1170:14;:23;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1170:23:38;1092:307;;;-1:-1:-1;1244:6:38;1275:27;:21;;;1297:4;1275:27;:21;:27;:::i;:::-;1265:37;-1:-1:-1;1324:34:38;:18;;;1343:5;1265:37;1324:34;:18;:34;:::i;:::-;1360:27;;;;;;;;;;;;;;;;;;1316:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;1316:72:38;;1092:307;1436:6;1414:38;;1429:5;1414:38;;;1444:7;1414:38;;;;;;;;;;;;;;;;;;836:623;;;;:::o;1641:496:21:-;1733:4;1819:20;1754:16;:14;:16::i;:::-;1753:17;1749:60;;;1793:5;1786:12;;;;1749:60;1842:8;:6;:8::i;:::-;1819:31;-1:-1:-1;1864:35:21;;;;1860:78;;;1922:5;1915:12;;;;1860:78;1955:12;:26;;;1995:7;2024:4;2043:5;2062:58;2112:7;2062:49;:58::i;:::-;1955:175;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1955:175:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1955:175:21;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1955:175:21;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1955:175:21;;-1:-1:-1;1641:496:21;;;;;;;:::o;980:231:40:-;1033:18;1063:20;1086:8;:6;:8::i;:::-;:69;;;;;;1368:66:51;1086:69:40;;;;330:66:42;1086:69:40;;;;;;:15;;;;;;;;:69;;;;;;;;;;;;;;;;:15;:69;;;5:2:-1;;;;30:1;27;20:12;2059:22:10;;;;;;;;;:::o;473:74::-;517:30;;;;;;;;;;;;;;;;473:74;:::o;7839:223::-;7904:4;8010:45;8021:7;517:30;;;;;;;;;;;;;;;;;;;8049:5;:3;:5::i;:::-;8010:10;:45::i;:::-;8003:52;7839:223;-1:-1:-1;;;7839:223:10:o;8266:128::-;2670:11;;2683:13;;;;;;;;;;;;;;;;;8344:4;;8326:7;;2683:13;2660:21;;2652:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;2652:45:10;;8367:20;8379:7;8367:11;:20::i;:::-;8360:27;;2707:1;8266:128;;;;:::o;8579:146::-;2670:11;;2683:13;;;;;;;;;;;;;;;;;8670:4;;8652:7;;2683:13;2660:21;;2652:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;2652:45:10;;8693:25;8702:7;8711:6;8693:8;:25::i;:::-;8686:32;8579:146;-1:-1:-1;;;;8579:146:10:o;674:116:20:-;713:7;747:35;485:66;747:33;:35::i;5451:190:10:-;517:30;;;;;;;;;;;;;;;;5552:14;1020:16:21;;;;;;;;;517:30:10;990:47:21;;1001:10;;517:30:10;;5552:14;1020:16:21;;990:10;:47::i;:::-;1039:17;;;;;;;;;;;;;;;;;;982:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;982:75:21;;5585:49:10;5594:16;;5585:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5585:49:10;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5612:9:10;;-1:-1:-1;5612:9:10;;-1:-1:-1;5612:9:10;;-1:-1:-1;5585:49:10;;5612:9;;;;5585:49;;;;;;;;;;;5623:4;5629;5585:8;:49::i;:::-;5578:56;5451:190;-1:-1:-1;;;;;;5451:190:10:o;7662:171::-;7722:34;7733:10;7745;7722;:34::i;:::-;7758:21;;;;;;;;;;;;;;;;;;7714:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;7714:66:10;;7790:36;7799:10;7790:36;;;;;;;;;;;;;7815:4;7821;7790:8;:36::i;:::-;;7662:171;:::o;2021:32::-;;;;;;:::o;287:117:32:-;331:4;277:2;354:24;:22;:24::i;:::-;:43;347:50;;287:117;:::o;2226:26:10:-;;;;:::o;6740:243::-;2670:11;;2683:13;;;;;;;;;;;;;;;;;6832:7;;2660:21;;2652:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;2652:45:10;;6859:29;6868:7;6877:10;6859:8;:29::i;:::-;6890:18;;;;;;;;;;;;;;;;;;6851:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;6851:58:10;;6919:57;6925:7;6934:9;6945:10;6957:18;6919:5;:57::i;:::-;6740:243;;;;:::o;3544:531::-;615:24:30;:22;:24::i;:::-;646:25;;;;;;;;;;;;;;;;;;615:29;607:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;607:65:30;;3744:13:10;:11;:13::i;:::-;3820:15;;;;;;;;;;;;;;;;;3776:42;;;;;;;;;3768:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;3768:68:10;-1:-1:-1;3886:26:10;;;;;;;;;;;;;;;;;754:8;3854:30;;;;3846:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;3846:67:10;-1:-1:-1;3924:5:10;:14;;;;;;;;;;;;;3948:40;;;;;;;;;;;;-1:-1:-1;3998:40:10;;;;;;;;;;;4048:20;;;;;;;;;;;;;;3544:531::o;6027:278::-;517:30;;;;;;;;;;;;;;;;6193:14;1020:16:21;;;;;;;;;517:30:10;990:47:21;;1001:10;;517:30:10;;6193:14;1020:16:21;;990:47;1039:17;;;;;;;;;;;;;;;;;;982:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;982:75:21;;6230:68:10;6239:16;;6230:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6230:68:10;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6257:9:10;;-1:-1:-1;6257:9:10;;-1:-1:-1;6257:9:10;;-1:-1:-1;6230:68:10;;6257:9;;;;6230:68;;;;;;;;;;;6268:9;6279:18;6230:8;:68::i;:::-;6223:75;6027:278;-1:-1:-1;;;;;;;;6027:278:10:o;7239:105::-;2670:11;;2683:13;;;;;;;;;;;;;;;;;7297:7;;2660:21;;2652:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;2652:45:10;;7316:21;7329:7;7316:12;:21::i;1983:32::-;;;;;;;;;:::o;1953:24::-;;;;;;:::o;720:42::-;754:8;720:42;:::o;7373:80::-;7442:4;7373:80;:::o;347:94:35:-;422:12;347:94;:::o;13545:161:10:-;13671:8;;13651:15;;13609:4;;13651:29;;13671:8;13651:15;;13671:8;13651:15;;;;13671:8;;;;13651:29;:19;:29;:::i;:::-;13632:48;;:16;:14;:16::i;:::-;:48;;;:67;;;;-1:-1:-1;13685:14:10;;;;13684:15;13632:67;13625:74;13545:161;-1:-1:-1;;13545:161:10:o;1717:148:12:-;1804:16;;;1818:1;1804:16;;;1777:11;1804:16;;;;;1777:11;1804:16;;;;;105:10:-1;1804:16:12;88:34:-1;136:17;;-1:-1;1804:16:12;1800:20;;1837:2;1830:1;1832;1830:4;;;;;;;;;;;;;;;;;;:9;1849:4;;1856:2;;1849:1;;1851;;1849:4;;;;;;;;;;;;;;:9;1717:148;;-1:-1:-1;;1717:148:12:o;379:134:37:-;490:15;;480:27::o;519:134::-;630:15;;620:27::o;426:244:31:-;486:4;;506:21;;;;502:64;;;550:5;543:12;;;;502:64;-1:-1:-1;;662:1:31;617:20;;655:8;;426:244::o;4578:403:34:-;4708:91;;;4744:16;4708:91;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;4708:91:34;;;;;;;;25:18:-1;;61:17;;4708:91:34;182:15:-1;4744:25:34;179:29:-1;160:49;;4656:7:34;;;;4849:39;4744:6;4708:91;4849:12;:39::i;:::-;4915:28;;;;;;;;;;;;;;;;;4810:78;;-1:-1:-1;4810:78:34;-1:-1:-1;4898:46:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;4898:46:34;-1:-1:-1;4962:12:34;4578:403;-1:-1:-1;;;;;4578:403:34:o;3100:304::-;3232:101;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;3232:101:34;;;;;;;;25:18:-1;;61:17;;3232:101:34;182:15:-1;3268:17:34;179:29:-1;160:49;;3184:4:34;;3350:47;3372:6;3232:101;3350:21;:47::i;:::-;3343:54;3100:304;-1:-1:-1;;;;;3100:304:34:o;142:539:23:-;559:13;;575:2;559:18;639:26;;559:6;596:79::o;101:89:12:-;167:16;;;181:1;167:16;;;;;;;;;101:89::o;12507:804:10:-;12568:4;12605:14;;;:5;:14;;;;;12634;;12568:4;;12634:14;;12630:57;;;12671:5;12664:12;;;;12630:57;12750:9;;;;12761:17;;;;12780:24;;12738:67;;12750:9;12761:17;12780:24;;;;;12738:11;:67::i;:::-;12734:109;;;12828:4;12821:11;;;;12734:109;12880:18;12892:5;12880:11;:18::i;:::-;12876:61;;;12921:5;12914:12;;;;12876:61;13012:9;;;;12998;;;;:24;;;:13;:24;:::i;:::-;13049:9;;;;13072:24;;12977:45;;-1:-1:-1;13037:60:10;;12977:45;;13072:24;;;;;13037:11;:60::i;:::-;13036:61;13032:104;;;13120:5;13113:12;;;;13032:104;13189:9;;;;13200:17;;;;13219:24;;;;13177:67;;13189:9;13200:17;13219:24;;13177:11;:67::i;:::-;13176:68;13172:111;;;13267:5;13260:12;;;;13172:111;13300:4;13293:11;;12507:804;;;;;;:::o;13317:222::-;13391:4;13428:14;;;:5;:14;;;;;13460:18;13428:14;13460:11;:18::i;:::-;:72;;;;-1:-1:-1;13531:1:10;13482:5;;13508:19;;13482:46;;;;;;:5;:46;;;;;;;13508:19;;;;;;13482:46;;;;;;:5;;;;;:17;;:46;;;;;;;;;;;;;;13531:1;13482:5;:46;;;5:2:-1;;;;30:1;27;20:12;5:2;13482:46:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13482:46:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13482:46:10;:50;;13317:222;-1:-1:-1;;;;13317:222:10:o;9782:939::-;9917:14;9947:20;10044:19;10201:18;9991:1;9970:18;:16;:18::i;:::-;10066:5;;;:34;;;;;;9970:22;;;;10066:34;;;;;;;;;9970:22;;-1:-1:-1;10066:5:10;;;:19;;:34;;;;;;;;;;;;;;;;:5;:34;;;5:2:-1;;;;30:1;27;20:12;5:2;10066:34:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10066:34:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10066:34:10;10135:21;;;;;;;;;;;;;10066:34;10135:21;;;10066:34;;-1:-1:-1;10132:1:10;10118:15;;10110:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;10110:47:10;-1:-1:-1;;10177:11:10;:13;;;;;;;;:11;10222:13;;;:5;:13;;;;;10177;;-1:-1:-1;10263:16:10;:14;:16::i;:::-;10245:34;;;;;;;;;;;10289:35;;;;;;;;;;;-1:-1:-1;10361:18:10;10334:45;;;;10361:18;;;;;;10334:45;;;;;-1:-1:-1;10416:18:10;;10389:24;;;:45;;10416:18;;;;10389:45;;;;;;;10444:17;;;:31;;;10485:40;;;;:21;;;;:40;;;;;:::i;:::-;;10559:10;10541:40;;10551:6;10541:40;10571:9;10541:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;10541:40:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10596:9;:41;;;;;10609:28;10618:6;10626:10;10609:8;:28::i;:::-;10592:123;;;10653:51;10659:6;10667:4;10673:10;10685:18;10653:5;:51::i;:::-;9782:939;;;;;;;;;:::o;10727:1157::-;10877:18;10898:14;;;:5;:14;;;;;;;;11035:5;;11061:19;;11035:46;;;;;:5;:46;;;;;;;11061:19;;;;;;11035:46;;;;;;10898:14;;10877:18;;;11035:5;;;;;:17;;:46;;;;;10898:14;;11035:46;;;;;;10877:18;11035:5;:46;;;5:2:-1;;;;30:1;27;20:12;5:2;11035:46:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11035:46:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11035:46:10;11110:20;;;;;;;:12;;;11035:46;11110:20;;;;;11035:46;;-1:-1:-1;11110:20:10;;;-1:-1:-1;11110:20:10;11202:5;:23;;;;;;;;;11198:188;;;11253:9;;;;:25;;11267:10;11253:25;:13;:25;:::i;:::-;11241:9;;;:37;11198:188;;;11308:14;11299:5;:23;;;;;;;;;11295:91;;;11350:9;;;;:25;;11364:10;11350:25;:13;:25;:::i;:::-;11338:9;;;:37;11295:91;11400:9;11396:145;;;11437:9;;;;:25;;11451:10;11437:25;:13;:25;:::i;:::-;11425:9;;;:37;11396:145;;;11505:9;;;;:25;;11519:10;11505:25;:13;:25;:::i;:::-;11493:9;;;:37;11396:145;11574:9;:43;;11603:14;11574:43;;;11586:14;11574:43;11551:20;;;;;;;:12;;;:20;;;;;:66;;;;;;;;;;;;;;;;;;-1:-1:-1;11633:48:10;;;;;;;;;;;;;;;;;;;;11642:7;;11633:48;;;;;;;;;;;11696:18;:42;;;;;11718:20;11730:7;11718:11;:20::i;:::-;11692:186;;;11840:27;11859:7;11840:18;:27::i;:::-;10727:1157;;;;;;;:::o;1447:123:30:-;615:24;:22;:24::i;:::-;646:25;;;;;;;;;;;;;;;;;;615:29;607:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;607:65:30;;1498;1546:16;:14;:16::i;:::-;345:66;;1498:65;:47;:65;:::i;:::-;1447:123::o;11890:154:10:-;11956:20;11968:7;11956:11;:20::i;:::-;11978:21;;;;;;;;;;;;;;;;;;11948:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;11948:52:10;;12010:27;12029:7;12010:18;:27::i;:::-;11890:154;:::o;1835:166:58:-;1956:18;;;;;;;;;;;;;;;;;1893:6;;1922:7;;;;1947;;;;;;;;;1939:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;1261:106:35;1310:6;1335:25;:14;:12;:14::i;:::-;:23;:25::i;2148:774:34:-;2255:4;2261:7;2284:12;2306:11;2367:4;2361:11;2741:4;2670:3;2619:9;2613:16;2572:4;2561:9;2557:20;2508:5;2451:3;2423:371;2412:382;;2823:1;2814:7;2811:14;2808:2;;;2857:3;2851:10;2844:17;;2808:2;-1:-1:-1;2902:7:34;;2911:3;;-1:-1:-1;2148:774:34;-1:-1:-1;;;2148:774:34:o;800:1342::-;903:4;923:8;981:4;975:11;1403:4;1332:3;1281:9;1275:16;1234:4;1223:9;1219:20;1169:1;1120:5;1063:3;1041:415;1485:1;1476:7;1473:14;1470:2;;;1587:14;1672:55;;;;1806:4;1801:193;;;;1580:512;;1672:55;1708:1;1701:8;;1672:55;;1801:193;1974:1;1968:3;1962:10;1959:17;1952:24;;1580:512;;1470:2;-1:-1:-1;2132:3:34;;800:1342;-1:-1:-1;;;;800:1342:34:o;13811:263:10:-;13901:4;;13921:11;;13917:54;;;13955:5;13948:12;;;;13917:54;14026:6;14003:20;:6;754:8;14003:20;:10;:20;:::i;:::-;:29;;;;;;;;14049:18;;;;;13811:263;-1:-1:-1;;;;13811:263:10:o;1928:170:57:-;2053:18;;;;;;;;;;;;;;;;;1988:7;;2019;;;;2044;;;;2036:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;646:110:35;697:6;722:27;:16;:14;:16::i;1685:172:57:-;1782:19;;;;;;;;;;;;;;;;;1745:7;;;;1772:8;;;;1764:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;1764:38:57;-1:-1:-1;;;1824:7:57;;;1685:172::o;12173:328:10:-;12237:18;12258:14;;;:5;:14;;;;;;;;12283:21;;;;12300:4;12283:21;;;;;12336:12;;;;;12411:21;;;12401:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12336:12;;;12401:57;;;12258:14;;12336:12;12401:57;;12336:12;;12411:21;;12401:57;;;12411:21;12401:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12441:16:10;;;12455:1;12441:16;;;;;;;;12434:5;;-1:-1:-1;12441:16:10;-1:-1:-1;12401:9:10;;-1:-1:-1;12401:57:10:i;:::-;-1:-1:-1;12474:20:10;;12486:7;;12474:20;;;;;12173:328;;;:::o;1028:119:37:-;1117:22;;1115:26::o;926:144:35:-;999:15;926:144;:::o;188:149:36:-;283:20;;;;;;;;;;;;;;;;;240:6;;271:10;266:15;;;258:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;258:46:36;-1:-1:-1;328:1:36;;188:149;-1:-1:-1;188:149:36:o;685:448:57:-;745:7;;985;;981:46;;;1015:1;1008:8;;;;981:46;-1:-1:-1;1049:7:57;;;1054:2;1049;:7;1074:6;;;;;;;1088:18;;;;;;;;;;;;;;;;;;1074:6;;;:12;1066:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;1217:3212:40;1364:5;1385:27;1533:10;1584:17;1671:19;737:16:30;:14;:16::i;:::-;755:21;;;;;;;;;;;;;;;;;;729:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;729:48:30;;4467:17:40;4514:16;4495:8;:6;:8::i;:::-;4467:37;;4533:7;:5;:7::i;:::-;4514:26;;1415:29;1436:7;1415:20;:29::i;:::-;1495:26;;;;;;;;;;;;;;;;;1385:59;;-1:-1:-1;1462:31:40;;;;;1454:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;1454:68:40;-1:-1:-1;1604:56:40;;;;;;;;;;;;;;;;;1546:28;;-1:-1:-1;1546:28:40;;1632:7;;1641:6;;1649:10;;1604:56;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1604:56:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1604:56:40;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1604:56:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1604:56:40;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1604:56:40;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1604:56:40;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;1604:56:40;1584:76;;2067:1;1979;1930:4;1924:11;1880:4;1874;1870:15;1823:8;1768:3;1738:384;2152:4;2146:11;;-1:-1:-1;2198:7:40;2218:195;;;;2478:4;2462:14;2459:24;2500:970;;;;4144:4;4128:14;4124:25;4199:8;4193:4;4185:6;4170:38;4243:21;;4237:4;4230:35;2452:1851;;2500:970;2853:66;2845:6;2838:82;2995:66;2988:4;2980:6;2976:17;2969:93;3128:66;3121:4;3113:6;3109:17;3102:93;3259:66;3252:4;3244:6;3240:17;3233:93;3373:3;3365:6;3358:19;2452:1851;;2191:2126;;2218:195;2337:14;2334:1;2326:6;2311:41;2384:14;2376:6;2369:30;2191:2126;;1709:2618;4363:8;4342:56;;;4374:7;4383:6;4391;4342:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;4342:56:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4342:56:40;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;4342:56:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4342:56:40;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;4342:56:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4416:6;4409:13;;4598:9;4577:30;;4585:8;:6;:8::i;:::-;4577:30;;;4609;;;;;;;;;;;;;;;;;;4569:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;4569:71:40;-1:-1:-1;4669:8:40;4658:7;:5;:7::i;:::-;4679:30;;;;;;;;;;;;;;;;;;4658:19;4650:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;4650:60:40;;787:1:30;;1217:3212:40;;;;;;;;;:::o;360:13716:10:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;360:13716:10;;;;-1:-1:-1;360:13716:10;;;;;;;;;;;;;;",
  "source": "/*\n * SPDX-License-Identitifer:    GPL-3.0-or-later\n */\n\npragma solidity 0.4.24;\n\nimport \"@aragon/os/contracts/apps/AragonApp.sol\";\nimport \"@aragon/os/contracts/common/IForwarder.sol\";\n\nimport \"@aragon/os/contracts/lib/math/SafeMath.sol\";\nimport \"@aragon/os/contracts/lib/math/SafeMath64.sol\";\n\nimport \"@aragon/apps-shared-minime/contracts/MiniMeToken.sol\";\n\n\ncontract Voting is IForwarder, AragonApp {\n    using SafeMath for uint256;\n    using SafeMath64 for uint64;\n\n    bytes32 public constant CREATE_VOTES_ROLE = keccak256(\"CREATE_VOTES_ROLE\");\n    bytes32 public constant MODIFY_SUPPORT_ROLE = keccak256(\"MODIFY_SUPPORT_ROLE\");\n    bytes32 public constant MODIFY_QUORUM_ROLE = keccak256(\"MODIFY_QUORUM_ROLE\");\n\n    uint64 public constant PCT_BASE = 10 ** 18; // 0% = 0; 1% = 10^16; 100% = 10^18\n\n    string private constant ERROR_NO_VOTE = \"VOTING_NO_VOTE\";\n    string private constant ERROR_INIT_PCTS = \"VOTING_INIT_PCTS\";\n    string private constant ERROR_CHANGE_SUPPORT_PCTS = \"VOTING_CHANGE_SUPPORT_PCTS\";\n    string private constant ERROR_CHANGE_QUORUM_PCTS = \"VOTING_CHANGE_QUORUM_PCTS\";\n    string private constant ERROR_INIT_SUPPORT_TOO_BIG = \"VOTING_INIT_SUPPORT_TOO_BIG\";\n    string private constant ERROR_CHANGE_SUPPORT_TOO_BIG = \"VOTING_CHANGE_SUPP_TOO_BIG\";\n    string private constant ERROR_CAN_NOT_VOTE = \"VOTING_CAN_NOT_VOTE\";\n    string private constant ERROR_CAN_NOT_EXECUTE = \"VOTING_CAN_NOT_EXECUTE\";\n    string private constant ERROR_CAN_NOT_FORWARD = \"VOTING_CAN_NOT_FORWARD\";\n    string private constant ERROR_NO_VOTING_POWER = \"VOTING_NO_VOTING_POWER\";\n\n    enum VoterState { Absent, Yea, Nay }\n\n    struct Vote {\n        bool executed;\n        uint64 startDate;\n        uint64 snapshotBlock;\n        uint64 supportRequiredPct;\n        uint64 minAcceptQuorumPct;\n        uint256 yea;\n        uint256 nay;\n        uint256 votingPower;\n        bytes executionScript;\n        mapping (address => VoterState) voters;\n    }\n\n    MiniMeToken public token;\n    uint64 public supportRequiredPct;\n    uint64 public minAcceptQuorumPct;\n    uint64 public voteTime;\n\n    // We are mimicing an array, we use a mapping instead to make app upgrade more graceful\n    mapping (uint256 => Vote) internal votes;\n    uint256 public votesLength;\n\n    event StartVote(uint256 indexed voteId, address indexed creator, string metadata);\n    event CastVote(uint256 indexed voteId, address indexed voter, bool supports, uint256 stake);\n    event ExecuteVote(uint256 indexed voteId);\n    event ChangeSupportRequired(uint64 supportRequiredPct);\n    event ChangeMinQuorum(uint64 minAcceptQuorumPct);\n\n    modifier voteExists(uint256 _voteId) {\n        require(_voteId < votesLength, ERROR_NO_VOTE);\n        _;\n    }\n\n    /**\n    * @notice Initialize Voting app with `_token.symbol(): string` for governance, minimum support of `@formatPct(_supportRequiredPct)`%, minimum acceptance quorum of `@formatPct(_minAcceptQuorumPct)`%, and a voting duration of `@transformTime(_voteTime)`\n    * @param _token MiniMeToken Address that will be used as governance token\n    * @param _supportRequiredPct Percentage of yeas in casted votes for a vote to succeed (expressed as a percentage of 10^18; eg. 10^16 = 1%, 10^18 = 100%)\n    * @param _minAcceptQuorumPct Percentage of yeas in total possible votes for a vote to succeed (expressed as a percentage of 10^18; eg. 10^16 = 1%, 10^18 = 100%)\n    * @param _voteTime Seconds that a vote will be open for token holders to vote (unless enough yeas or nays have been cast to make an early decision)\n    */\n    function initialize(\n        MiniMeToken _token,\n        uint64 _supportRequiredPct,\n        uint64 _minAcceptQuorumPct,\n        uint64 _voteTime\n    )\n        external\n        onlyInit\n    {\n        initialized();\n\n        require(_minAcceptQuorumPct <= _supportRequiredPct, ERROR_INIT_PCTS);\n        require(_supportRequiredPct < PCT_BASE, ERROR_INIT_SUPPORT_TOO_BIG);\n\n        token = _token;\n        supportRequiredPct = _supportRequiredPct;\n        minAcceptQuorumPct = _minAcceptQuorumPct;\n        voteTime = _voteTime;\n    }\n\n    /**\n    * @notice Change required support to `@formatPct(_supportRequiredPct)`%\n    * @param _supportRequiredPct New required support\n    */\n    function changeSupportRequiredPct(uint64 _supportRequiredPct)\n        external\n        authP(MODIFY_SUPPORT_ROLE, arr(uint256(_supportRequiredPct), uint256(supportRequiredPct)))\n    {\n        require(minAcceptQuorumPct <= _supportRequiredPct, ERROR_CHANGE_SUPPORT_PCTS);\n        require(_supportRequiredPct < PCT_BASE, ERROR_CHANGE_SUPPORT_TOO_BIG);\n        supportRequiredPct = _supportRequiredPct;\n\n        emit ChangeSupportRequired(_supportRequiredPct);\n    }\n\n    /**\n    * @notice Change minimum acceptance quorum to `@formatPct(_minAcceptQuorumPct)`%\n    * @param _minAcceptQuorumPct New acceptance quorum\n    */\n    function changeMinAcceptQuorumPct(uint64 _minAcceptQuorumPct)\n        external\n        authP(MODIFY_QUORUM_ROLE, arr(uint256(_minAcceptQuorumPct), uint256(minAcceptQuorumPct)))\n    {\n        require(_minAcceptQuorumPct <= supportRequiredPct, ERROR_CHANGE_QUORUM_PCTS);\n        minAcceptQuorumPct = _minAcceptQuorumPct;\n\n        emit ChangeMinQuorum(_minAcceptQuorumPct);\n    }\n\n    /**\n    * @notice Create a new vote about \"`_metadata`\"\n    * @param _executionScript EVM script to be executed on approval\n    * @param _metadata Vote metadata\n    * @return voteId Id for newly created vote\n    */\n    function newVote(bytes _executionScript, string _metadata) external auth(CREATE_VOTES_ROLE) returns (uint256 voteId) {\n        return _newVote(_executionScript, _metadata, true, true);\n    }\n\n    /**\n    * @notice Create a new vote about \"`_metadata`\"\n    * @param _executionScript EVM script to be executed on approval\n    * @param _metadata Vote metadata\n    * @param _castVote Whether to also cast newly created vote\n    * @param _executesIfDecided Whether to also immediately execute newly created vote if decided\n    * @return voteId id for newly created vote\n    */\n    function newVote(bytes _executionScript, string _metadata, bool _castVote, bool _executesIfDecided)\n        external\n        auth(CREATE_VOTES_ROLE)\n        returns (uint256 voteId)\n    {\n        return _newVote(_executionScript, _metadata, _castVote, _executesIfDecided);\n    }\n\n    /**\n    * @notice Vote `_supports ? 'yes' : 'no'` in vote #`_voteId`\n    * @dev Initialization check is implicitly provided by `voteExists()` as new votes can only be\n    *      created via `newVote(),` which requires initialization\n    * @param _voteId Id for vote\n    * @param _supports Whether voter supports the vote\n    * @param _executesIfDecided Whether the vote should execute its action if it becomes decided\n    */\n    function vote(uint256 _voteId, bool _supports, bool _executesIfDecided) external voteExists(_voteId) {\n        require(_canVote(_voteId, msg.sender), ERROR_CAN_NOT_VOTE);\n        _vote(_voteId, _supports, msg.sender, _executesIfDecided);\n    }\n\n    /**\n    * @notice Execute vote #`_voteId`\n    * @dev Initialization check is implicitly provided by `voteExists()` as new votes can only be\n    *      created via `newVote(),` which requires initialization\n    * @param _voteId Id for vote\n    */\n    function executeVote(uint256 _voteId) external voteExists(_voteId) {\n        _executeVote(_voteId);\n    }\n\n    // Forwarding fns\n\n    function isForwarder() external pure returns (bool) {\n        return true;\n    }\n\n    /**\n    * @notice Creates a vote to execute the desired action, and casts a support vote if possible\n    * @dev IForwarder interface conformance\n    * @param _evmScript Start vote with script\n    */\n    function forward(bytes _evmScript) public {\n        require(canForward(msg.sender, _evmScript), ERROR_CAN_NOT_FORWARD);\n        _newVote(_evmScript, \"\", true, true);\n    }\n\n    function canForward(address _sender, bytes) public view returns (bool) {\n        // Note that `canPerform()` implicitly does an initialization check itself\n        return canPerform(_sender, CREATE_VOTES_ROLE, arr());\n    }\n\n    // Getter fns\n\n    /**\n    * @dev Initialization check is implicitly provided by `voteExists()` as new votes can only be\n    *      created via `newVote(),` which requires initialization\n    */\n    function canExecute(uint256 _voteId) public view voteExists(_voteId) returns (bool) {\n        return _canExecute(_voteId);\n    }\n\n    /**\n    * @dev Initialization check is implicitly provided by `voteExists()` as new votes can only be\n    *      created via `newVote(),` which requires initialization\n    */\n    function canVote(uint256 _voteId, address _voter) public view voteExists(_voteId) returns (bool) {\n        return _canVote(_voteId, _voter);\n    }\n\n    function getVote(uint256 _voteId)\n        public\n        view\n        voteExists(_voteId)\n        returns (\n            bool open,\n            bool executed,\n            uint64 startDate,\n            uint64 snapshotBlock,\n            uint64 supportRequired,\n            uint64 minAcceptQuorum,\n            uint256 yea,\n            uint256 nay,\n            uint256 votingPower,\n            bytes script\n        )\n    {\n        Vote storage vote_ = votes[_voteId];\n\n        open = _isVoteOpen(vote_);\n        executed = vote_.executed;\n        startDate = vote_.startDate;\n        snapshotBlock = vote_.snapshotBlock;\n        supportRequired = vote_.supportRequiredPct;\n        minAcceptQuorum = vote_.minAcceptQuorumPct;\n        yea = vote_.yea;\n        nay = vote_.nay;\n        votingPower = vote_.votingPower;\n        script = vote_.executionScript;\n    }\n\n    function getVoterState(uint256 _voteId, address _voter) public view voteExists(_voteId) returns (VoterState) {\n        return votes[_voteId].voters[_voter];\n    }\n\n    // Internal fns\n\n    function _newVote(bytes _executionScript, string _metadata, bool _castVote, bool _executesIfDecided)\n        internal\n        returns (uint256 voteId)\n    {\n        uint64 snapshotBlock = getBlockNumber64() - 1; // avoid double voting in this very block\n        uint256 votingPower = token.totalSupplyAt(snapshotBlock);\n        require(votingPower > 0, ERROR_NO_VOTING_POWER);\n\n        voteId = votesLength++;\n\n        Vote storage vote_ = votes[voteId];\n        vote_.startDate = getTimestamp64();\n        vote_.snapshotBlock = snapshotBlock;\n        vote_.supportRequiredPct = supportRequiredPct;\n        vote_.minAcceptQuorumPct = minAcceptQuorumPct;\n        vote_.votingPower = votingPower;\n        vote_.executionScript = _executionScript;\n\n        emit StartVote(voteId, msg.sender, _metadata);\n\n        if (_castVote && _canVote(voteId, msg.sender)) {\n            _vote(voteId, true, msg.sender, _executesIfDecided);\n        }\n    }\n\n    function _vote(\n        uint256 _voteId,\n        bool _supports,\n        address _voter,\n        bool _executesIfDecided\n    ) internal\n    {\n        Vote storage vote_ = votes[_voteId];\n\n        // This could re-enter, though we can assume the governance token is not malicious\n        uint256 voterStake = token.balanceOfAt(_voter, vote_.snapshotBlock);\n        VoterState state = vote_.voters[_voter];\n\n        // If voter had previously voted, decrease count\n        if (state == VoterState.Yea) {\n            vote_.yea = vote_.yea.sub(voterStake);\n        } else if (state == VoterState.Nay) {\n            vote_.nay = vote_.nay.sub(voterStake);\n        }\n\n        if (_supports) {\n            vote_.yea = vote_.yea.add(voterStake);\n        } else {\n            vote_.nay = vote_.nay.add(voterStake);\n        }\n\n        vote_.voters[_voter] = _supports ? VoterState.Yea : VoterState.Nay;\n\n        emit CastVote(_voteId, _voter, _supports, voterStake);\n\n        if (_executesIfDecided && _canExecute(_voteId)) {\n            // We've already checked if the vote can be executed with `_canExecute()`\n            _unsafeExecuteVote(_voteId);\n        }\n    }\n\n    function _executeVote(uint256 _voteId) internal {\n        require(_canExecute(_voteId), ERROR_CAN_NOT_EXECUTE);\n        _unsafeExecuteVote(_voteId);\n    }\n\n    /**\n    * @dev Unsafe version of _executeVote that assumes you have already checked if the vote can be executed\n    */\n    function _unsafeExecuteVote(uint256 _voteId) internal {\n        Vote storage vote_ = votes[_voteId];\n\n        vote_.executed = true;\n\n        bytes memory input = new bytes(0); // TODO: Consider input for voting scripts\n        runScript(vote_.executionScript, input, new address[](0));\n\n        emit ExecuteVote(_voteId);\n    }\n\n    function _canExecute(uint256 _voteId) internal view returns (bool) {\n        Vote storage vote_ = votes[_voteId];\n\n        if (vote_.executed) {\n            return false;\n        }\n\n        // Voting is already decided\n        if (_isValuePct(vote_.yea, vote_.votingPower, vote_.supportRequiredPct)) {\n            return true;\n        }\n\n        // Vote ended?\n        if (_isVoteOpen(vote_)) {\n            return false;\n        }\n        // Has enough support?\n        uint256 totalVotes = vote_.yea.add(vote_.nay);\n        if (!_isValuePct(vote_.yea, totalVotes, vote_.supportRequiredPct)) {\n            return false;\n        }\n        // Has min quorum?\n        if (!_isValuePct(vote_.yea, vote_.votingPower, vote_.minAcceptQuorumPct)) {\n            return false;\n        }\n\n        return true;\n    }\n\n    function _canVote(uint256 _voteId, address _voter) internal view returns (bool) {\n        Vote storage vote_ = votes[_voteId];\n\n        return _isVoteOpen(vote_) && token.balanceOfAt(_voter, vote_.snapshotBlock) > 0;\n    }\n\n    function _isVoteOpen(Vote storage vote_) internal view returns (bool) {\n        return getTimestamp64() < vote_.startDate.add(voteTime) && !vote_.executed;\n    }\n\n    /**\n    * @dev Calculates whether `_value` is more than a percentage `_pct` of `_total`\n    */\n    function _isValuePct(uint256 _value, uint256 _total, uint256 _pct) internal pure returns (bool) {\n        if (_total == 0) {\n            return false;\n        }\n\n        uint256 computedPct = _value.mul(PCT_BASE) / _total;\n        return computedPct > _pct;\n    }\n}\n",
  "sourcePath": "@aragon/apps-voting/contracts/Voting.sol",
  "ast": {
    "absolutePath": "@aragon/apps-voting/contracts/Voting.sol",
    "exportedSymbols": {
      "Voting": [
        3488
      ]
    },
    "id": 3489,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 2505,
        "literals": [
          "solidity",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "57:23:10"
      },
      {
        "absolutePath": "@aragon/os/contracts/apps/AragonApp.sol",
        "file": "@aragon/os/contracts/apps/AragonApp.sol",
        "id": 2506,
        "nodeType": "ImportDirective",
        "scope": 3489,
        "sourceUnit": 6121,
        "src": "82:49:10",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/common/IForwarder.sol",
        "file": "@aragon/os/contracts/common/IForwarder.sol",
        "id": 2507,
        "nodeType": "ImportDirective",
        "scope": 3489,
        "sourceUnit": 6316,
        "src": "132:52:10",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/lib/math/SafeMath.sol",
        "file": "@aragon/os/contracts/lib/math/SafeMath.sol",
        "id": 2508,
        "nodeType": "ImportDirective",
        "scope": 3489,
        "sourceUnit": 9696,
        "src": "186:52:10",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/lib/math/SafeMath64.sol",
        "file": "@aragon/os/contracts/lib/math/SafeMath64.sol",
        "id": 2509,
        "nodeType": "ImportDirective",
        "scope": 3489,
        "sourceUnit": 9838,
        "src": "239:54:10",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/apps-shared-minime/contracts/MiniMeToken.sol",
        "file": "@aragon/apps-shared-minime/contracts/MiniMeToken.sol",
        "id": 2510,
        "nodeType": "ImportDirective",
        "scope": 3489,
        "sourceUnit": 2504,
        "src": "295:62:10",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 2511,
              "name": "IForwarder",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 6315,
              "src": "379:10:10",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IForwarder_$6315",
                "typeString": "contract IForwarder"
              }
            },
            "id": 2512,
            "nodeType": "InheritanceSpecifier",
            "src": "379:10:10"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 2513,
              "name": "AragonApp",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 6120,
              "src": "391:9:10",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_AragonApp_$6120",
                "typeString": "contract AragonApp"
              }
            },
            "id": 2514,
            "nodeType": "InheritanceSpecifier",
            "src": "391:9:10"
          }
        ],
        "contractDependencies": [
          5208,
          5996,
          6120,
          6133,
          6293,
          6315,
          6343,
          6441,
          6469,
          6502,
          6539,
          6831,
          7053,
          7454,
          7481,
          8745
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 3488,
        "linearizedBaseContracts": [
          3488,
          6120,
          5208,
          7454,
          8745,
          7481,
          6539,
          7053,
          6469,
          6293,
          6343,
          6133,
          6502,
          6441,
          6831,
          5996,
          6315
        ],
        "name": "Voting",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 2517,
            "libraryName": {
              "contractScope": null,
              "id": 2515,
              "name": "SafeMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 9695,
              "src": "413:8:10",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SafeMath_$9695",
                "typeString": "library SafeMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "407:27:10",
            "typeName": {
              "id": 2516,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "426:7:10",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "id": 2520,
            "libraryName": {
              "contractScope": null,
              "id": 2518,
              "name": "SafeMath64",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 9837,
              "src": "445:10:10",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SafeMath64_$9837",
                "typeString": "library SafeMath64"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "439:28:10",
            "typeName": {
              "id": 2519,
              "name": "uint64",
              "nodeType": "ElementaryTypeName",
              "src": "460:6:10",
              "typeDescriptions": {
                "typeIdentifier": "t_uint64",
                "typeString": "uint64"
              }
            }
          },
          {
            "constant": true,
            "id": 2525,
            "name": "CREATE_VOTES_ROLE",
            "nodeType": "VariableDeclaration",
            "scope": 3488,
            "src": "473:74:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 2521,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "473:7:10",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "argumentTypes": null,
              "arguments": [
                {
                  "argumentTypes": null,
                  "hexValue": "4352454154455f564f5445535f524f4c45",
                  "id": 2523,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "string",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "527:19:10",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_stringliteral_e7dcd7275292e064d090fbc5f3bd7995be23b502c1fed5cd94cfddbbdcd32bbc",
                    "typeString": "literal_string \"CREATE_VOTES_ROLE\""
                  },
                  "value": "CREATE_VOTES_ROLE"
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_stringliteral_e7dcd7275292e064d090fbc5f3bd7995be23b502c1fed5cd94cfddbbdcd32bbc",
                    "typeString": "literal_string \"CREATE_VOTES_ROLE\""
                  }
                ],
                "id": 2522,
                "name": "keccak256",
                "nodeType": "Identifier",
                "overloadedDeclarations": [],
                "referencedDeclaration": 10398,
                "src": "517:9:10",
                "typeDescriptions": {
                  "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                  "typeString": "function () pure returns (bytes32)"
                }
              },
              "id": 2524,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "functionCall",
              "lValueRequested": false,
              "names": [],
              "nodeType": "FunctionCall",
              "src": "517:30:10",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 2530,
            "name": "MODIFY_SUPPORT_ROLE",
            "nodeType": "VariableDeclaration",
            "scope": 3488,
            "src": "553:78:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 2526,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "553:7:10",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "argumentTypes": null,
              "arguments": [
                {
                  "argumentTypes": null,
                  "hexValue": "4d4f444946595f535550504f52545f524f4c45",
                  "id": 2528,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "string",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "609:21:10",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_stringliteral_da3972983e62bdf826c4b807c4c9c2b8a941e1f83dfa76d53d6aeac11e1be650",
                    "typeString": "literal_string \"MODIFY_SUPPORT_ROLE\""
                  },
                  "value": "MODIFY_SUPPORT_ROLE"
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_stringliteral_da3972983e62bdf826c4b807c4c9c2b8a941e1f83dfa76d53d6aeac11e1be650",
                    "typeString": "literal_string \"MODIFY_SUPPORT_ROLE\""
                  }
                ],
                "id": 2527,
                "name": "keccak256",
                "nodeType": "Identifier",
                "overloadedDeclarations": [],
                "referencedDeclaration": 10398,
                "src": "599:9:10",
                "typeDescriptions": {
                  "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                  "typeString": "function () pure returns (bytes32)"
                }
              },
              "id": 2529,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "functionCall",
              "lValueRequested": false,
              "names": [],
              "nodeType": "FunctionCall",
              "src": "599:32:10",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 2535,
            "name": "MODIFY_QUORUM_ROLE",
            "nodeType": "VariableDeclaration",
            "scope": 3488,
            "src": "637:76:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 2531,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "637:7:10",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "argumentTypes": null,
              "arguments": [
                {
                  "argumentTypes": null,
                  "hexValue": "4d4f444946595f51554f52554d5f524f4c45",
                  "id": 2533,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "string",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "692:20:10",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_stringliteral_ad15e7261800b4bb73f1b69d3864565ffb1fd00cb93cf14fe48da8f1f2149f39",
                    "typeString": "literal_string \"MODIFY_QUORUM_ROLE\""
                  },
                  "value": "MODIFY_QUORUM_ROLE"
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_stringliteral_ad15e7261800b4bb73f1b69d3864565ffb1fd00cb93cf14fe48da8f1f2149f39",
                    "typeString": "literal_string \"MODIFY_QUORUM_ROLE\""
                  }
                ],
                "id": 2532,
                "name": "keccak256",
                "nodeType": "Identifier",
                "overloadedDeclarations": [],
                "referencedDeclaration": 10398,
                "src": "682:9:10",
                "typeDescriptions": {
                  "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                  "typeString": "function () pure returns (bytes32)"
                }
              },
              "id": 2534,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "functionCall",
              "lValueRequested": false,
              "names": [],
              "nodeType": "FunctionCall",
              "src": "682:31:10",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 2540,
            "name": "PCT_BASE",
            "nodeType": "VariableDeclaration",
            "scope": 3488,
            "src": "720:42:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint64",
              "typeString": "uint64"
            },
            "typeName": {
              "id": 2536,
              "name": "uint64",
              "nodeType": "ElementaryTypeName",
              "src": "720:6:10",
              "typeDescriptions": {
                "typeIdentifier": "t_uint64",
                "typeString": "uint64"
              }
            },
            "value": {
              "argumentTypes": null,
              "commonType": {
                "typeIdentifier": "t_rational_1000000000000000000_by_1",
                "typeString": "int_const 1000000000000000000"
              },
              "id": 2539,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "lValueRequested": false,
              "leftExpression": {
                "argumentTypes": null,
                "hexValue": "3130",
                "id": 2537,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "754:2:10",
                "subdenomination": null,
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_10_by_1",
                  "typeString": "int_const 10"
                },
                "value": "10"
              },
              "nodeType": "BinaryOperation",
              "operator": "**",
              "rightExpression": {
                "argumentTypes": null,
                "hexValue": "3138",
                "id": 2538,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "760:2:10",
                "subdenomination": null,
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_18_by_1",
                  "typeString": "int_const 18"
                },
                "value": "18"
              },
              "src": "754:8:10",
              "typeDescriptions": {
                "typeIdentifier": "t_rational_1000000000000000000_by_1",
                "typeString": "int_const 1000000000000000000"
              }
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 2543,
            "name": "ERROR_NO_VOTE",
            "nodeType": "VariableDeclaration",
            "scope": 3488,
            "src": "805:56:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 2541,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "805:6:10",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "564f54494e475f4e4f5f564f5445",
              "id": 2542,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "845:16:10",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_d4e7a378565f7e8724f3afe49b49b5b53d55c8b85ecc478c539d5f3066c466ca",
                "typeString": "literal_string \"VOTING_NO_VOTE\""
              },
              "value": "VOTING_NO_VOTE"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 2546,
            "name": "ERROR_INIT_PCTS",
            "nodeType": "VariableDeclaration",
            "scope": 3488,
            "src": "867:60:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 2544,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "867:6:10",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "564f54494e475f494e49545f50435453",
              "id": 2545,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "909:18:10",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_6fe3353225d510c9f38bcc5cb3371a9eabd299213c6c415b56b641a75492373f",
                "typeString": "literal_string \"VOTING_INIT_PCTS\""
              },
              "value": "VOTING_INIT_PCTS"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 2549,
            "name": "ERROR_CHANGE_SUPPORT_PCTS",
            "nodeType": "VariableDeclaration",
            "scope": 3488,
            "src": "933:80:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 2547,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "933:6:10",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "564f54494e475f4348414e47455f535550504f52545f50435453",
              "id": 2548,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "985:28:10",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_bbce4f9de9ad252169867334bbc95c973030be8d4534544eaa1c1893e434472b",
                "typeString": "literal_string \"VOTING_CHANGE_SUPPORT_PCTS\""
              },
              "value": "VOTING_CHANGE_SUPPORT_PCTS"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 2552,
            "name": "ERROR_CHANGE_QUORUM_PCTS",
            "nodeType": "VariableDeclaration",
            "scope": 3488,
            "src": "1019:78:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 2550,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1019:6:10",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "564f54494e475f4348414e47455f51554f52554d5f50435453",
              "id": 2551,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1070:27:10",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_5779a0804ef26050aed8e7ea88d8cfab54776e2b6d5815a5484e86fbdf3b4ec6",
                "typeString": "literal_string \"VOTING_CHANGE_QUORUM_PCTS\""
              },
              "value": "VOTING_CHANGE_QUORUM_PCTS"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 2555,
            "name": "ERROR_INIT_SUPPORT_TOO_BIG",
            "nodeType": "VariableDeclaration",
            "scope": 3488,
            "src": "1103:82:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 2553,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1103:6:10",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "564f54494e475f494e49545f535550504f52545f544f4f5f424947",
              "id": 2554,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1156:29:10",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_a9d8ceb2f2cc9646add9d9405c6f276fc989687a807d2879d7d034c0d4141b54",
                "typeString": "literal_string \"VOTING_INIT_SUPPORT_TOO_BIG\""
              },
              "value": "VOTING_INIT_SUPPORT_TOO_BIG"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 2558,
            "name": "ERROR_CHANGE_SUPPORT_TOO_BIG",
            "nodeType": "VariableDeclaration",
            "scope": 3488,
            "src": "1191:83:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 2556,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1191:6:10",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "564f54494e475f4348414e47455f535550505f544f4f5f424947",
              "id": 2557,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1246:28:10",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_a988aaf15f02d48924f860af070bbe949ae7d371d3f97038169697e9a200fc4d",
                "typeString": "literal_string \"VOTING_CHANGE_SUPP_TOO_BIG\""
              },
              "value": "VOTING_CHANGE_SUPP_TOO_BIG"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 2561,
            "name": "ERROR_CAN_NOT_VOTE",
            "nodeType": "VariableDeclaration",
            "scope": 3488,
            "src": "1280:66:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 2559,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1280:6:10",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "564f54494e475f43414e5f4e4f545f564f5445",
              "id": 2560,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1325:21:10",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_d15ecba3c2de6be04ae931794f9dbe722fd5f34858b1288ba9910becaae808d3",
                "typeString": "literal_string \"VOTING_CAN_NOT_VOTE\""
              },
              "value": "VOTING_CAN_NOT_VOTE"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 2564,
            "name": "ERROR_CAN_NOT_EXECUTE",
            "nodeType": "VariableDeclaration",
            "scope": 3488,
            "src": "1352:72:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 2562,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1352:6:10",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "564f54494e475f43414e5f4e4f545f45584543555445",
              "id": 2563,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1400:24:10",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_a71d666a1ee845f244a2074cc2a52f257c6da2ad8ed26b4f88ad787af060b34c",
                "typeString": "literal_string \"VOTING_CAN_NOT_EXECUTE\""
              },
              "value": "VOTING_CAN_NOT_EXECUTE"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 2567,
            "name": "ERROR_CAN_NOT_FORWARD",
            "nodeType": "VariableDeclaration",
            "scope": 3488,
            "src": "1430:72:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 2565,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1430:6:10",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "564f54494e475f43414e5f4e4f545f464f5257415244",
              "id": 2566,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1478:24:10",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_43bc53280d1b3f609b6645415cebcf10834d13c5f6dbdfe2aa9d66ed459b806a",
                "typeString": "literal_string \"VOTING_CAN_NOT_FORWARD\""
              },
              "value": "VOTING_CAN_NOT_FORWARD"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 2570,
            "name": "ERROR_NO_VOTING_POWER",
            "nodeType": "VariableDeclaration",
            "scope": 3488,
            "src": "1508:72:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 2568,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1508:6:10",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "564f54494e475f4e4f5f564f54494e475f504f574552",
              "id": 2569,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1556:24:10",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_57804431f2c60d894b28e15e405d13c19f770b55e55030aa1c36d64decde578f",
                "typeString": "literal_string \"VOTING_NO_VOTING_POWER\""
              },
              "value": "VOTING_NO_VOTING_POWER"
            },
            "visibility": "private"
          },
          {
            "canonicalName": "Voting.VoterState",
            "id": 2574,
            "members": [
              {
                "id": 2571,
                "name": "Absent",
                "nodeType": "EnumValue",
                "src": "1605:6:10"
              },
              {
                "id": 2572,
                "name": "Yea",
                "nodeType": "EnumValue",
                "src": "1613:3:10"
              },
              {
                "id": 2573,
                "name": "Nay",
                "nodeType": "EnumValue",
                "src": "1618:3:10"
              }
            ],
            "name": "VoterState",
            "nodeType": "EnumDefinition",
            "src": "1587:36:10"
          },
          {
            "canonicalName": "Voting.Vote",
            "id": 2597,
            "members": [
              {
                "constant": false,
                "id": 2576,
                "name": "executed",
                "nodeType": "VariableDeclaration",
                "scope": 2597,
                "src": "1651:13:10",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                },
                "typeName": {
                  "id": 2575,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "1651:4:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2578,
                "name": "startDate",
                "nodeType": "VariableDeclaration",
                "scope": 2597,
                "src": "1674:16:10",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint64",
                  "typeString": "uint64"
                },
                "typeName": {
                  "id": 2577,
                  "name": "uint64",
                  "nodeType": "ElementaryTypeName",
                  "src": "1674:6:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2580,
                "name": "snapshotBlock",
                "nodeType": "VariableDeclaration",
                "scope": 2597,
                "src": "1700:20:10",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint64",
                  "typeString": "uint64"
                },
                "typeName": {
                  "id": 2579,
                  "name": "uint64",
                  "nodeType": "ElementaryTypeName",
                  "src": "1700:6:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2582,
                "name": "supportRequiredPct",
                "nodeType": "VariableDeclaration",
                "scope": 2597,
                "src": "1730:25:10",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint64",
                  "typeString": "uint64"
                },
                "typeName": {
                  "id": 2581,
                  "name": "uint64",
                  "nodeType": "ElementaryTypeName",
                  "src": "1730:6:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2584,
                "name": "minAcceptQuorumPct",
                "nodeType": "VariableDeclaration",
                "scope": 2597,
                "src": "1765:25:10",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint64",
                  "typeString": "uint64"
                },
                "typeName": {
                  "id": 2583,
                  "name": "uint64",
                  "nodeType": "ElementaryTypeName",
                  "src": "1765:6:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2586,
                "name": "yea",
                "nodeType": "VariableDeclaration",
                "scope": 2597,
                "src": "1800:11:10",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 2585,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1800:7:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2588,
                "name": "nay",
                "nodeType": "VariableDeclaration",
                "scope": 2597,
                "src": "1821:11:10",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 2587,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1821:7:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2590,
                "name": "votingPower",
                "nodeType": "VariableDeclaration",
                "scope": 2597,
                "src": "1842:19:10",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 2589,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1842:7:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2592,
                "name": "executionScript",
                "nodeType": "VariableDeclaration",
                "scope": 2597,
                "src": "1871:21:10",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes_storage_ptr",
                  "typeString": "bytes"
                },
                "typeName": {
                  "id": 2591,
                  "name": "bytes",
                  "nodeType": "ElementaryTypeName",
                  "src": "1871:5:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_storage_ptr",
                    "typeString": "bytes"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2596,
                "name": "voters",
                "nodeType": "VariableDeclaration",
                "scope": 2597,
                "src": "1902:38:10",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_enum$_VoterState_$2574_$",
                  "typeString": "mapping(address => enum Voting.VoterState)"
                },
                "typeName": {
                  "id": 2595,
                  "keyType": {
                    "id": 2593,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1911:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "1902:31:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_enum$_VoterState_$2574_$",
                    "typeString": "mapping(address => enum Voting.VoterState)"
                  },
                  "valueType": {
                    "contractScope": null,
                    "id": 2594,
                    "name": "VoterState",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2574,
                    "src": "1922:10:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_VoterState_$2574",
                      "typeString": "enum Voting.VoterState"
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Vote",
            "nodeType": "StructDefinition",
            "scope": 3488,
            "src": "1629:318:10",
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2599,
            "name": "token",
            "nodeType": "VariableDeclaration",
            "scope": 3488,
            "src": "1953:24:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_MiniMeToken_$2462",
              "typeString": "contract MiniMeToken"
            },
            "typeName": {
              "contractScope": null,
              "id": 2598,
              "name": "MiniMeToken",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 2462,
              "src": "1953:11:10",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_MiniMeToken_$2462",
                "typeString": "contract MiniMeToken"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2601,
            "name": "supportRequiredPct",
            "nodeType": "VariableDeclaration",
            "scope": 3488,
            "src": "1983:32:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint64",
              "typeString": "uint64"
            },
            "typeName": {
              "id": 2600,
              "name": "uint64",
              "nodeType": "ElementaryTypeName",
              "src": "1983:6:10",
              "typeDescriptions": {
                "typeIdentifier": "t_uint64",
                "typeString": "uint64"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2603,
            "name": "minAcceptQuorumPct",
            "nodeType": "VariableDeclaration",
            "scope": 3488,
            "src": "2021:32:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint64",
              "typeString": "uint64"
            },
            "typeName": {
              "id": 2602,
              "name": "uint64",
              "nodeType": "ElementaryTypeName",
              "src": "2021:6:10",
              "typeDescriptions": {
                "typeIdentifier": "t_uint64",
                "typeString": "uint64"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2605,
            "name": "voteTime",
            "nodeType": "VariableDeclaration",
            "scope": 3488,
            "src": "2059:22:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint64",
              "typeString": "uint64"
            },
            "typeName": {
              "id": 2604,
              "name": "uint64",
              "nodeType": "ElementaryTypeName",
              "src": "2059:6:10",
              "typeDescriptions": {
                "typeIdentifier": "t_uint64",
                "typeString": "uint64"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2609,
            "name": "votes",
            "nodeType": "VariableDeclaration",
            "scope": 3488,
            "src": "2180:40:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Vote_$2597_storage_$",
              "typeString": "mapping(uint256 => struct Voting.Vote)"
            },
            "typeName": {
              "id": 2608,
              "keyType": {
                "id": 2606,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "2189:7:10",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "nodeType": "Mapping",
              "src": "2180:25:10",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Vote_$2597_storage_$",
                "typeString": "mapping(uint256 => struct Voting.Vote)"
              },
              "valueType": {
                "contractScope": null,
                "id": 2607,
                "name": "Vote",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 2597,
                "src": "2200:4:10",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                  "typeString": "struct Voting.Vote"
                }
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 2611,
            "name": "votesLength",
            "nodeType": "VariableDeclaration",
            "scope": 3488,
            "src": "2226:26:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2610,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "2226:7:10",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 2619,
            "name": "StartVote",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2618,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2613,
                  "indexed": true,
                  "name": "voteId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2619,
                  "src": "2275:22:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2612,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2275:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2615,
                  "indexed": true,
                  "name": "creator",
                  "nodeType": "VariableDeclaration",
                  "scope": 2619,
                  "src": "2299:23:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2614,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2299:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2617,
                  "indexed": false,
                  "name": "metadata",
                  "nodeType": "VariableDeclaration",
                  "scope": 2619,
                  "src": "2324:15:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2616,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2324:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2274:66:10"
            },
            "src": "2259:82:10"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 2629,
            "name": "CastVote",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2628,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2621,
                  "indexed": true,
                  "name": "voteId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2629,
                  "src": "2361:22:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2620,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2361:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2623,
                  "indexed": true,
                  "name": "voter",
                  "nodeType": "VariableDeclaration",
                  "scope": 2629,
                  "src": "2385:21:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2622,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2385:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2625,
                  "indexed": false,
                  "name": "supports",
                  "nodeType": "VariableDeclaration",
                  "scope": 2629,
                  "src": "2408:13:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2624,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2408:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2627,
                  "indexed": false,
                  "name": "stake",
                  "nodeType": "VariableDeclaration",
                  "scope": 2629,
                  "src": "2423:13:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2626,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2423:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2360:77:10"
            },
            "src": "2346:92:10"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 2633,
            "name": "ExecuteVote",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2632,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2631,
                  "indexed": true,
                  "name": "voteId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2633,
                  "src": "2461:22:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2630,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2461:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2460:24:10"
            },
            "src": "2443:42:10"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 2637,
            "name": "ChangeSupportRequired",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2636,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2635,
                  "indexed": false,
                  "name": "supportRequiredPct",
                  "nodeType": "VariableDeclaration",
                  "scope": 2637,
                  "src": "2518:25:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 2634,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "2518:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2517:27:10"
            },
            "src": "2490:55:10"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 2641,
            "name": "ChangeMinQuorum",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2640,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2639,
                  "indexed": false,
                  "name": "minAcceptQuorumPct",
                  "nodeType": "VariableDeclaration",
                  "scope": 2641,
                  "src": "2572:25:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 2638,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "2572:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2571:27:10"
            },
            "src": "2550:49:10"
          },
          {
            "body": {
              "id": 2653,
              "nodeType": "Block",
              "src": "2642:73:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2648,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 2646,
                          "name": "_voteId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2643,
                          "src": "2660:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 2647,
                          "name": "votesLength",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2611,
                          "src": "2670:11:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2660:21:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2649,
                        "name": "ERROR_NO_VOTE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2543,
                        "src": "2683:13:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 2645,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        10407,
                        10408
                      ],
                      "referencedDeclaration": 10408,
                      "src": "2652:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2650,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2652:45:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2651,
                  "nodeType": "ExpressionStatement",
                  "src": "2652:45:10"
                },
                {
                  "id": 2652,
                  "nodeType": "PlaceholderStatement",
                  "src": "2707:1:10"
                }
              ]
            },
            "documentation": null,
            "id": 2654,
            "name": "voteExists",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 2644,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2643,
                  "name": "_voteId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2654,
                  "src": "2625:15:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2642,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2625:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2624:17:10"
            },
            "src": "2605:110:10",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2700,
              "nodeType": "Block",
              "src": "3734:341:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 2667,
                      "name": "initialized",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6426,
                      "src": "3744:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 2668,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3744:13:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2669,
                  "nodeType": "ExpressionStatement",
                  "src": "3744:13:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "id": 2673,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 2671,
                          "name": "_minAcceptQuorumPct",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2660,
                          "src": "3776:19:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 2672,
                          "name": "_supportRequiredPct",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2658,
                          "src": "3799:19:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "src": "3776:42:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2674,
                        "name": "ERROR_INIT_PCTS",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2546,
                        "src": "3820:15:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 2670,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        10407,
                        10408
                      ],
                      "referencedDeclaration": 10408,
                      "src": "3768:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2675,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3768:68:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2676,
                  "nodeType": "ExpressionStatement",
                  "src": "3768:68:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "id": 2680,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 2678,
                          "name": "_supportRequiredPct",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2658,
                          "src": "3854:19:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 2679,
                          "name": "PCT_BASE",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2540,
                          "src": "3876:8:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "src": "3854:30:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2681,
                        "name": "ERROR_INIT_SUPPORT_TOO_BIG",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2555,
                        "src": "3886:26:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 2677,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        10407,
                        10408
                      ],
                      "referencedDeclaration": 10408,
                      "src": "3846:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2682,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3846:67:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2683,
                  "nodeType": "ExpressionStatement",
                  "src": "3846:67:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2686,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2684,
                      "name": "token",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2599,
                      "src": "3924:5:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_MiniMeToken_$2462",
                        "typeString": "contract MiniMeToken"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2685,
                      "name": "_token",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2656,
                      "src": "3932:6:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_MiniMeToken_$2462",
                        "typeString": "contract MiniMeToken"
                      }
                    },
                    "src": "3924:14:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_MiniMeToken_$2462",
                      "typeString": "contract MiniMeToken"
                    }
                  },
                  "id": 2687,
                  "nodeType": "ExpressionStatement",
                  "src": "3924:14:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2690,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2688,
                      "name": "supportRequiredPct",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2601,
                      "src": "3948:18:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2689,
                      "name": "_supportRequiredPct",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2658,
                      "src": "3969:19:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "src": "3948:40:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "id": 2691,
                  "nodeType": "ExpressionStatement",
                  "src": "3948:40:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2694,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2692,
                      "name": "minAcceptQuorumPct",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2603,
                      "src": "3998:18:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2693,
                      "name": "_minAcceptQuorumPct",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2660,
                      "src": "4019:19:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "src": "3998:40:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "id": 2695,
                  "nodeType": "ExpressionStatement",
                  "src": "3998:40:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2698,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2696,
                      "name": "voteTime",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2605,
                      "src": "4048:8:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2697,
                      "name": "_voteTime",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2662,
                      "src": "4059:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "src": "4048:20:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "id": 2699,
                  "nodeType": "ExpressionStatement",
                  "src": "4048:20:10"
                }
              ]
            },
            "documentation": "@notice Initialize Voting app with `_token.symbol(): string` for governance, minimum support of `@formatPct(_supportRequiredPct)`%, minimum acceptance quorum of `@formatPct(_minAcceptQuorumPct)`%, and a voting duration of `@transformTime(_voteTime)`\n@param _token MiniMeToken Address that will be used as governance token\n@param _supportRequiredPct Percentage of yeas in casted votes for a vote to succeed (expressed as a percentage of 10^18; eg. 10^16 = 1%, 10^18 = 100%)\n@param _minAcceptQuorumPct Percentage of yeas in total possible votes for a vote to succeed (expressed as a percentage of 10^18; eg. 10^16 = 1%, 10^18 = 100%)\n@param _voteTime Seconds that a vote will be open for token holders to vote (unless enough yeas or nays have been cast to make an early decision)",
            "id": 2701,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 2665,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2664,
                  "name": "onlyInit",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 6373,
                  "src": "3721:8:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3721:8:10"
              }
            ],
            "name": "initialize",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2663,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2656,
                  "name": "_token",
                  "nodeType": "VariableDeclaration",
                  "scope": 2701,
                  "src": "3573:18:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_MiniMeToken_$2462",
                    "typeString": "contract MiniMeToken"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2655,
                    "name": "MiniMeToken",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2462,
                    "src": "3573:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_MiniMeToken_$2462",
                      "typeString": "contract MiniMeToken"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2658,
                  "name": "_supportRequiredPct",
                  "nodeType": "VariableDeclaration",
                  "scope": 2701,
                  "src": "3601:26:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 2657,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "3601:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2660,
                  "name": "_minAcceptQuorumPct",
                  "nodeType": "VariableDeclaration",
                  "scope": 2701,
                  "src": "3637:26:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 2659,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "3637:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2662,
                  "name": "_voteTime",
                  "nodeType": "VariableDeclaration",
                  "scope": 2701,
                  "src": "3673:16:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 2661,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "3673:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3563:132:10"
            },
            "payable": false,
            "returnParameters": {
              "id": 2666,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3734:0:10"
            },
            "scope": 3488,
            "src": "3544:531:10",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2739,
              "nodeType": "Block",
              "src": "4408:281:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "id": 2720,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 2718,
                          "name": "minAcceptQuorumPct",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2603,
                          "src": "4426:18:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 2719,
                          "name": "_supportRequiredPct",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2703,
                          "src": "4448:19:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "src": "4426:41:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2721,
                        "name": "ERROR_CHANGE_SUPPORT_PCTS",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2549,
                        "src": "4469:25:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 2717,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        10407,
                        10408
                      ],
                      "referencedDeclaration": 10408,
                      "src": "4418:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2722,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4418:77:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2723,
                  "nodeType": "ExpressionStatement",
                  "src": "4418:77:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "id": 2727,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 2725,
                          "name": "_supportRequiredPct",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2703,
                          "src": "4513:19:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 2726,
                          "name": "PCT_BASE",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2540,
                          "src": "4535:8:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "src": "4513:30:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2728,
                        "name": "ERROR_CHANGE_SUPPORT_TOO_BIG",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2558,
                        "src": "4545:28:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 2724,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        10407,
                        10408
                      ],
                      "referencedDeclaration": 10408,
                      "src": "4505:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2729,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4505:69:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2730,
                  "nodeType": "ExpressionStatement",
                  "src": "4505:69:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2733,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2731,
                      "name": "supportRequiredPct",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2601,
                      "src": "4584:18:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2732,
                      "name": "_supportRequiredPct",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2703,
                      "src": "4605:19:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "src": "4584:40:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "id": 2734,
                  "nodeType": "ExpressionStatement",
                  "src": "4584:40:10"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2736,
                        "name": "_supportRequiredPct",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2703,
                        "src": "4662:19:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      ],
                      "id": 2735,
                      "name": "ChangeSupportRequired",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2637,
                      "src": "4640:21:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$",
                        "typeString": "function (uint64)"
                      }
                    },
                    "id": 2737,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4640:42:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2738,
                  "nodeType": "EmitStatement",
                  "src": "4635:47:10"
                }
              ]
            },
            "documentation": "@notice Change required support to `@formatPct(_supportRequiredPct)`%\n@param _supportRequiredPct New required support",
            "id": 2740,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 2706,
                    "name": "MODIFY_SUPPORT_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2530,
                    "src": "4319:19:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2709,
                            "name": "_supportRequiredPct",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2703,
                            "src": "4352:19:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          ],
                          "id": 2708,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4344:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": "uint256"
                        },
                        "id": 2710,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4344:28:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2712,
                            "name": "supportRequiredPct",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2601,
                            "src": "4382:18:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          ],
                          "id": 2711,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4374:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": "uint256"
                        },
                        "id": 2713,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4374:27:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2707,
                      "name": "arr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4798,
                        4813,
                        4833,
                        4848,
                        4868,
                        4889,
                        4913,
                        4933,
                        4962,
                        4987,
                        5012,
                        5035,
                        5066,
                        5105,
                        5152,
                        5207
                      ],
                      "referencedDeclaration": 5066,
                      "src": "4340:3:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256[] memory)"
                      }
                    },
                    "id": 2714,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4340:62:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  }
                ],
                "id": 2715,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2705,
                  "name": "authP",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 6059,
                  "src": "4313:5:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                    "typeString": "modifier (bytes32,uint256[] memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "4313:90:10"
              }
            ],
            "name": "changeSupportRequiredPct",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2704,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2703,
                  "name": "_supportRequiredPct",
                  "nodeType": "VariableDeclaration",
                  "scope": 2740,
                  "src": "4260:26:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 2702,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "4260:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4259:28:10"
            },
            "payable": false,
            "returnParameters": {
              "id": 2716,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4408:0:10"
            },
            "scope": 3488,
            "src": "4226:463:10",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2771,
              "nodeType": "Block",
              "src": "5031:195:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "id": 2759,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 2757,
                          "name": "_minAcceptQuorumPct",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2742,
                          "src": "5049:19:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 2758,
                          "name": "supportRequiredPct",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2601,
                          "src": "5072:18:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "src": "5049:41:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2760,
                        "name": "ERROR_CHANGE_QUORUM_PCTS",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2552,
                        "src": "5092:24:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 2756,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        10407,
                        10408
                      ],
                      "referencedDeclaration": 10408,
                      "src": "5041:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2761,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5041:76:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2762,
                  "nodeType": "ExpressionStatement",
                  "src": "5041:76:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2765,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2763,
                      "name": "minAcceptQuorumPct",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2603,
                      "src": "5127:18:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2764,
                      "name": "_minAcceptQuorumPct",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2742,
                      "src": "5148:19:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "src": "5127:40:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "id": 2766,
                  "nodeType": "ExpressionStatement",
                  "src": "5127:40:10"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2768,
                        "name": "_minAcceptQuorumPct",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2742,
                        "src": "5199:19:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      ],
                      "id": 2767,
                      "name": "ChangeMinQuorum",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2641,
                      "src": "5183:15:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$",
                        "typeString": "function (uint64)"
                      }
                    },
                    "id": 2769,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5183:36:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2770,
                  "nodeType": "EmitStatement",
                  "src": "5178:41:10"
                }
              ]
            },
            "documentation": "@notice Change minimum acceptance quorum to `@formatPct(_minAcceptQuorumPct)`%\n@param _minAcceptQuorumPct New acceptance quorum",
            "id": 2772,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 2745,
                    "name": "MODIFY_QUORUM_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2535,
                    "src": "4943:18:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2748,
                            "name": "_minAcceptQuorumPct",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2742,
                            "src": "4975:19:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          ],
                          "id": 2747,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4967:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": "uint256"
                        },
                        "id": 2749,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4967:28:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2751,
                            "name": "minAcceptQuorumPct",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2603,
                            "src": "5005:18:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          ],
                          "id": 2750,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4997:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": "uint256"
                        },
                        "id": 2752,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4997:27:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2746,
                      "name": "arr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4798,
                        4813,
                        4833,
                        4848,
                        4868,
                        4889,
                        4913,
                        4933,
                        4962,
                        4987,
                        5012,
                        5035,
                        5066,
                        5105,
                        5152,
                        5207
                      ],
                      "referencedDeclaration": 5066,
                      "src": "4963:3:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256[] memory)"
                      }
                    },
                    "id": 2753,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4963:62:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  }
                ],
                "id": 2754,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2744,
                  "name": "authP",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 6059,
                  "src": "4937:5:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                    "typeString": "modifier (bytes32,uint256[] memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "4937:89:10"
              }
            ],
            "name": "changeMinAcceptQuorumPct",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2743,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2742,
                  "name": "_minAcceptQuorumPct",
                  "nodeType": "VariableDeclaration",
                  "scope": 2772,
                  "src": "4884:26:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 2741,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "4884:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4883:28:10"
            },
            "payable": false,
            "returnParameters": {
              "id": 2755,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5031:0:10"
            },
            "scope": 3488,
            "src": "4850:376:10",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2791,
              "nodeType": "Block",
              "src": "5568:73:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2785,
                        "name": "_executionScript",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2774,
                        "src": "5594:16:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2786,
                        "name": "_metadata",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2776,
                        "src": "5612:9:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 2787,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5623:4:10",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 2788,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5629:4:10",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        },
                        {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2784,
                      "name": "_newVote",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3152,
                      "src": "5585:8:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$_t_string_memory_ptr_$_t_bool_$_t_bool_$returns$_t_uint256_$",
                        "typeString": "function (bytes memory,string memory,bool,bool) returns (uint256)"
                      }
                    },
                    "id": 2789,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5585:49:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 2783,
                  "id": 2790,
                  "nodeType": "Return",
                  "src": "5578:56:10"
                }
              ]
            },
            "documentation": "@notice Create a new vote about \"`_metadata`\"\n@param _executionScript EVM script to be executed on approval\n@param _metadata Vote metadata\n@return voteId Id for newly created vote",
            "id": 2792,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 2779,
                    "name": "CREATE_VOTES_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2525,
                    "src": "5524:17:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 2780,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2778,
                  "name": "auth",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 6040,
                  "src": "5519:4:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "5519:23:10"
              }
            ],
            "name": "newVote",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2777,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2774,
                  "name": "_executionScript",
                  "nodeType": "VariableDeclaration",
                  "scope": 2792,
                  "src": "5468:22:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2773,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "5468:5:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2776,
                  "name": "_metadata",
                  "nodeType": "VariableDeclaration",
                  "scope": 2792,
                  "src": "5492:16:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2775,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "5492:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5467:42:10"
            },
            "payable": false,
            "returnParameters": {
              "id": 2783,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2782,
                  "name": "voteId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2792,
                  "src": "5552:14:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2781,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5552:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5551:16:10"
            },
            "scope": 3488,
            "src": "5451:190:10",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2815,
              "nodeType": "Block",
              "src": "6213:92:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2809,
                        "name": "_executionScript",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2794,
                        "src": "6239:16:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2810,
                        "name": "_metadata",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2796,
                        "src": "6257:9:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2811,
                        "name": "_castVote",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2798,
                        "src": "6268:9:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2812,
                        "name": "_executesIfDecided",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2800,
                        "src": "6279:18:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        },
                        {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2808,
                      "name": "_newVote",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3152,
                      "src": "6230:8:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$_t_string_memory_ptr_$_t_bool_$_t_bool_$returns$_t_uint256_$",
                        "typeString": "function (bytes memory,string memory,bool,bool) returns (uint256)"
                      }
                    },
                    "id": 2813,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6230:68:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 2807,
                  "id": 2814,
                  "nodeType": "Return",
                  "src": "6223:75:10"
                }
              ]
            },
            "documentation": "@notice Create a new vote about \"`_metadata`\"\n@param _executionScript EVM script to be executed on approval\n@param _metadata Vote metadata\n@param _castVote Whether to also cast newly created vote\n@param _executesIfDecided Whether to also immediately execute newly created vote if decided\n@return voteId id for newly created vote",
            "id": 2816,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 2803,
                    "name": "CREATE_VOTES_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2525,
                    "src": "6157:17:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 2804,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2802,
                  "name": "auth",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 6040,
                  "src": "6152:4:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "6152:23:10"
              }
            ],
            "name": "newVote",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2801,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2794,
                  "name": "_executionScript",
                  "nodeType": "VariableDeclaration",
                  "scope": 2816,
                  "src": "6044:22:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2793,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "6044:5:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2796,
                  "name": "_metadata",
                  "nodeType": "VariableDeclaration",
                  "scope": 2816,
                  "src": "6068:16:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2795,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6068:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2798,
                  "name": "_castVote",
                  "nodeType": "VariableDeclaration",
                  "scope": 2816,
                  "src": "6086:14:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2797,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "6086:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2800,
                  "name": "_executesIfDecided",
                  "nodeType": "VariableDeclaration",
                  "scope": 2816,
                  "src": "6102:23:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2799,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "6102:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6043:83:10"
            },
            "payable": false,
            "returnParameters": {
              "id": 2807,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2806,
                  "name": "voteId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2816,
                  "src": "6193:14:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2805,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6193:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6192:16:10"
            },
            "scope": 3488,
            "src": "6027:278:10",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2845,
              "nodeType": "Block",
              "src": "6841:142:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2830,
                            "name": "_voteId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2818,
                            "src": "6868:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2831,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10404,
                              "src": "6877:3:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 2832,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "6877:10:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 2829,
                          "name": "_canVote",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3434,
                          "src": "6859:8:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_address_$returns$_t_bool_$",
                            "typeString": "function (uint256,address) view returns (bool)"
                          }
                        },
                        "id": 2833,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6859:29:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2834,
                        "name": "ERROR_CAN_NOT_VOTE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2561,
                        "src": "6890:18:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 2828,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        10407,
                        10408
                      ],
                      "referencedDeclaration": 10408,
                      "src": "6851:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2835,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6851:58:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2836,
                  "nodeType": "ExpressionStatement",
                  "src": "6851:58:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2838,
                        "name": "_voteId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2818,
                        "src": "6925:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2839,
                        "name": "_supports",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2820,
                        "src": "6934:9:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2840,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10404,
                          "src": "6945:3:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 2841,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "6945:10:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2842,
                        "name": "_executesIfDecided",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2822,
                        "src": "6957:18:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2837,
                      "name": "_vote",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3273,
                      "src": "6919:5:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_bool_$_t_address_$_t_bool_$returns$__$",
                        "typeString": "function (uint256,bool,address,bool)"
                      }
                    },
                    "id": 2843,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6919:57:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2844,
                  "nodeType": "ExpressionStatement",
                  "src": "6919:57:10"
                }
              ]
            },
            "documentation": "@notice Vote `_supports ? 'yes' : 'no'` in vote #`_voteId`\n@dev Initialization check is implicitly provided by `voteExists()` as new votes can only be\n     created via `newVote(),` which requires initialization\n@param _voteId Id for vote\n@param _supports Whether voter supports the vote\n@param _executesIfDecided Whether the vote should execute its action if it becomes decided",
            "id": 2846,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 2825,
                    "name": "_voteId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2818,
                    "src": "6832:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 2826,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2824,
                  "name": "voteExists",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 2654,
                  "src": "6821:10:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "6821:19:10"
              }
            ],
            "name": "vote",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2823,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2818,
                  "name": "_voteId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2846,
                  "src": "6754:15:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2817,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6754:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2820,
                  "name": "_supports",
                  "nodeType": "VariableDeclaration",
                  "scope": 2846,
                  "src": "6771:14:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2819,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "6771:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2822,
                  "name": "_executesIfDecided",
                  "nodeType": "VariableDeclaration",
                  "scope": 2846,
                  "src": "6787:23:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2821,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "6787:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6753:58:10"
            },
            "payable": false,
            "returnParameters": {
              "id": 2827,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6841:0:10"
            },
            "scope": 3488,
            "src": "6740:243:10",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2858,
              "nodeType": "Block",
              "src": "7306:38:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2855,
                        "name": "_voteId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2848,
                        "src": "7329:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2854,
                      "name": "_executeVote",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3290,
                      "src": "7316:12:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 2856,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7316:21:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2857,
                  "nodeType": "ExpressionStatement",
                  "src": "7316:21:10"
                }
              ]
            },
            "documentation": "@notice Execute vote #`_voteId`\n@dev Initialization check is implicitly provided by `voteExists()` as new votes can only be\n     created via `newVote(),` which requires initialization\n@param _voteId Id for vote",
            "id": 2859,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 2851,
                    "name": "_voteId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2848,
                    "src": "7297:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 2852,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2850,
                  "name": "voteExists",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 2654,
                  "src": "7286:10:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "7286:19:10"
              }
            ],
            "name": "executeVote",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2849,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2848,
                  "name": "_voteId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2859,
                  "src": "7260:15:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2847,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7260:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7259:17:10"
            },
            "payable": false,
            "returnParameters": {
              "id": 2853,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7306:0:10"
            },
            "scope": 3488,
            "src": "7239:105:10",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2866,
              "nodeType": "Block",
              "src": "7425:28:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "74727565",
                    "id": 2864,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "7442:4:10",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 2863,
                  "id": 2865,
                  "nodeType": "Return",
                  "src": "7435:11:10"
                }
              ]
            },
            "documentation": null,
            "id": 2867,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "isForwarder",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2860,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7393:2:10"
            },
            "payable": false,
            "returnParameters": {
              "id": 2863,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2862,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2867,
                  "src": "7419:4:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2861,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "7419:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7418:6:10"
            },
            "scope": 3488,
            "src": "7373:80:10",
            "stateMutability": "pure",
            "superFunction": 6300,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2888,
              "nodeType": "Block",
              "src": "7704:129:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2874,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10404,
                              "src": "7733:3:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 2875,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "7733:10:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2876,
                            "name": "_evmScript",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2869,
                            "src": "7745:10:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 2873,
                          "name": "canForward",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            2906
                          ],
                          "referencedDeclaration": 2906,
                          "src": "7722:10:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes_memory_ptr_$returns$_t_bool_$",
                            "typeString": "function (address,bytes memory) view returns (bool)"
                          }
                        },
                        "id": 2877,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7722:34:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2878,
                        "name": "ERROR_CAN_NOT_FORWARD",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2567,
                        "src": "7758:21:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 2872,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        10407,
                        10408
                      ],
                      "referencedDeclaration": 10408,
                      "src": "7714:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2879,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7714:66:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2880,
                  "nodeType": "ExpressionStatement",
                  "src": "7714:66:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2882,
                        "name": "_evmScript",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2869,
                        "src": "7799:10:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "",
                        "id": 2883,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7811:2:10",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        },
                        "value": ""
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 2884,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7815:4:10",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 2885,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7821:4:10",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2881,
                      "name": "_newVote",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3152,
                      "src": "7790:8:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$_t_string_memory_ptr_$_t_bool_$_t_bool_$returns$_t_uint256_$",
                        "typeString": "function (bytes memory,string memory,bool,bool) returns (uint256)"
                      }
                    },
                    "id": 2886,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7790:36:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2887,
                  "nodeType": "ExpressionStatement",
                  "src": "7790:36:10"
                }
              ]
            },
            "documentation": "@notice Creates a vote to execute the desired action, and casts a support vote if possible\n@dev IForwarder interface conformance\n@param _evmScript Start vote with script",
            "id": 2889,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "forward",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2870,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2869,
                  "name": "_evmScript",
                  "nodeType": "VariableDeclaration",
                  "scope": 2889,
                  "src": "7679:16:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2868,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "7679:5:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7678:18:10"
            },
            "payable": false,
            "returnParameters": {
              "id": 2871,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7704:0:10"
            },
            "scope": 3488,
            "src": "7662:171:10",
            "stateMutability": "nonpayable",
            "superFunction": 6314,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2905,
              "nodeType": "Block",
              "src": "7910:152:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2899,
                        "name": "_sender",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2891,
                        "src": "8021:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2900,
                        "name": "CREATE_VOTES_ROLE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2525,
                        "src": "8030:17:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 2901,
                          "name": "arr",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            4798,
                            4813,
                            4833,
                            4848,
                            4868,
                            4889,
                            4913,
                            4933,
                            4962,
                            4987,
                            5012,
                            5035,
                            5066,
                            5105,
                            5152,
                            5207
                          ],
                          "referencedDeclaration": 4798,
                          "src": "8049:3:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$__$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                            "typeString": "function () pure returns (uint256[] memory)"
                          }
                        },
                        "id": 2902,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8049:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      ],
                      "id": 2898,
                      "name": "canPerform",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6108,
                      "src": "8010:10:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_bool_$",
                        "typeString": "function (address,bytes32,uint256[] memory) view returns (bool)"
                      }
                    },
                    "id": 2903,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8010:45:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 2897,
                  "id": 2904,
                  "nodeType": "Return",
                  "src": "8003:52:10"
                }
              ]
            },
            "documentation": null,
            "id": 2906,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "canForward",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2894,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2891,
                  "name": "_sender",
                  "nodeType": "VariableDeclaration",
                  "scope": 2906,
                  "src": "7859:15:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2890,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7859:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2893,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2906,
                  "src": "7876:5:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2892,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "7876:5:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7858:24:10"
            },
            "payable": false,
            "returnParameters": {
              "id": 2897,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2896,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2906,
                  "src": "7904:4:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2895,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "7904:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7903:6:10"
            },
            "scope": 3488,
            "src": "7839:223:10",
            "stateMutability": "view",
            "superFunction": 6309,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2920,
              "nodeType": "Block",
              "src": "8350:44:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2917,
                        "name": "_voteId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2908,
                        "src": "8379:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2916,
                      "name": "_canExecute",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3405,
                      "src": "8367:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$",
                        "typeString": "function (uint256) view returns (bool)"
                      }
                    },
                    "id": 2918,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8367:20:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 2915,
                  "id": 2919,
                  "nodeType": "Return",
                  "src": "8360:27:10"
                }
              ]
            },
            "documentation": "@dev Initialization check is implicitly provided by `voteExists()` as new votes can only be\n     created via `newVote(),` which requires initialization",
            "id": 2921,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 2911,
                    "name": "_voteId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2908,
                    "src": "8326:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 2912,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2910,
                  "name": "voteExists",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 2654,
                  "src": "8315:10:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "8315:19:10"
              }
            ],
            "name": "canExecute",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2909,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2908,
                  "name": "_voteId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2921,
                  "src": "8286:15:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2907,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8286:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8285:17:10"
            },
            "payable": false,
            "returnParameters": {
              "id": 2915,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2914,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2921,
                  "src": "8344:4:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2913,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "8344:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8343:6:10"
            },
            "scope": 3488,
            "src": "8266:128:10",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2938,
              "nodeType": "Block",
              "src": "8676:49:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2934,
                        "name": "_voteId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2923,
                        "src": "8702:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2935,
                        "name": "_voter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2925,
                        "src": "8711:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 2933,
                      "name": "_canVote",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3434,
                      "src": "8693:8:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_address_$returns$_t_bool_$",
                        "typeString": "function (uint256,address) view returns (bool)"
                      }
                    },
                    "id": 2936,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8693:25:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 2932,
                  "id": 2937,
                  "nodeType": "Return",
                  "src": "8686:32:10"
                }
              ]
            },
            "documentation": "@dev Initialization check is implicitly provided by `voteExists()` as new votes can only be\n     created via `newVote(),` which requires initialization",
            "id": 2939,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 2928,
                    "name": "_voteId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2923,
                    "src": "8652:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 2929,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2927,
                  "name": "voteExists",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 2654,
                  "src": "8641:10:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "8641:19:10"
              }
            ],
            "name": "canVote",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2926,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2923,
                  "name": "_voteId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2939,
                  "src": "8596:15:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2922,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8596:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2925,
                  "name": "_voter",
                  "nodeType": "VariableDeclaration",
                  "scope": 2939,
                  "src": "8613:14:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2924,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8613:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8595:33:10"
            },
            "payable": false,
            "returnParameters": {
              "id": 2932,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2931,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2939,
                  "src": "8670:4:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2930,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "8670:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8669:6:10"
            },
            "scope": 3488,
            "src": "8579:146:10",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3024,
              "nodeType": "Block",
              "src": "9147:440:10",
              "statements": [
                {
                  "assignments": [
                    2968
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2968,
                      "name": "vote_",
                      "nodeType": "VariableDeclaration",
                      "scope": 3025,
                      "src": "9157:18:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                        "typeString": "struct Voting.Vote"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2967,
                        "name": "Vote",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2597,
                        "src": "9157:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                          "typeString": "struct Voting.Vote"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2972,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 2969,
                      "name": "votes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2609,
                      "src": "9178:5:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Vote_$2597_storage_$",
                        "typeString": "mapping(uint256 => struct Voting.Vote storage ref)"
                      }
                    },
                    "id": 2971,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 2970,
                      "name": "_voteId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2941,
                      "src": "9184:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "9178:14:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Vote_$2597_storage",
                      "typeString": "struct Voting.Vote storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9157:35:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2977,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2973,
                      "name": "open",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2947,
                      "src": "9203:4:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 2975,
                          "name": "vote_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2968,
                          "src": "9222:5:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                            "typeString": "struct Voting.Vote storage pointer"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                            "typeString": "struct Voting.Vote storage pointer"
                          }
                        ],
                        "id": 2974,
                        "name": "_isVoteOpen",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3455,
                        "src": "9210:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_struct$_Vote_$2597_storage_ptr_$returns$_t_bool_$",
                          "typeString": "function (struct Voting.Vote storage pointer) view returns (bool)"
                        }
                      },
                      "id": 2976,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "9210:18:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "9203:25:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2978,
                  "nodeType": "ExpressionStatement",
                  "src": "9203:25:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2982,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2979,
                      "name": "executed",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2949,
                      "src": "9238:8:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2980,
                        "name": "vote_",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2968,
                        "src": "9249:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                          "typeString": "struct Voting.Vote storage pointer"
                        }
                      },
                      "id": 2981,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "executed",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2576,
                      "src": "9249:14:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "9238:25:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2983,
                  "nodeType": "ExpressionStatement",
                  "src": "9238:25:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2987,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2984,
                      "name": "startDate",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2951,
                      "src": "9273:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2985,
                        "name": "vote_",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2968,
                        "src": "9285:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                          "typeString": "struct Voting.Vote storage pointer"
                        }
                      },
                      "id": 2986,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "startDate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2578,
                      "src": "9285:15:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "src": "9273:27:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "id": 2988,
                  "nodeType": "ExpressionStatement",
                  "src": "9273:27:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2992,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2989,
                      "name": "snapshotBlock",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2953,
                      "src": "9310:13:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2990,
                        "name": "vote_",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2968,
                        "src": "9326:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                          "typeString": "struct Voting.Vote storage pointer"
                        }
                      },
                      "id": 2991,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "snapshotBlock",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2580,
                      "src": "9326:19:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "src": "9310:35:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "id": 2993,
                  "nodeType": "ExpressionStatement",
                  "src": "9310:35:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2997,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2994,
                      "name": "supportRequired",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2955,
                      "src": "9355:15:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2995,
                        "name": "vote_",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2968,
                        "src": "9373:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                          "typeString": "struct Voting.Vote storage pointer"
                        }
                      },
                      "id": 2996,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "supportRequiredPct",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2582,
                      "src": "9373:24:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "src": "9355:42:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "id": 2998,
                  "nodeType": "ExpressionStatement",
                  "src": "9355:42:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3002,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2999,
                      "name": "minAcceptQuorum",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2957,
                      "src": "9407:15:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3000,
                        "name": "vote_",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2968,
                        "src": "9425:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                          "typeString": "struct Voting.Vote storage pointer"
                        }
                      },
                      "id": 3001,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "minAcceptQuorumPct",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2584,
                      "src": "9425:24:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "src": "9407:42:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "id": 3003,
                  "nodeType": "ExpressionStatement",
                  "src": "9407:42:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3007,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3004,
                      "name": "yea",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2959,
                      "src": "9459:3:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3005,
                        "name": "vote_",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2968,
                        "src": "9465:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                          "typeString": "struct Voting.Vote storage pointer"
                        }
                      },
                      "id": 3006,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "yea",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2586,
                      "src": "9465:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "9459:15:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3008,
                  "nodeType": "ExpressionStatement",
                  "src": "9459:15:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3012,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3009,
                      "name": "nay",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2961,
                      "src": "9484:3:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3010,
                        "name": "vote_",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2968,
                        "src": "9490:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                          "typeString": "struct Voting.Vote storage pointer"
                        }
                      },
                      "id": 3011,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "nay",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2588,
                      "src": "9490:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "9484:15:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3013,
                  "nodeType": "ExpressionStatement",
                  "src": "9484:15:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3017,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3014,
                      "name": "votingPower",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2963,
                      "src": "9509:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3015,
                        "name": "vote_",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2968,
                        "src": "9523:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                          "typeString": "struct Voting.Vote storage pointer"
                        }
                      },
                      "id": 3016,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "votingPower",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2590,
                      "src": "9523:17:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "9509:31:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3018,
                  "nodeType": "ExpressionStatement",
                  "src": "9509:31:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3022,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3019,
                      "name": "script",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2965,
                      "src": "9550:6:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3020,
                        "name": "vote_",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2968,
                        "src": "9559:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                          "typeString": "struct Voting.Vote storage pointer"
                        }
                      },
                      "id": 3021,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "executionScript",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2592,
                      "src": "9559:21:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage",
                        "typeString": "bytes storage ref"
                      }
                    },
                    "src": "9550:30:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "id": 3023,
                  "nodeType": "ExpressionStatement",
                  "src": "9550:30:10"
                }
              ]
            },
            "documentation": null,
            "id": 3025,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 2944,
                    "name": "_voteId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2941,
                    "src": "8812:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 2945,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2943,
                  "name": "voteExists",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 2654,
                  "src": "8801:10:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "8801:19:10"
              }
            ],
            "name": "getVote",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2942,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2941,
                  "name": "_voteId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3025,
                  "src": "8748:15:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2940,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8748:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8747:17:10"
            },
            "payable": false,
            "returnParameters": {
              "id": 2966,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2947,
                  "name": "open",
                  "nodeType": "VariableDeclaration",
                  "scope": 3025,
                  "src": "8851:9:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2946,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "8851:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2949,
                  "name": "executed",
                  "nodeType": "VariableDeclaration",
                  "scope": 3025,
                  "src": "8874:13:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2948,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "8874:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2951,
                  "name": "startDate",
                  "nodeType": "VariableDeclaration",
                  "scope": 3025,
                  "src": "8901:16:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 2950,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "8901:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2953,
                  "name": "snapshotBlock",
                  "nodeType": "VariableDeclaration",
                  "scope": 3025,
                  "src": "8931:20:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 2952,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "8931:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2955,
                  "name": "supportRequired",
                  "nodeType": "VariableDeclaration",
                  "scope": 3025,
                  "src": "8965:22:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 2954,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "8965:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2957,
                  "name": "minAcceptQuorum",
                  "nodeType": "VariableDeclaration",
                  "scope": 3025,
                  "src": "9001:22:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 2956,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "9001:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2959,
                  "name": "yea",
                  "nodeType": "VariableDeclaration",
                  "scope": 3025,
                  "src": "9037:11:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2958,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9037:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2961,
                  "name": "nay",
                  "nodeType": "VariableDeclaration",
                  "scope": 3025,
                  "src": "9062:11:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2960,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9062:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2963,
                  "name": "votingPower",
                  "nodeType": "VariableDeclaration",
                  "scope": 3025,
                  "src": "9087:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2962,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9087:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2965,
                  "name": "script",
                  "nodeType": "VariableDeclaration",
                  "scope": 3025,
                  "src": "9120:12:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2964,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "9120:5:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8837:305:10"
            },
            "scope": 3488,
            "src": "8731:856:10",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3044,
              "nodeType": "Block",
              "src": "9702:53:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 3037,
                          "name": "votes",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2609,
                          "src": "9719:5:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Vote_$2597_storage_$",
                            "typeString": "mapping(uint256 => struct Voting.Vote storage ref)"
                          }
                        },
                        "id": 3039,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 3038,
                          "name": "_voteId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3027,
                          "src": "9725:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "9719:14:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$2597_storage",
                          "typeString": "struct Voting.Vote storage ref"
                        }
                      },
                      "id": 3040,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "voters",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2596,
                      "src": "9719:21:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_enum$_VoterState_$2574_$",
                        "typeString": "mapping(address => enum Voting.VoterState)"
                      }
                    },
                    "id": 3042,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 3041,
                      "name": "_voter",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3029,
                      "src": "9741:6:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "9719:29:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_VoterState_$2574",
                      "typeString": "enum Voting.VoterState"
                    }
                  },
                  "functionReturnParameters": 3036,
                  "id": 3043,
                  "nodeType": "Return",
                  "src": "9712:36:10"
                }
              ]
            },
            "documentation": null,
            "id": 3045,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 3032,
                    "name": "_voteId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3027,
                    "src": "9672:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 3033,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 3031,
                  "name": "voteExists",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 2654,
                  "src": "9661:10:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "9661:19:10"
              }
            ],
            "name": "getVoterState",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3030,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3027,
                  "name": "_voteId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3045,
                  "src": "9616:15:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3026,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9616:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3029,
                  "name": "_voter",
                  "nodeType": "VariableDeclaration",
                  "scope": 3045,
                  "src": "9633:14:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3028,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9633:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9615:33:10"
            },
            "payable": false,
            "returnParameters": {
              "id": 3036,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3035,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3045,
                  "src": "9690:10:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_VoterState_$2574",
                    "typeString": "enum Voting.VoterState"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3034,
                    "name": "VoterState",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2574,
                    "src": "9690:10:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_VoterState_$2574",
                      "typeString": "enum Voting.VoterState"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9689:12:10"
            },
            "scope": 3488,
            "src": "9593:162:10",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3151,
              "nodeType": "Block",
              "src": "9937:784:10",
              "statements": [
                {
                  "assignments": [
                    3059
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3059,
                      "name": "snapshotBlock",
                      "nodeType": "VariableDeclaration",
                      "scope": 3152,
                      "src": "9947:20:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      },
                      "typeName": {
                        "id": 3058,
                        "name": "uint64",
                        "nodeType": "ElementaryTypeName",
                        "src": "9947:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3064,
                  "initialValue": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    },
                    "id": 3063,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 3060,
                        "name": "getBlockNumber64",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6810,
                        "src": "9970:16:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$__$returns$_t_uint64_$",
                          "typeString": "function () view returns (uint64)"
                        }
                      },
                      "id": 3061,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "9970:18:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "-",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "31",
                      "id": 3062,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "9991:1:10",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "9970:22:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9947:45:10"
                },
                {
                  "assignments": [
                    3066
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3066,
                      "name": "votingPower",
                      "nodeType": "VariableDeclaration",
                      "scope": 3152,
                      "src": "10044:19:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3065,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "10044:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3071,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3069,
                        "name": "snapshotBlock",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3059,
                        "src": "10086:13:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 3067,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2599,
                        "src": "10066:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_MiniMeToken_$2462",
                          "typeString": "contract MiniMeToken"
                        }
                      },
                      "id": 3068,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "totalSupplyAt",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1962,
                      "src": "10066:19:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (uint256) view external returns (uint256)"
                      }
                    },
                    "id": 3070,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10066:34:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10044:56:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3075,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 3073,
                          "name": "votingPower",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3066,
                          "src": "10118:11:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 3074,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "10132:1:10",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "10118:15:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3076,
                        "name": "ERROR_NO_VOTING_POWER",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2570,
                        "src": "10135:21:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 3072,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        10407,
                        10408
                      ],
                      "referencedDeclaration": 10408,
                      "src": "10110:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3077,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10110:47:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3078,
                  "nodeType": "ExpressionStatement",
                  "src": "10110:47:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3082,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3079,
                      "name": "voteId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3056,
                      "src": "10168:6:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 3081,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "10177:13:10",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 3080,
                        "name": "votesLength",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2611,
                        "src": "10177:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "10168:22:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3083,
                  "nodeType": "ExpressionStatement",
                  "src": "10168:22:10"
                },
                {
                  "assignments": [
                    3085
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3085,
                      "name": "vote_",
                      "nodeType": "VariableDeclaration",
                      "scope": 3152,
                      "src": "10201:18:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                        "typeString": "struct Voting.Vote"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 3084,
                        "name": "Vote",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2597,
                        "src": "10201:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                          "typeString": "struct Voting.Vote"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3089,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 3086,
                      "name": "votes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2609,
                      "src": "10222:5:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Vote_$2597_storage_$",
                        "typeString": "mapping(uint256 => struct Voting.Vote storage ref)"
                      }
                    },
                    "id": 3088,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 3087,
                      "name": "voteId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3056,
                      "src": "10228:6:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "10222:13:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Vote_$2597_storage",
                      "typeString": "struct Voting.Vote storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10201:34:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3095,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3090,
                        "name": "vote_",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3085,
                        "src": "10245:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                          "typeString": "struct Voting.Vote storage pointer"
                        }
                      },
                      "id": 3092,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "startDate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2578,
                      "src": "10245:15:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 3093,
                        "name": "getTimestamp64",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6830,
                        "src": "10263:14:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$__$returns$_t_uint64_$",
                          "typeString": "function () view returns (uint64)"
                        }
                      },
                      "id": 3094,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10263:16:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "src": "10245:34:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "id": 3096,
                  "nodeType": "ExpressionStatement",
                  "src": "10245:34:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3101,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3097,
                        "name": "vote_",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3085,
                        "src": "10289:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                          "typeString": "struct Voting.Vote storage pointer"
                        }
                      },
                      "id": 3099,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "snapshotBlock",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2580,
                      "src": "10289:19:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 3100,
                      "name": "snapshotBlock",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3059,
                      "src": "10311:13:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "src": "10289:35:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "id": 3102,
                  "nodeType": "ExpressionStatement",
                  "src": "10289:35:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3107,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3103,
                        "name": "vote_",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3085,
                        "src": "10334:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                          "typeString": "struct Voting.Vote storage pointer"
                        }
                      },
                      "id": 3105,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "supportRequiredPct",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2582,
                      "src": "10334:24:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 3106,
                      "name": "supportRequiredPct",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2601,
                      "src": "10361:18:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "src": "10334:45:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "id": 3108,
                  "nodeType": "ExpressionStatement",
                  "src": "10334:45:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3113,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3109,
                        "name": "vote_",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3085,
                        "src": "10389:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                          "typeString": "struct Voting.Vote storage pointer"
                        }
                      },
                      "id": 3111,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "minAcceptQuorumPct",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2584,
                      "src": "10389:24:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 3112,
                      "name": "minAcceptQuorumPct",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2603,
                      "src": "10416:18:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "src": "10389:45:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "id": 3114,
                  "nodeType": "ExpressionStatement",
                  "src": "10389:45:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3119,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3115,
                        "name": "vote_",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3085,
                        "src": "10444:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                          "typeString": "struct Voting.Vote storage pointer"
                        }
                      },
                      "id": 3117,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "votingPower",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2590,
                      "src": "10444:17:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 3118,
                      "name": "votingPower",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3066,
                      "src": "10464:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "10444:31:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3120,
                  "nodeType": "ExpressionStatement",
                  "src": "10444:31:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3125,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3121,
                        "name": "vote_",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3085,
                        "src": "10485:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                          "typeString": "struct Voting.Vote storage pointer"
                        }
                      },
                      "id": 3123,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "executionScript",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2592,
                      "src": "10485:21:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage",
                        "typeString": "bytes storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 3124,
                      "name": "_executionScript",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3047,
                      "src": "10509:16:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "src": "10485:40:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage",
                      "typeString": "bytes storage ref"
                    }
                  },
                  "id": 3126,
                  "nodeType": "ExpressionStatement",
                  "src": "10485:40:10"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3128,
                        "name": "voteId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3056,
                        "src": "10551:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3129,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10404,
                          "src": "10559:3:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 3130,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "10559:10:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3131,
                        "name": "_metadata",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3049,
                        "src": "10571:9:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 3127,
                      "name": "StartVote",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2619,
                      "src": "10541:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (uint256,address,string memory)"
                      }
                    },
                    "id": 3132,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10541:40:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3133,
                  "nodeType": "EmitStatement",
                  "src": "10536:45:10"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 3140,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3134,
                      "name": "_castVote",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3051,
                      "src": "10596:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 3136,
                          "name": "voteId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3056,
                          "src": "10618:6:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3137,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10404,
                            "src": "10626:3:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 3138,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "10626:10:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 3135,
                        "name": "_canVote",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3434,
                        "src": "10609:8:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_address_$returns$_t_bool_$",
                          "typeString": "function (uint256,address) view returns (bool)"
                        }
                      },
                      "id": 3139,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10609:28:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "10596:41:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3150,
                  "nodeType": "IfStatement",
                  "src": "10592:123:10",
                  "trueBody": {
                    "id": 3149,
                    "nodeType": "Block",
                    "src": "10639:76:10",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3142,
                              "name": "voteId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3056,
                              "src": "10659:6:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "74727565",
                              "id": 3143,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10667:4:10",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 3144,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10404,
                                "src": "10673:3:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 3145,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "10673:10:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3146,
                              "name": "_executesIfDecided",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3053,
                              "src": "10685:18:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 3141,
                            "name": "_vote",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3273,
                            "src": "10653:5:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_bool_$_t_address_$_t_bool_$returns$__$",
                              "typeString": "function (uint256,bool,address,bool)"
                            }
                          },
                          "id": 3147,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10653:51:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3148,
                        "nodeType": "ExpressionStatement",
                        "src": "10653:51:10"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": null,
            "id": 3152,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "_newVote",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3054,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3047,
                  "name": "_executionScript",
                  "nodeType": "VariableDeclaration",
                  "scope": 3152,
                  "src": "9800:22:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 3046,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "9800:5:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3049,
                  "name": "_metadata",
                  "nodeType": "VariableDeclaration",
                  "scope": 3152,
                  "src": "9824:16:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3048,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "9824:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3051,
                  "name": "_castVote",
                  "nodeType": "VariableDeclaration",
                  "scope": 3152,
                  "src": "9842:14:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 3050,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "9842:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3053,
                  "name": "_executesIfDecided",
                  "nodeType": "VariableDeclaration",
                  "scope": 3152,
                  "src": "9858:23:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 3052,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "9858:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9799:83:10"
            },
            "payable": false,
            "returnParameters": {
              "id": 3057,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3056,
                  "name": "voteId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3152,
                  "src": "9917:14:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3055,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9917:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9916:16:10"
            },
            "scope": 3488,
            "src": "9782:939:10",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3272,
              "nodeType": "Block",
              "src": "10867:1017:10",
              "statements": [
                {
                  "assignments": [
                    3164
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3164,
                      "name": "vote_",
                      "nodeType": "VariableDeclaration",
                      "scope": 3273,
                      "src": "10877:18:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                        "typeString": "struct Voting.Vote"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 3163,
                        "name": "Vote",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2597,
                        "src": "10877:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                          "typeString": "struct Voting.Vote"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3168,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 3165,
                      "name": "votes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2609,
                      "src": "10898:5:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Vote_$2597_storage_$",
                        "typeString": "mapping(uint256 => struct Voting.Vote storage ref)"
                      }
                    },
                    "id": 3167,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 3166,
                      "name": "_voteId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3154,
                      "src": "10904:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "10898:14:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Vote_$2597_storage",
                      "typeString": "struct Voting.Vote storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10877:35:10"
                },
                {
                  "assignments": [
                    3170
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3170,
                      "name": "voterStake",
                      "nodeType": "VariableDeclaration",
                      "scope": 3273,
                      "src": "11014:18:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3169,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "11014:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3177,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3173,
                        "name": "_voter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3158,
                        "src": "11053:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3174,
                          "name": "vote_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3164,
                          "src": "11061:5:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                            "typeString": "struct Voting.Vote storage pointer"
                          }
                        },
                        "id": 3175,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "snapshotBlock",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2580,
                        "src": "11061:19:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 3171,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2599,
                        "src": "11035:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_MiniMeToken_$2462",
                          "typeString": "contract MiniMeToken"
                        }
                      },
                      "id": 3172,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "balanceOfAt",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1915,
                      "src": "11035:17:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (address,uint256) view external returns (uint256)"
                      }
                    },
                    "id": 3176,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11035:46:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11014:67:10"
                },
                {
                  "assignments": [
                    3179
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3179,
                      "name": "state",
                      "nodeType": "VariableDeclaration",
                      "scope": 3273,
                      "src": "11091:16:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_VoterState_$2574",
                        "typeString": "enum Voting.VoterState"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 3178,
                        "name": "VoterState",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2574,
                        "src": "11091:10:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_VoterState_$2574",
                          "typeString": "enum Voting.VoterState"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3184,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3180,
                        "name": "vote_",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3164,
                        "src": "11110:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                          "typeString": "struct Voting.Vote storage pointer"
                        }
                      },
                      "id": 3181,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "voters",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2596,
                      "src": "11110:12:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_enum$_VoterState_$2574_$",
                        "typeString": "mapping(address => enum Voting.VoterState)"
                      }
                    },
                    "id": 3183,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 3182,
                      "name": "_voter",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3158,
                      "src": "11123:6:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "11110:20:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_VoterState_$2574",
                      "typeString": "enum Voting.VoterState"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11091:39:10"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_VoterState_$2574",
                      "typeString": "enum Voting.VoterState"
                    },
                    "id": 3188,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3185,
                      "name": "state",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3179,
                      "src": "11202:5:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_VoterState_$2574",
                        "typeString": "enum Voting.VoterState"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3186,
                        "name": "VoterState",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2574,
                        "src": "11211:10:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_VoterState_$2574_$",
                          "typeString": "type(enum Voting.VoterState)"
                        }
                      },
                      "id": 3187,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "Yea",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "11211:14:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_VoterState_$2574",
                        "typeString": "enum Voting.VoterState"
                      }
                    },
                    "src": "11202:23:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "condition": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_enum$_VoterState_$2574",
                        "typeString": "enum Voting.VoterState"
                      },
                      "id": 3203,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 3200,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3179,
                        "src": "11299:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_VoterState_$2574",
                          "typeString": "enum Voting.VoterState"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3201,
                          "name": "VoterState",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2574,
                          "src": "11308:10:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_enum$_VoterState_$2574_$",
                            "typeString": "type(enum Voting.VoterState)"
                          }
                        },
                        "id": 3202,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberName": "Nay",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "11308:14:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_VoterState_$2574",
                          "typeString": "enum Voting.VoterState"
                        }
                      },
                      "src": "11299:23:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseBody": null,
                    "id": 3215,
                    "nodeType": "IfStatement",
                    "src": "11295:91:10",
                    "trueBody": {
                      "id": 3214,
                      "nodeType": "Block",
                      "src": "11324:62:10",
                      "statements": [
                        {
                          "expression": {
                            "argumentTypes": null,
                            "id": 3212,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 3204,
                                "name": "vote_",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3164,
                                "src": "11338:5:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                                  "typeString": "struct Voting.Vote storage pointer"
                                }
                              },
                              "id": 3206,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "memberName": "nay",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2588,
                              "src": "11338:9:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 3210,
                                  "name": "voterStake",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3170,
                                  "src": "11364:10:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3207,
                                    "name": "vote_",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3164,
                                    "src": "11350:5:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                                      "typeString": "struct Voting.Vote storage pointer"
                                    }
                                  },
                                  "id": 3208,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "nay",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2588,
                                  "src": "11350:9:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 3209,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sub",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 9648,
                                "src": "11350:13:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 3211,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11350:25:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "11338:37:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 3213,
                          "nodeType": "ExpressionStatement",
                          "src": "11338:37:10"
                        }
                      ]
                    }
                  },
                  "id": 3216,
                  "nodeType": "IfStatement",
                  "src": "11198:188:10",
                  "trueBody": {
                    "id": 3199,
                    "nodeType": "Block",
                    "src": "11227:62:10",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3197,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3189,
                              "name": "vote_",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3164,
                              "src": "11241:5:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                                "typeString": "struct Voting.Vote storage pointer"
                              }
                            },
                            "id": 3191,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "yea",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2586,
                            "src": "11241:9:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3195,
                                "name": "voterStake",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3170,
                                "src": "11267:10:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3192,
                                  "name": "vote_",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3164,
                                  "src": "11253:5:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                                    "typeString": "struct Voting.Vote storage pointer"
                                  }
                                },
                                "id": 3193,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "yea",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2586,
                                "src": "11253:9:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3194,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 9648,
                              "src": "11253:13:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 3196,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11253:25:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11241:37:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3198,
                        "nodeType": "ExpressionStatement",
                        "src": "11241:37:10"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 3217,
                    "name": "_supports",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3156,
                    "src": "11400:9:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 3239,
                    "nodeType": "Block",
                    "src": "11479:62:10",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3237,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3229,
                              "name": "vote_",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3164,
                              "src": "11493:5:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                                "typeString": "struct Voting.Vote storage pointer"
                              }
                            },
                            "id": 3231,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "nay",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2588,
                            "src": "11493:9:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3235,
                                "name": "voterStake",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3170,
                                "src": "11519:10:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3232,
                                  "name": "vote_",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3164,
                                  "src": "11505:5:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                                    "typeString": "struct Voting.Vote storage pointer"
                                  }
                                },
                                "id": 3233,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "nay",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2588,
                                "src": "11505:9:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3234,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 9673,
                              "src": "11505:13:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 3236,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11505:25:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11493:37:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3238,
                        "nodeType": "ExpressionStatement",
                        "src": "11493:37:10"
                      }
                    ]
                  },
                  "id": 3240,
                  "nodeType": "IfStatement",
                  "src": "11396:145:10",
                  "trueBody": {
                    "id": 3228,
                    "nodeType": "Block",
                    "src": "11411:62:10",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3226,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3218,
                              "name": "vote_",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3164,
                              "src": "11425:5:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                                "typeString": "struct Voting.Vote storage pointer"
                              }
                            },
                            "id": 3220,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "yea",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2586,
                            "src": "11425:9:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3224,
                                "name": "voterStake",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3170,
                                "src": "11451:10:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3221,
                                  "name": "vote_",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3164,
                                  "src": "11437:5:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                                    "typeString": "struct Voting.Vote storage pointer"
                                  }
                                },
                                "id": 3222,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "yea",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2586,
                                "src": "11437:9:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3223,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 9673,
                              "src": "11437:13:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 3225,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11437:25:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11425:37:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3227,
                        "nodeType": "ExpressionStatement",
                        "src": "11425:37:10"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3252,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3241,
                          "name": "vote_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3164,
                          "src": "11551:5:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                            "typeString": "struct Voting.Vote storage pointer"
                          }
                        },
                        "id": 3244,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "voters",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2596,
                        "src": "11551:12:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_enum$_VoterState_$2574_$",
                          "typeString": "mapping(address => enum Voting.VoterState)"
                        }
                      },
                      "id": 3245,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 3243,
                        "name": "_voter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3158,
                        "src": "11564:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "11551:20:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_VoterState_$2574",
                        "typeString": "enum Voting.VoterState"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "condition": {
                        "argumentTypes": null,
                        "id": 3246,
                        "name": "_supports",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3156,
                        "src": "11574:9:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3249,
                          "name": "VoterState",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2574,
                          "src": "11603:10:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_enum$_VoterState_$2574_$",
                            "typeString": "type(enum Voting.VoterState)"
                          }
                        },
                        "id": 3250,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberName": "Nay",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "11603:14:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_VoterState_$2574",
                          "typeString": "enum Voting.VoterState"
                        }
                      },
                      "id": 3251,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "Conditional",
                      "src": "11574:43:10",
                      "trueExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3247,
                          "name": "VoterState",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2574,
                          "src": "11586:10:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_enum$_VoterState_$2574_$",
                            "typeString": "type(enum Voting.VoterState)"
                          }
                        },
                        "id": 3248,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberName": "Yea",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "11586:14:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_VoterState_$2574",
                          "typeString": "enum Voting.VoterState"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_VoterState_$2574",
                        "typeString": "enum Voting.VoterState"
                      }
                    },
                    "src": "11551:66:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_VoterState_$2574",
                      "typeString": "enum Voting.VoterState"
                    }
                  },
                  "id": 3253,
                  "nodeType": "ExpressionStatement",
                  "src": "11551:66:10"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3255,
                        "name": "_voteId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3154,
                        "src": "11642:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3256,
                        "name": "_voter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3158,
                        "src": "11651:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3257,
                        "name": "_supports",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3156,
                        "src": "11659:9:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3258,
                        "name": "voterStake",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3170,
                        "src": "11670:10:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 3254,
                      "name": "CastVote",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2629,
                      "src": "11633:8:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$_t_bool_$_t_uint256_$returns$__$",
                        "typeString": "function (uint256,address,bool,uint256)"
                      }
                    },
                    "id": 3259,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11633:48:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3260,
                  "nodeType": "EmitStatement",
                  "src": "11628:53:10"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 3265,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3261,
                      "name": "_executesIfDecided",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3160,
                      "src": "11696:18:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 3263,
                          "name": "_voteId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3154,
                          "src": "11730:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 3262,
                        "name": "_canExecute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3405,
                        "src": "11718:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$",
                          "typeString": "function (uint256) view returns (bool)"
                        }
                      },
                      "id": 3264,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "11718:20:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "11696:42:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3271,
                  "nodeType": "IfStatement",
                  "src": "11692:186:10",
                  "trueBody": {
                    "id": 3270,
                    "nodeType": "Block",
                    "src": "11740:138:10",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3267,
                              "name": "_voteId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3154,
                              "src": "11859:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3266,
                            "name": "_unsafeExecuteVote",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3330,
                            "src": "11840:18:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256)"
                            }
                          },
                          "id": 3268,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11840:27:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3269,
                        "nodeType": "ExpressionStatement",
                        "src": "11840:27:10"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": null,
            "id": 3273,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "_vote",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3161,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3154,
                  "name": "_voteId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3273,
                  "src": "10751:15:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3153,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10751:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3156,
                  "name": "_supports",
                  "nodeType": "VariableDeclaration",
                  "scope": 3273,
                  "src": "10776:14:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 3155,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "10776:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3158,
                  "name": "_voter",
                  "nodeType": "VariableDeclaration",
                  "scope": 3273,
                  "src": "10800:14:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3157,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "10800:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3160,
                  "name": "_executesIfDecided",
                  "nodeType": "VariableDeclaration",
                  "scope": 3273,
                  "src": "10824:23:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 3159,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "10824:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10741:112:10"
            },
            "payable": false,
            "returnParameters": {
              "id": 3162,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "10867:0:10"
            },
            "scope": 3488,
            "src": "10727:1157:10",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3289,
              "nodeType": "Block",
              "src": "11938:106:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3280,
                            "name": "_voteId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3275,
                            "src": "11968:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 3279,
                          "name": "_canExecute",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3405,
                          "src": "11956:11:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (uint256) view returns (bool)"
                          }
                        },
                        "id": 3281,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11956:20:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3282,
                        "name": "ERROR_CAN_NOT_EXECUTE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2564,
                        "src": "11978:21:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 3278,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        10407,
                        10408
                      ],
                      "referencedDeclaration": 10408,
                      "src": "11948:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3283,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11948:52:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3284,
                  "nodeType": "ExpressionStatement",
                  "src": "11948:52:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3286,
                        "name": "_voteId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3275,
                        "src": "12029:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 3285,
                      "name": "_unsafeExecuteVote",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3330,
                      "src": "12010:18:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 3287,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12010:27:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3288,
                  "nodeType": "ExpressionStatement",
                  "src": "12010:27:10"
                }
              ]
            },
            "documentation": null,
            "id": 3290,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "_executeVote",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3276,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3275,
                  "name": "_voteId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3290,
                  "src": "11912:15:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3274,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11912:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11911:17:10"
            },
            "payable": false,
            "returnParameters": {
              "id": 3277,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "11938:0:10"
            },
            "scope": 3488,
            "src": "11890:154:10",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3329,
              "nodeType": "Block",
              "src": "12227:274:10",
              "statements": [
                {
                  "assignments": [
                    3296
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3296,
                      "name": "vote_",
                      "nodeType": "VariableDeclaration",
                      "scope": 3330,
                      "src": "12237:18:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                        "typeString": "struct Voting.Vote"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 3295,
                        "name": "Vote",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2597,
                        "src": "12237:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                          "typeString": "struct Voting.Vote"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3300,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 3297,
                      "name": "votes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2609,
                      "src": "12258:5:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Vote_$2597_storage_$",
                        "typeString": "mapping(uint256 => struct Voting.Vote storage ref)"
                      }
                    },
                    "id": 3299,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 3298,
                      "name": "_voteId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3292,
                      "src": "12264:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "12258:14:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Vote_$2597_storage",
                      "typeString": "struct Voting.Vote storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12237:35:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3305,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3301,
                        "name": "vote_",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3296,
                        "src": "12283:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                          "typeString": "struct Voting.Vote storage pointer"
                        }
                      },
                      "id": 3303,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "executed",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2576,
                      "src": "12283:14:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 3304,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "12300:4:10",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "12283:21:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3306,
                  "nodeType": "ExpressionStatement",
                  "src": "12283:21:10"
                },
                {
                  "assignments": [
                    3308
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3308,
                      "name": "input",
                      "nodeType": "VariableDeclaration",
                      "scope": 3330,
                      "src": "12315:18:10",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 3307,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "12315:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3313,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 3311,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12346:1:10",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "id": 3310,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "12336:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_$",
                        "typeString": "function (uint256) pure returns (bytes memory)"
                      },
                      "typeName": {
                        "id": 3309,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "12340:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      }
                    },
                    "id": 3312,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12336:12:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12315:33:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3315,
                          "name": "vote_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3296,
                          "src": "12411:5:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                            "typeString": "struct Voting.Vote storage pointer"
                          }
                        },
                        "id": 3316,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "executionScript",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2592,
                        "src": "12411:21:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage",
                          "typeString": "bytes storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3317,
                        "name": "input",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3308,
                        "src": "12434:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 3321,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12455:1:10",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 3320,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "NewExpression",
                          "src": "12441:13:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_$",
                            "typeString": "function (uint256) pure returns (address[] memory)"
                          },
                          "typeName": {
                            "baseType": {
                              "id": 3318,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "12445:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 3319,
                            "length": null,
                            "nodeType": "ArrayTypeName",
                            "src": "12445:9:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                              "typeString": "address[]"
                            }
                          }
                        },
                        "id": 3322,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12441:16:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory",
                          "typeString": "address[] memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_storage",
                          "typeString": "bytes storage ref"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory",
                          "typeString": "address[] memory"
                        }
                      ],
                      "id": 3314,
                      "name": "runScript",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7419,
                      "src": "12401:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory,bytes memory,address[] memory) returns (bytes memory)"
                      }
                    },
                    "id": 3323,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12401:57:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "id": 3324,
                  "nodeType": "ExpressionStatement",
                  "src": "12401:57:10"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3326,
                        "name": "_voteId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3292,
                        "src": "12486:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 3325,
                      "name": "ExecuteVote",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2633,
                      "src": "12474:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 3327,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12474:20:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3328,
                  "nodeType": "EmitStatement",
                  "src": "12469:25:10"
                }
              ]
            },
            "documentation": "@dev Unsafe version of _executeVote that assumes you have already checked if the vote can be executed",
            "id": 3330,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "_unsafeExecuteVote",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3293,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3292,
                  "name": "_voteId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3330,
                  "src": "12201:15:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3291,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "12201:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12200:17:10"
            },
            "payable": false,
            "returnParameters": {
              "id": 3294,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "12227:0:10"
            },
            "scope": 3488,
            "src": "12173:328:10",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3404,
              "nodeType": "Block",
              "src": "12574:737:10",
              "statements": [
                {
                  "assignments": [
                    3338
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3338,
                      "name": "vote_",
                      "nodeType": "VariableDeclaration",
                      "scope": 3405,
                      "src": "12584:18:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                        "typeString": "struct Voting.Vote"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 3337,
                        "name": "Vote",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2597,
                        "src": "12584:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                          "typeString": "struct Voting.Vote"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3342,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 3339,
                      "name": "votes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2609,
                      "src": "12605:5:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Vote_$2597_storage_$",
                        "typeString": "mapping(uint256 => struct Voting.Vote storage ref)"
                      }
                    },
                    "id": 3341,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 3340,
                      "name": "_voteId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3332,
                      "src": "12611:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "12605:14:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Vote_$2597_storage",
                      "typeString": "struct Voting.Vote storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12584:35:10"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 3343,
                      "name": "vote_",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3338,
                      "src": "12634:5:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                        "typeString": "struct Voting.Vote storage pointer"
                      }
                    },
                    "id": 3344,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "executed",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 2576,
                    "src": "12634:14:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3348,
                  "nodeType": "IfStatement",
                  "src": "12630:57:10",
                  "trueBody": {
                    "id": 3347,
                    "nodeType": "Block",
                    "src": "12650:37:10",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 3345,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "12671:5:10",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 3336,
                        "id": 3346,
                        "nodeType": "Return",
                        "src": "12664:12:10"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3350,
                          "name": "vote_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3338,
                          "src": "12750:5:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                            "typeString": "struct Voting.Vote storage pointer"
                          }
                        },
                        "id": 3351,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "yea",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2586,
                        "src": "12750:9:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3352,
                          "name": "vote_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3338,
                          "src": "12761:5:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                            "typeString": "struct Voting.Vote storage pointer"
                          }
                        },
                        "id": 3353,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "votingPower",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2590,
                        "src": "12761:17:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3354,
                          "name": "vote_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3338,
                          "src": "12780:5:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                            "typeString": "struct Voting.Vote storage pointer"
                          }
                        },
                        "id": 3355,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "supportRequiredPct",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2582,
                        "src": "12780:24:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      ],
                      "id": 3349,
                      "name": "_isValuePct",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3487,
                      "src": "12738:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$",
                        "typeString": "function (uint256,uint256,uint256) pure returns (bool)"
                      }
                    },
                    "id": 3356,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12738:67:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3360,
                  "nodeType": "IfStatement",
                  "src": "12734:109:10",
                  "trueBody": {
                    "id": 3359,
                    "nodeType": "Block",
                    "src": "12807:36:10",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 3357,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "12828:4:10",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 3336,
                        "id": 3358,
                        "nodeType": "Return",
                        "src": "12821:11:10"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3362,
                        "name": "vote_",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3338,
                        "src": "12892:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                          "typeString": "struct Voting.Vote storage pointer"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                          "typeString": "struct Voting.Vote storage pointer"
                        }
                      ],
                      "id": 3361,
                      "name": "_isVoteOpen",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3455,
                      "src": "12880:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Vote_$2597_storage_ptr_$returns$_t_bool_$",
                        "typeString": "function (struct Voting.Vote storage pointer) view returns (bool)"
                      }
                    },
                    "id": 3363,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12880:18:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3367,
                  "nodeType": "IfStatement",
                  "src": "12876:61:10",
                  "trueBody": {
                    "id": 3366,
                    "nodeType": "Block",
                    "src": "12900:37:10",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 3364,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "12921:5:10",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 3336,
                        "id": 3365,
                        "nodeType": "Return",
                        "src": "12914:12:10"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    3369
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3369,
                      "name": "totalVotes",
                      "nodeType": "VariableDeclaration",
                      "scope": 3405,
                      "src": "12977:18:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3368,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "12977:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3376,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3373,
                          "name": "vote_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3338,
                          "src": "13012:5:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                            "typeString": "struct Voting.Vote storage pointer"
                          }
                        },
                        "id": 3374,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "nay",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2588,
                        "src": "13012:9:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3370,
                          "name": "vote_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3338,
                          "src": "12998:5:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                            "typeString": "struct Voting.Vote storage pointer"
                          }
                        },
                        "id": 3371,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "yea",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2586,
                        "src": "12998:9:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 3372,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "add",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9673,
                      "src": "12998:13:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 3375,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12998:24:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12977:45:10"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 3384,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "13036:61:10",
                    "subExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3378,
                            "name": "vote_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3338,
                            "src": "13049:5:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                              "typeString": "struct Voting.Vote storage pointer"
                            }
                          },
                          "id": 3379,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "yea",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2586,
                          "src": "13049:9:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 3380,
                          "name": "totalVotes",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3369,
                          "src": "13060:10:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3381,
                            "name": "vote_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3338,
                            "src": "13072:5:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                              "typeString": "struct Voting.Vote storage pointer"
                            }
                          },
                          "id": 3382,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "supportRequiredPct",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2582,
                          "src": "13072:24:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        ],
                        "id": 3377,
                        "name": "_isValuePct",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3487,
                        "src": "13037:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$",
                          "typeString": "function (uint256,uint256,uint256) pure returns (bool)"
                        }
                      },
                      "id": 3383,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "13037:60:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3388,
                  "nodeType": "IfStatement",
                  "src": "13032:104:10",
                  "trueBody": {
                    "id": 3387,
                    "nodeType": "Block",
                    "src": "13099:37:10",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 3385,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "13120:5:10",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 3336,
                        "id": 3386,
                        "nodeType": "Return",
                        "src": "13113:12:10"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 3397,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "13176:68:10",
                    "subExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3390,
                            "name": "vote_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3338,
                            "src": "13189:5:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                              "typeString": "struct Voting.Vote storage pointer"
                            }
                          },
                          "id": 3391,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "yea",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2586,
                          "src": "13189:9:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3392,
                            "name": "vote_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3338,
                            "src": "13200:5:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                              "typeString": "struct Voting.Vote storage pointer"
                            }
                          },
                          "id": 3393,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "votingPower",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2590,
                          "src": "13200:17:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3394,
                            "name": "vote_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3338,
                            "src": "13219:5:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                              "typeString": "struct Voting.Vote storage pointer"
                            }
                          },
                          "id": 3395,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "minAcceptQuorumPct",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2584,
                          "src": "13219:24:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        ],
                        "id": 3389,
                        "name": "_isValuePct",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3487,
                        "src": "13177:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$",
                          "typeString": "function (uint256,uint256,uint256) pure returns (bool)"
                        }
                      },
                      "id": 3396,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "13177:67:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3401,
                  "nodeType": "IfStatement",
                  "src": "13172:111:10",
                  "trueBody": {
                    "id": 3400,
                    "nodeType": "Block",
                    "src": "13246:37:10",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 3398,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "13267:5:10",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 3336,
                        "id": 3399,
                        "nodeType": "Return",
                        "src": "13260:12:10"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "74727565",
                    "id": 3402,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "13300:4:10",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 3336,
                  "id": 3403,
                  "nodeType": "Return",
                  "src": "13293:11:10"
                }
              ]
            },
            "documentation": null,
            "id": 3405,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "_canExecute",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3333,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3332,
                  "name": "_voteId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3405,
                  "src": "12528:15:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3331,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "12528:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12527:17:10"
            },
            "payable": false,
            "returnParameters": {
              "id": 3336,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3335,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3405,
                  "src": "12568:4:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 3334,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "12568:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12567:6:10"
            },
            "scope": 3488,
            "src": "12507:804:10",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3433,
              "nodeType": "Block",
              "src": "13397:142:10",
              "statements": [
                {
                  "assignments": [
                    3415
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3415,
                      "name": "vote_",
                      "nodeType": "VariableDeclaration",
                      "scope": 3434,
                      "src": "13407:18:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                        "typeString": "struct Voting.Vote"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 3414,
                        "name": "Vote",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2597,
                        "src": "13407:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                          "typeString": "struct Voting.Vote"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3419,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 3416,
                      "name": "votes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2609,
                      "src": "13428:5:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Vote_$2597_storage_$",
                        "typeString": "mapping(uint256 => struct Voting.Vote storage ref)"
                      }
                    },
                    "id": 3418,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 3417,
                      "name": "_voteId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3407,
                      "src": "13434:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "13428:14:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Vote_$2597_storage",
                      "typeString": "struct Voting.Vote storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "13407:35:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 3431,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 3421,
                          "name": "vote_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3415,
                          "src": "13472:5:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                            "typeString": "struct Voting.Vote storage pointer"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                            "typeString": "struct Voting.Vote storage pointer"
                          }
                        ],
                        "id": 3420,
                        "name": "_isVoteOpen",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3455,
                        "src": "13460:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_struct$_Vote_$2597_storage_ptr_$returns$_t_bool_$",
                          "typeString": "function (struct Voting.Vote storage pointer) view returns (bool)"
                        }
                      },
                      "id": 3422,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "13460:18:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 3430,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3425,
                            "name": "_voter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3409,
                            "src": "13500:6:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3426,
                              "name": "vote_",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3415,
                              "src": "13508:5:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                                "typeString": "struct Voting.Vote storage pointer"
                              }
                            },
                            "id": 3427,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "snapshotBlock",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2580,
                            "src": "13508:19:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 3423,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2599,
                            "src": "13482:5:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_MiniMeToken_$2462",
                              "typeString": "contract MiniMeToken"
                            }
                          },
                          "id": 3424,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "balanceOfAt",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1915,
                          "src": "13482:17:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_address_$_t_uint256_$returns$_t_uint256_$",
                            "typeString": "function (address,uint256) view external returns (uint256)"
                          }
                        },
                        "id": 3428,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "13482:46:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 3429,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "13531:1:10",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "13482:50:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "13460:72:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 3413,
                  "id": 3432,
                  "nodeType": "Return",
                  "src": "13453:79:10"
                }
              ]
            },
            "documentation": null,
            "id": 3434,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "_canVote",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3410,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3407,
                  "name": "_voteId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3434,
                  "src": "13335:15:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3406,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "13335:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3409,
                  "name": "_voter",
                  "nodeType": "VariableDeclaration",
                  "scope": 3434,
                  "src": "13352:14:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3408,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "13352:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "13334:33:10"
            },
            "payable": false,
            "returnParameters": {
              "id": 3413,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3412,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3434,
                  "src": "13391:4:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 3411,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "13391:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "13390:6:10"
            },
            "scope": 3488,
            "src": "13317:222:10",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3454,
              "nodeType": "Block",
              "src": "13615:91:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 3452,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      },
                      "id": 3448,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 3441,
                          "name": "getTimestamp64",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6830,
                          "src": "13632:14:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_uint64_$",
                            "typeString": "function () view returns (uint64)"
                          }
                        },
                        "id": 3442,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "13632:16:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "<",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3446,
                            "name": "voteTime",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2605,
                            "src": "13671:8:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3443,
                              "name": "vote_",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3436,
                              "src": "13651:5:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                                "typeString": "struct Voting.Vote storage pointer"
                              }
                            },
                            "id": 3444,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "startDate",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2578,
                            "src": "13651:15:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "id": 3445,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "add",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 9815,
                          "src": "13651:19:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint64_$_t_uint64_$returns$_t_uint64_$bound_to$_t_uint64_$",
                            "typeString": "function (uint64,uint64) pure returns (uint64)"
                          }
                        },
                        "id": 3447,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "13651:29:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      "src": "13632:48:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 3451,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "!",
                      "prefix": true,
                      "src": "13684:15:10",
                      "subExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3449,
                          "name": "vote_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3436,
                          "src": "13685:5:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                            "typeString": "struct Voting.Vote storage pointer"
                          }
                        },
                        "id": 3450,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "executed",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2576,
                        "src": "13685:14:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "13632:67:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 3440,
                  "id": 3453,
                  "nodeType": "Return",
                  "src": "13625:74:10"
                }
              ]
            },
            "documentation": null,
            "id": 3455,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "_isVoteOpen",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3437,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3436,
                  "name": "vote_",
                  "nodeType": "VariableDeclaration",
                  "scope": 3455,
                  "src": "13566:18:10",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                    "typeString": "struct Voting.Vote"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3435,
                    "name": "Vote",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2597,
                    "src": "13566:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                      "typeString": "struct Voting.Vote"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "13565:20:10"
            },
            "payable": false,
            "returnParameters": {
              "id": 3440,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3439,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3455,
                  "src": "13609:4:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 3438,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "13609:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "13608:6:10"
            },
            "scope": 3488,
            "src": "13545:161:10",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3486,
              "nodeType": "Block",
              "src": "13907:167:10",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3468,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3466,
                      "name": "_total",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3459,
                      "src": "13921:6:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 3467,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "13931:1:10",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "13921:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3472,
                  "nodeType": "IfStatement",
                  "src": "13917:54:10",
                  "trueBody": {
                    "id": 3471,
                    "nodeType": "Block",
                    "src": "13934:37:10",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 3469,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "13955:5:10",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 3465,
                        "id": 3470,
                        "nodeType": "Return",
                        "src": "13948:12:10"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    3474
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3474,
                      "name": "computedPct",
                      "nodeType": "VariableDeclaration",
                      "scope": 3487,
                      "src": "13981:19:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3473,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "13981:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3481,
                  "initialValue": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3480,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 3477,
                          "name": "PCT_BASE",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2540,
                          "src": "14014:8:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 3475,
                          "name": "_value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3457,
                          "src": "14003:6:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3476,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "mul",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 9598,
                        "src": "14003:10:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 3478,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "14003:20:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "/",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 3479,
                      "name": "_total",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3459,
                      "src": "14026:6:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "14003:29:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "13981:51:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3484,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3482,
                      "name": "computedPct",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3474,
                      "src": "14049:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 3483,
                      "name": "_pct",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3461,
                      "src": "14063:4:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "14049:18:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 3465,
                  "id": 3485,
                  "nodeType": "Return",
                  "src": "14042:25:10"
                }
              ]
            },
            "documentation": "@dev Calculates whether `_value` is more than a percentage `_pct` of `_total`",
            "id": 3487,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "_isValuePct",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3462,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3457,
                  "name": "_value",
                  "nodeType": "VariableDeclaration",
                  "scope": 3487,
                  "src": "13832:14:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3456,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "13832:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3459,
                  "name": "_total",
                  "nodeType": "VariableDeclaration",
                  "scope": 3487,
                  "src": "13848:14:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3458,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "13848:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3461,
                  "name": "_pct",
                  "nodeType": "VariableDeclaration",
                  "scope": 3487,
                  "src": "13864:12:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3460,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "13864:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "13831:46:10"
            },
            "payable": false,
            "returnParameters": {
              "id": 3465,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3464,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3487,
                  "src": "13901:4:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 3463,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "13901:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "13900:6:10"
            },
            "scope": 3488,
            "src": "13811:263:10",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          }
        ],
        "scope": 3489,
        "src": "360:13716:10"
      }
    ],
    "src": "57:14020:10"
  },
  "legacyAST": {
    "absolutePath": "@aragon/apps-voting/contracts/Voting.sol",
    "exportedSymbols": {
      "Voting": [
        3488
      ]
    },
    "id": 3489,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 2505,
        "literals": [
          "solidity",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "57:23:10"
      },
      {
        "absolutePath": "@aragon/os/contracts/apps/AragonApp.sol",
        "file": "@aragon/os/contracts/apps/AragonApp.sol",
        "id": 2506,
        "nodeType": "ImportDirective",
        "scope": 3489,
        "sourceUnit": 6121,
        "src": "82:49:10",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/common/IForwarder.sol",
        "file": "@aragon/os/contracts/common/IForwarder.sol",
        "id": 2507,
        "nodeType": "ImportDirective",
        "scope": 3489,
        "sourceUnit": 6316,
        "src": "132:52:10",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/lib/math/SafeMath.sol",
        "file": "@aragon/os/contracts/lib/math/SafeMath.sol",
        "id": 2508,
        "nodeType": "ImportDirective",
        "scope": 3489,
        "sourceUnit": 9696,
        "src": "186:52:10",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/lib/math/SafeMath64.sol",
        "file": "@aragon/os/contracts/lib/math/SafeMath64.sol",
        "id": 2509,
        "nodeType": "ImportDirective",
        "scope": 3489,
        "sourceUnit": 9838,
        "src": "239:54:10",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/apps-shared-minime/contracts/MiniMeToken.sol",
        "file": "@aragon/apps-shared-minime/contracts/MiniMeToken.sol",
        "id": 2510,
        "nodeType": "ImportDirective",
        "scope": 3489,
        "sourceUnit": 2504,
        "src": "295:62:10",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 2511,
              "name": "IForwarder",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 6315,
              "src": "379:10:10",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IForwarder_$6315",
                "typeString": "contract IForwarder"
              }
            },
            "id": 2512,
            "nodeType": "InheritanceSpecifier",
            "src": "379:10:10"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 2513,
              "name": "AragonApp",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 6120,
              "src": "391:9:10",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_AragonApp_$6120",
                "typeString": "contract AragonApp"
              }
            },
            "id": 2514,
            "nodeType": "InheritanceSpecifier",
            "src": "391:9:10"
          }
        ],
        "contractDependencies": [
          5208,
          5996,
          6120,
          6133,
          6293,
          6315,
          6343,
          6441,
          6469,
          6502,
          6539,
          6831,
          7053,
          7454,
          7481,
          8745
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 3488,
        "linearizedBaseContracts": [
          3488,
          6120,
          5208,
          7454,
          8745,
          7481,
          6539,
          7053,
          6469,
          6293,
          6343,
          6133,
          6502,
          6441,
          6831,
          5996,
          6315
        ],
        "name": "Voting",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 2517,
            "libraryName": {
              "contractScope": null,
              "id": 2515,
              "name": "SafeMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 9695,
              "src": "413:8:10",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SafeMath_$9695",
                "typeString": "library SafeMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "407:27:10",
            "typeName": {
              "id": 2516,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "426:7:10",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "id": 2520,
            "libraryName": {
              "contractScope": null,
              "id": 2518,
              "name": "SafeMath64",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 9837,
              "src": "445:10:10",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SafeMath64_$9837",
                "typeString": "library SafeMath64"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "439:28:10",
            "typeName": {
              "id": 2519,
              "name": "uint64",
              "nodeType": "ElementaryTypeName",
              "src": "460:6:10",
              "typeDescriptions": {
                "typeIdentifier": "t_uint64",
                "typeString": "uint64"
              }
            }
          },
          {
            "constant": true,
            "id": 2525,
            "name": "CREATE_VOTES_ROLE",
            "nodeType": "VariableDeclaration",
            "scope": 3488,
            "src": "473:74:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 2521,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "473:7:10",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "argumentTypes": null,
              "arguments": [
                {
                  "argumentTypes": null,
                  "hexValue": "4352454154455f564f5445535f524f4c45",
                  "id": 2523,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "string",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "527:19:10",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_stringliteral_e7dcd7275292e064d090fbc5f3bd7995be23b502c1fed5cd94cfddbbdcd32bbc",
                    "typeString": "literal_string \"CREATE_VOTES_ROLE\""
                  },
                  "value": "CREATE_VOTES_ROLE"
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_stringliteral_e7dcd7275292e064d090fbc5f3bd7995be23b502c1fed5cd94cfddbbdcd32bbc",
                    "typeString": "literal_string \"CREATE_VOTES_ROLE\""
                  }
                ],
                "id": 2522,
                "name": "keccak256",
                "nodeType": "Identifier",
                "overloadedDeclarations": [],
                "referencedDeclaration": 10398,
                "src": "517:9:10",
                "typeDescriptions": {
                  "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                  "typeString": "function () pure returns (bytes32)"
                }
              },
              "id": 2524,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "functionCall",
              "lValueRequested": false,
              "names": [],
              "nodeType": "FunctionCall",
              "src": "517:30:10",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 2530,
            "name": "MODIFY_SUPPORT_ROLE",
            "nodeType": "VariableDeclaration",
            "scope": 3488,
            "src": "553:78:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 2526,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "553:7:10",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "argumentTypes": null,
              "arguments": [
                {
                  "argumentTypes": null,
                  "hexValue": "4d4f444946595f535550504f52545f524f4c45",
                  "id": 2528,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "string",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "609:21:10",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_stringliteral_da3972983e62bdf826c4b807c4c9c2b8a941e1f83dfa76d53d6aeac11e1be650",
                    "typeString": "literal_string \"MODIFY_SUPPORT_ROLE\""
                  },
                  "value": "MODIFY_SUPPORT_ROLE"
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_stringliteral_da3972983e62bdf826c4b807c4c9c2b8a941e1f83dfa76d53d6aeac11e1be650",
                    "typeString": "literal_string \"MODIFY_SUPPORT_ROLE\""
                  }
                ],
                "id": 2527,
                "name": "keccak256",
                "nodeType": "Identifier",
                "overloadedDeclarations": [],
                "referencedDeclaration": 10398,
                "src": "599:9:10",
                "typeDescriptions": {
                  "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                  "typeString": "function () pure returns (bytes32)"
                }
              },
              "id": 2529,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "functionCall",
              "lValueRequested": false,
              "names": [],
              "nodeType": "FunctionCall",
              "src": "599:32:10",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 2535,
            "name": "MODIFY_QUORUM_ROLE",
            "nodeType": "VariableDeclaration",
            "scope": 3488,
            "src": "637:76:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 2531,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "637:7:10",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "argumentTypes": null,
              "arguments": [
                {
                  "argumentTypes": null,
                  "hexValue": "4d4f444946595f51554f52554d5f524f4c45",
                  "id": 2533,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "string",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "692:20:10",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_stringliteral_ad15e7261800b4bb73f1b69d3864565ffb1fd00cb93cf14fe48da8f1f2149f39",
                    "typeString": "literal_string \"MODIFY_QUORUM_ROLE\""
                  },
                  "value": "MODIFY_QUORUM_ROLE"
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_stringliteral_ad15e7261800b4bb73f1b69d3864565ffb1fd00cb93cf14fe48da8f1f2149f39",
                    "typeString": "literal_string \"MODIFY_QUORUM_ROLE\""
                  }
                ],
                "id": 2532,
                "name": "keccak256",
                "nodeType": "Identifier",
                "overloadedDeclarations": [],
                "referencedDeclaration": 10398,
                "src": "682:9:10",
                "typeDescriptions": {
                  "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                  "typeString": "function () pure returns (bytes32)"
                }
              },
              "id": 2534,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "functionCall",
              "lValueRequested": false,
              "names": [],
              "nodeType": "FunctionCall",
              "src": "682:31:10",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 2540,
            "name": "PCT_BASE",
            "nodeType": "VariableDeclaration",
            "scope": 3488,
            "src": "720:42:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint64",
              "typeString": "uint64"
            },
            "typeName": {
              "id": 2536,
              "name": "uint64",
              "nodeType": "ElementaryTypeName",
              "src": "720:6:10",
              "typeDescriptions": {
                "typeIdentifier": "t_uint64",
                "typeString": "uint64"
              }
            },
            "value": {
              "argumentTypes": null,
              "commonType": {
                "typeIdentifier": "t_rational_1000000000000000000_by_1",
                "typeString": "int_const 1000000000000000000"
              },
              "id": 2539,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "lValueRequested": false,
              "leftExpression": {
                "argumentTypes": null,
                "hexValue": "3130",
                "id": 2537,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "754:2:10",
                "subdenomination": null,
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_10_by_1",
                  "typeString": "int_const 10"
                },
                "value": "10"
              },
              "nodeType": "BinaryOperation",
              "operator": "**",
              "rightExpression": {
                "argumentTypes": null,
                "hexValue": "3138",
                "id": 2538,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "760:2:10",
                "subdenomination": null,
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_18_by_1",
                  "typeString": "int_const 18"
                },
                "value": "18"
              },
              "src": "754:8:10",
              "typeDescriptions": {
                "typeIdentifier": "t_rational_1000000000000000000_by_1",
                "typeString": "int_const 1000000000000000000"
              }
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 2543,
            "name": "ERROR_NO_VOTE",
            "nodeType": "VariableDeclaration",
            "scope": 3488,
            "src": "805:56:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 2541,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "805:6:10",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "564f54494e475f4e4f5f564f5445",
              "id": 2542,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "845:16:10",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_d4e7a378565f7e8724f3afe49b49b5b53d55c8b85ecc478c539d5f3066c466ca",
                "typeString": "literal_string \"VOTING_NO_VOTE\""
              },
              "value": "VOTING_NO_VOTE"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 2546,
            "name": "ERROR_INIT_PCTS",
            "nodeType": "VariableDeclaration",
            "scope": 3488,
            "src": "867:60:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 2544,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "867:6:10",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "564f54494e475f494e49545f50435453",
              "id": 2545,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "909:18:10",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_6fe3353225d510c9f38bcc5cb3371a9eabd299213c6c415b56b641a75492373f",
                "typeString": "literal_string \"VOTING_INIT_PCTS\""
              },
              "value": "VOTING_INIT_PCTS"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 2549,
            "name": "ERROR_CHANGE_SUPPORT_PCTS",
            "nodeType": "VariableDeclaration",
            "scope": 3488,
            "src": "933:80:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 2547,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "933:6:10",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "564f54494e475f4348414e47455f535550504f52545f50435453",
              "id": 2548,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "985:28:10",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_bbce4f9de9ad252169867334bbc95c973030be8d4534544eaa1c1893e434472b",
                "typeString": "literal_string \"VOTING_CHANGE_SUPPORT_PCTS\""
              },
              "value": "VOTING_CHANGE_SUPPORT_PCTS"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 2552,
            "name": "ERROR_CHANGE_QUORUM_PCTS",
            "nodeType": "VariableDeclaration",
            "scope": 3488,
            "src": "1019:78:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 2550,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1019:6:10",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "564f54494e475f4348414e47455f51554f52554d5f50435453",
              "id": 2551,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1070:27:10",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_5779a0804ef26050aed8e7ea88d8cfab54776e2b6d5815a5484e86fbdf3b4ec6",
                "typeString": "literal_string \"VOTING_CHANGE_QUORUM_PCTS\""
              },
              "value": "VOTING_CHANGE_QUORUM_PCTS"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 2555,
            "name": "ERROR_INIT_SUPPORT_TOO_BIG",
            "nodeType": "VariableDeclaration",
            "scope": 3488,
            "src": "1103:82:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 2553,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1103:6:10",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "564f54494e475f494e49545f535550504f52545f544f4f5f424947",
              "id": 2554,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1156:29:10",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_a9d8ceb2f2cc9646add9d9405c6f276fc989687a807d2879d7d034c0d4141b54",
                "typeString": "literal_string \"VOTING_INIT_SUPPORT_TOO_BIG\""
              },
              "value": "VOTING_INIT_SUPPORT_TOO_BIG"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 2558,
            "name": "ERROR_CHANGE_SUPPORT_TOO_BIG",
            "nodeType": "VariableDeclaration",
            "scope": 3488,
            "src": "1191:83:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 2556,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1191:6:10",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "564f54494e475f4348414e47455f535550505f544f4f5f424947",
              "id": 2557,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1246:28:10",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_a988aaf15f02d48924f860af070bbe949ae7d371d3f97038169697e9a200fc4d",
                "typeString": "literal_string \"VOTING_CHANGE_SUPP_TOO_BIG\""
              },
              "value": "VOTING_CHANGE_SUPP_TOO_BIG"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 2561,
            "name": "ERROR_CAN_NOT_VOTE",
            "nodeType": "VariableDeclaration",
            "scope": 3488,
            "src": "1280:66:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 2559,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1280:6:10",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "564f54494e475f43414e5f4e4f545f564f5445",
              "id": 2560,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1325:21:10",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_d15ecba3c2de6be04ae931794f9dbe722fd5f34858b1288ba9910becaae808d3",
                "typeString": "literal_string \"VOTING_CAN_NOT_VOTE\""
              },
              "value": "VOTING_CAN_NOT_VOTE"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 2564,
            "name": "ERROR_CAN_NOT_EXECUTE",
            "nodeType": "VariableDeclaration",
            "scope": 3488,
            "src": "1352:72:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 2562,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1352:6:10",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "564f54494e475f43414e5f4e4f545f45584543555445",
              "id": 2563,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1400:24:10",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_a71d666a1ee845f244a2074cc2a52f257c6da2ad8ed26b4f88ad787af060b34c",
                "typeString": "literal_string \"VOTING_CAN_NOT_EXECUTE\""
              },
              "value": "VOTING_CAN_NOT_EXECUTE"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 2567,
            "name": "ERROR_CAN_NOT_FORWARD",
            "nodeType": "VariableDeclaration",
            "scope": 3488,
            "src": "1430:72:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 2565,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1430:6:10",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "564f54494e475f43414e5f4e4f545f464f5257415244",
              "id": 2566,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1478:24:10",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_43bc53280d1b3f609b6645415cebcf10834d13c5f6dbdfe2aa9d66ed459b806a",
                "typeString": "literal_string \"VOTING_CAN_NOT_FORWARD\""
              },
              "value": "VOTING_CAN_NOT_FORWARD"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 2570,
            "name": "ERROR_NO_VOTING_POWER",
            "nodeType": "VariableDeclaration",
            "scope": 3488,
            "src": "1508:72:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 2568,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1508:6:10",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "564f54494e475f4e4f5f564f54494e475f504f574552",
              "id": 2569,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1556:24:10",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_57804431f2c60d894b28e15e405d13c19f770b55e55030aa1c36d64decde578f",
                "typeString": "literal_string \"VOTING_NO_VOTING_POWER\""
              },
              "value": "VOTING_NO_VOTING_POWER"
            },
            "visibility": "private"
          },
          {
            "canonicalName": "Voting.VoterState",
            "id": 2574,
            "members": [
              {
                "id": 2571,
                "name": "Absent",
                "nodeType": "EnumValue",
                "src": "1605:6:10"
              },
              {
                "id": 2572,
                "name": "Yea",
                "nodeType": "EnumValue",
                "src": "1613:3:10"
              },
              {
                "id": 2573,
                "name": "Nay",
                "nodeType": "EnumValue",
                "src": "1618:3:10"
              }
            ],
            "name": "VoterState",
            "nodeType": "EnumDefinition",
            "src": "1587:36:10"
          },
          {
            "canonicalName": "Voting.Vote",
            "id": 2597,
            "members": [
              {
                "constant": false,
                "id": 2576,
                "name": "executed",
                "nodeType": "VariableDeclaration",
                "scope": 2597,
                "src": "1651:13:10",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                },
                "typeName": {
                  "id": 2575,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "1651:4:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2578,
                "name": "startDate",
                "nodeType": "VariableDeclaration",
                "scope": 2597,
                "src": "1674:16:10",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint64",
                  "typeString": "uint64"
                },
                "typeName": {
                  "id": 2577,
                  "name": "uint64",
                  "nodeType": "ElementaryTypeName",
                  "src": "1674:6:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2580,
                "name": "snapshotBlock",
                "nodeType": "VariableDeclaration",
                "scope": 2597,
                "src": "1700:20:10",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint64",
                  "typeString": "uint64"
                },
                "typeName": {
                  "id": 2579,
                  "name": "uint64",
                  "nodeType": "ElementaryTypeName",
                  "src": "1700:6:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2582,
                "name": "supportRequiredPct",
                "nodeType": "VariableDeclaration",
                "scope": 2597,
                "src": "1730:25:10",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint64",
                  "typeString": "uint64"
                },
                "typeName": {
                  "id": 2581,
                  "name": "uint64",
                  "nodeType": "ElementaryTypeName",
                  "src": "1730:6:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2584,
                "name": "minAcceptQuorumPct",
                "nodeType": "VariableDeclaration",
                "scope": 2597,
                "src": "1765:25:10",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint64",
                  "typeString": "uint64"
                },
                "typeName": {
                  "id": 2583,
                  "name": "uint64",
                  "nodeType": "ElementaryTypeName",
                  "src": "1765:6:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2586,
                "name": "yea",
                "nodeType": "VariableDeclaration",
                "scope": 2597,
                "src": "1800:11:10",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 2585,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1800:7:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2588,
                "name": "nay",
                "nodeType": "VariableDeclaration",
                "scope": 2597,
                "src": "1821:11:10",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 2587,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1821:7:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2590,
                "name": "votingPower",
                "nodeType": "VariableDeclaration",
                "scope": 2597,
                "src": "1842:19:10",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 2589,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1842:7:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2592,
                "name": "executionScript",
                "nodeType": "VariableDeclaration",
                "scope": 2597,
                "src": "1871:21:10",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes_storage_ptr",
                  "typeString": "bytes"
                },
                "typeName": {
                  "id": 2591,
                  "name": "bytes",
                  "nodeType": "ElementaryTypeName",
                  "src": "1871:5:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_storage_ptr",
                    "typeString": "bytes"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2596,
                "name": "voters",
                "nodeType": "VariableDeclaration",
                "scope": 2597,
                "src": "1902:38:10",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_enum$_VoterState_$2574_$",
                  "typeString": "mapping(address => enum Voting.VoterState)"
                },
                "typeName": {
                  "id": 2595,
                  "keyType": {
                    "id": 2593,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1911:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "1902:31:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_enum$_VoterState_$2574_$",
                    "typeString": "mapping(address => enum Voting.VoterState)"
                  },
                  "valueType": {
                    "contractScope": null,
                    "id": 2594,
                    "name": "VoterState",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2574,
                    "src": "1922:10:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_VoterState_$2574",
                      "typeString": "enum Voting.VoterState"
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Vote",
            "nodeType": "StructDefinition",
            "scope": 3488,
            "src": "1629:318:10",
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2599,
            "name": "token",
            "nodeType": "VariableDeclaration",
            "scope": 3488,
            "src": "1953:24:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_MiniMeToken_$2462",
              "typeString": "contract MiniMeToken"
            },
            "typeName": {
              "contractScope": null,
              "id": 2598,
              "name": "MiniMeToken",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 2462,
              "src": "1953:11:10",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_MiniMeToken_$2462",
                "typeString": "contract MiniMeToken"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2601,
            "name": "supportRequiredPct",
            "nodeType": "VariableDeclaration",
            "scope": 3488,
            "src": "1983:32:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint64",
              "typeString": "uint64"
            },
            "typeName": {
              "id": 2600,
              "name": "uint64",
              "nodeType": "ElementaryTypeName",
              "src": "1983:6:10",
              "typeDescriptions": {
                "typeIdentifier": "t_uint64",
                "typeString": "uint64"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2603,
            "name": "minAcceptQuorumPct",
            "nodeType": "VariableDeclaration",
            "scope": 3488,
            "src": "2021:32:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint64",
              "typeString": "uint64"
            },
            "typeName": {
              "id": 2602,
              "name": "uint64",
              "nodeType": "ElementaryTypeName",
              "src": "2021:6:10",
              "typeDescriptions": {
                "typeIdentifier": "t_uint64",
                "typeString": "uint64"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2605,
            "name": "voteTime",
            "nodeType": "VariableDeclaration",
            "scope": 3488,
            "src": "2059:22:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint64",
              "typeString": "uint64"
            },
            "typeName": {
              "id": 2604,
              "name": "uint64",
              "nodeType": "ElementaryTypeName",
              "src": "2059:6:10",
              "typeDescriptions": {
                "typeIdentifier": "t_uint64",
                "typeString": "uint64"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2609,
            "name": "votes",
            "nodeType": "VariableDeclaration",
            "scope": 3488,
            "src": "2180:40:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Vote_$2597_storage_$",
              "typeString": "mapping(uint256 => struct Voting.Vote)"
            },
            "typeName": {
              "id": 2608,
              "keyType": {
                "id": 2606,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "2189:7:10",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "nodeType": "Mapping",
              "src": "2180:25:10",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Vote_$2597_storage_$",
                "typeString": "mapping(uint256 => struct Voting.Vote)"
              },
              "valueType": {
                "contractScope": null,
                "id": 2607,
                "name": "Vote",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 2597,
                "src": "2200:4:10",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                  "typeString": "struct Voting.Vote"
                }
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 2611,
            "name": "votesLength",
            "nodeType": "VariableDeclaration",
            "scope": 3488,
            "src": "2226:26:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2610,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "2226:7:10",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 2619,
            "name": "StartVote",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2618,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2613,
                  "indexed": true,
                  "name": "voteId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2619,
                  "src": "2275:22:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2612,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2275:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2615,
                  "indexed": true,
                  "name": "creator",
                  "nodeType": "VariableDeclaration",
                  "scope": 2619,
                  "src": "2299:23:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2614,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2299:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2617,
                  "indexed": false,
                  "name": "metadata",
                  "nodeType": "VariableDeclaration",
                  "scope": 2619,
                  "src": "2324:15:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2616,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2324:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2274:66:10"
            },
            "src": "2259:82:10"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 2629,
            "name": "CastVote",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2628,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2621,
                  "indexed": true,
                  "name": "voteId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2629,
                  "src": "2361:22:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2620,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2361:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2623,
                  "indexed": true,
                  "name": "voter",
                  "nodeType": "VariableDeclaration",
                  "scope": 2629,
                  "src": "2385:21:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2622,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2385:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2625,
                  "indexed": false,
                  "name": "supports",
                  "nodeType": "VariableDeclaration",
                  "scope": 2629,
                  "src": "2408:13:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2624,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2408:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2627,
                  "indexed": false,
                  "name": "stake",
                  "nodeType": "VariableDeclaration",
                  "scope": 2629,
                  "src": "2423:13:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2626,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2423:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2360:77:10"
            },
            "src": "2346:92:10"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 2633,
            "name": "ExecuteVote",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2632,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2631,
                  "indexed": true,
                  "name": "voteId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2633,
                  "src": "2461:22:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2630,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2461:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2460:24:10"
            },
            "src": "2443:42:10"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 2637,
            "name": "ChangeSupportRequired",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2636,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2635,
                  "indexed": false,
                  "name": "supportRequiredPct",
                  "nodeType": "VariableDeclaration",
                  "scope": 2637,
                  "src": "2518:25:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 2634,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "2518:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2517:27:10"
            },
            "src": "2490:55:10"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 2641,
            "name": "ChangeMinQuorum",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2640,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2639,
                  "indexed": false,
                  "name": "minAcceptQuorumPct",
                  "nodeType": "VariableDeclaration",
                  "scope": 2641,
                  "src": "2572:25:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 2638,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "2572:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2571:27:10"
            },
            "src": "2550:49:10"
          },
          {
            "body": {
              "id": 2653,
              "nodeType": "Block",
              "src": "2642:73:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2648,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 2646,
                          "name": "_voteId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2643,
                          "src": "2660:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 2647,
                          "name": "votesLength",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2611,
                          "src": "2670:11:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2660:21:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2649,
                        "name": "ERROR_NO_VOTE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2543,
                        "src": "2683:13:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 2645,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        10407,
                        10408
                      ],
                      "referencedDeclaration": 10408,
                      "src": "2652:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2650,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2652:45:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2651,
                  "nodeType": "ExpressionStatement",
                  "src": "2652:45:10"
                },
                {
                  "id": 2652,
                  "nodeType": "PlaceholderStatement",
                  "src": "2707:1:10"
                }
              ]
            },
            "documentation": null,
            "id": 2654,
            "name": "voteExists",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 2644,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2643,
                  "name": "_voteId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2654,
                  "src": "2625:15:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2642,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2625:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2624:17:10"
            },
            "src": "2605:110:10",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2700,
              "nodeType": "Block",
              "src": "3734:341:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 2667,
                      "name": "initialized",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6426,
                      "src": "3744:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 2668,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3744:13:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2669,
                  "nodeType": "ExpressionStatement",
                  "src": "3744:13:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "id": 2673,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 2671,
                          "name": "_minAcceptQuorumPct",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2660,
                          "src": "3776:19:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 2672,
                          "name": "_supportRequiredPct",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2658,
                          "src": "3799:19:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "src": "3776:42:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2674,
                        "name": "ERROR_INIT_PCTS",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2546,
                        "src": "3820:15:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 2670,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        10407,
                        10408
                      ],
                      "referencedDeclaration": 10408,
                      "src": "3768:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2675,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3768:68:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2676,
                  "nodeType": "ExpressionStatement",
                  "src": "3768:68:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "id": 2680,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 2678,
                          "name": "_supportRequiredPct",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2658,
                          "src": "3854:19:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 2679,
                          "name": "PCT_BASE",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2540,
                          "src": "3876:8:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "src": "3854:30:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2681,
                        "name": "ERROR_INIT_SUPPORT_TOO_BIG",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2555,
                        "src": "3886:26:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 2677,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        10407,
                        10408
                      ],
                      "referencedDeclaration": 10408,
                      "src": "3846:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2682,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3846:67:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2683,
                  "nodeType": "ExpressionStatement",
                  "src": "3846:67:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2686,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2684,
                      "name": "token",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2599,
                      "src": "3924:5:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_MiniMeToken_$2462",
                        "typeString": "contract MiniMeToken"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2685,
                      "name": "_token",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2656,
                      "src": "3932:6:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_MiniMeToken_$2462",
                        "typeString": "contract MiniMeToken"
                      }
                    },
                    "src": "3924:14:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_MiniMeToken_$2462",
                      "typeString": "contract MiniMeToken"
                    }
                  },
                  "id": 2687,
                  "nodeType": "ExpressionStatement",
                  "src": "3924:14:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2690,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2688,
                      "name": "supportRequiredPct",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2601,
                      "src": "3948:18:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2689,
                      "name": "_supportRequiredPct",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2658,
                      "src": "3969:19:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "src": "3948:40:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "id": 2691,
                  "nodeType": "ExpressionStatement",
                  "src": "3948:40:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2694,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2692,
                      "name": "minAcceptQuorumPct",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2603,
                      "src": "3998:18:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2693,
                      "name": "_minAcceptQuorumPct",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2660,
                      "src": "4019:19:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "src": "3998:40:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "id": 2695,
                  "nodeType": "ExpressionStatement",
                  "src": "3998:40:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2698,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2696,
                      "name": "voteTime",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2605,
                      "src": "4048:8:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2697,
                      "name": "_voteTime",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2662,
                      "src": "4059:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "src": "4048:20:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "id": 2699,
                  "nodeType": "ExpressionStatement",
                  "src": "4048:20:10"
                }
              ]
            },
            "documentation": "@notice Initialize Voting app with `_token.symbol(): string` for governance, minimum support of `@formatPct(_supportRequiredPct)`%, minimum acceptance quorum of `@formatPct(_minAcceptQuorumPct)`%, and a voting duration of `@transformTime(_voteTime)`\n@param _token MiniMeToken Address that will be used as governance token\n@param _supportRequiredPct Percentage of yeas in casted votes for a vote to succeed (expressed as a percentage of 10^18; eg. 10^16 = 1%, 10^18 = 100%)\n@param _minAcceptQuorumPct Percentage of yeas in total possible votes for a vote to succeed (expressed as a percentage of 10^18; eg. 10^16 = 1%, 10^18 = 100%)\n@param _voteTime Seconds that a vote will be open for token holders to vote (unless enough yeas or nays have been cast to make an early decision)",
            "id": 2701,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 2665,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2664,
                  "name": "onlyInit",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 6373,
                  "src": "3721:8:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3721:8:10"
              }
            ],
            "name": "initialize",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2663,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2656,
                  "name": "_token",
                  "nodeType": "VariableDeclaration",
                  "scope": 2701,
                  "src": "3573:18:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_MiniMeToken_$2462",
                    "typeString": "contract MiniMeToken"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2655,
                    "name": "MiniMeToken",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2462,
                    "src": "3573:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_MiniMeToken_$2462",
                      "typeString": "contract MiniMeToken"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2658,
                  "name": "_supportRequiredPct",
                  "nodeType": "VariableDeclaration",
                  "scope": 2701,
                  "src": "3601:26:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 2657,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "3601:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2660,
                  "name": "_minAcceptQuorumPct",
                  "nodeType": "VariableDeclaration",
                  "scope": 2701,
                  "src": "3637:26:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 2659,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "3637:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2662,
                  "name": "_voteTime",
                  "nodeType": "VariableDeclaration",
                  "scope": 2701,
                  "src": "3673:16:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 2661,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "3673:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3563:132:10"
            },
            "payable": false,
            "returnParameters": {
              "id": 2666,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3734:0:10"
            },
            "scope": 3488,
            "src": "3544:531:10",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2739,
              "nodeType": "Block",
              "src": "4408:281:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "id": 2720,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 2718,
                          "name": "minAcceptQuorumPct",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2603,
                          "src": "4426:18:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 2719,
                          "name": "_supportRequiredPct",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2703,
                          "src": "4448:19:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "src": "4426:41:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2721,
                        "name": "ERROR_CHANGE_SUPPORT_PCTS",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2549,
                        "src": "4469:25:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 2717,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        10407,
                        10408
                      ],
                      "referencedDeclaration": 10408,
                      "src": "4418:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2722,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4418:77:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2723,
                  "nodeType": "ExpressionStatement",
                  "src": "4418:77:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "id": 2727,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 2725,
                          "name": "_supportRequiredPct",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2703,
                          "src": "4513:19:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 2726,
                          "name": "PCT_BASE",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2540,
                          "src": "4535:8:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "src": "4513:30:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2728,
                        "name": "ERROR_CHANGE_SUPPORT_TOO_BIG",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2558,
                        "src": "4545:28:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 2724,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        10407,
                        10408
                      ],
                      "referencedDeclaration": 10408,
                      "src": "4505:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2729,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4505:69:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2730,
                  "nodeType": "ExpressionStatement",
                  "src": "4505:69:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2733,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2731,
                      "name": "supportRequiredPct",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2601,
                      "src": "4584:18:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2732,
                      "name": "_supportRequiredPct",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2703,
                      "src": "4605:19:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "src": "4584:40:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "id": 2734,
                  "nodeType": "ExpressionStatement",
                  "src": "4584:40:10"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2736,
                        "name": "_supportRequiredPct",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2703,
                        "src": "4662:19:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      ],
                      "id": 2735,
                      "name": "ChangeSupportRequired",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2637,
                      "src": "4640:21:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$",
                        "typeString": "function (uint64)"
                      }
                    },
                    "id": 2737,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4640:42:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2738,
                  "nodeType": "EmitStatement",
                  "src": "4635:47:10"
                }
              ]
            },
            "documentation": "@notice Change required support to `@formatPct(_supportRequiredPct)`%\n@param _supportRequiredPct New required support",
            "id": 2740,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 2706,
                    "name": "MODIFY_SUPPORT_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2530,
                    "src": "4319:19:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2709,
                            "name": "_supportRequiredPct",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2703,
                            "src": "4352:19:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          ],
                          "id": 2708,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4344:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": "uint256"
                        },
                        "id": 2710,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4344:28:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2712,
                            "name": "supportRequiredPct",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2601,
                            "src": "4382:18:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          ],
                          "id": 2711,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4374:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": "uint256"
                        },
                        "id": 2713,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4374:27:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2707,
                      "name": "arr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4798,
                        4813,
                        4833,
                        4848,
                        4868,
                        4889,
                        4913,
                        4933,
                        4962,
                        4987,
                        5012,
                        5035,
                        5066,
                        5105,
                        5152,
                        5207
                      ],
                      "referencedDeclaration": 5066,
                      "src": "4340:3:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256[] memory)"
                      }
                    },
                    "id": 2714,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4340:62:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  }
                ],
                "id": 2715,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2705,
                  "name": "authP",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 6059,
                  "src": "4313:5:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                    "typeString": "modifier (bytes32,uint256[] memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "4313:90:10"
              }
            ],
            "name": "changeSupportRequiredPct",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2704,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2703,
                  "name": "_supportRequiredPct",
                  "nodeType": "VariableDeclaration",
                  "scope": 2740,
                  "src": "4260:26:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 2702,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "4260:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4259:28:10"
            },
            "payable": false,
            "returnParameters": {
              "id": 2716,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4408:0:10"
            },
            "scope": 3488,
            "src": "4226:463:10",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2771,
              "nodeType": "Block",
              "src": "5031:195:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "id": 2759,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 2757,
                          "name": "_minAcceptQuorumPct",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2742,
                          "src": "5049:19:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 2758,
                          "name": "supportRequiredPct",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2601,
                          "src": "5072:18:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "src": "5049:41:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2760,
                        "name": "ERROR_CHANGE_QUORUM_PCTS",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2552,
                        "src": "5092:24:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 2756,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        10407,
                        10408
                      ],
                      "referencedDeclaration": 10408,
                      "src": "5041:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2761,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5041:76:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2762,
                  "nodeType": "ExpressionStatement",
                  "src": "5041:76:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2765,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2763,
                      "name": "minAcceptQuorumPct",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2603,
                      "src": "5127:18:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2764,
                      "name": "_minAcceptQuorumPct",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2742,
                      "src": "5148:19:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "src": "5127:40:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "id": 2766,
                  "nodeType": "ExpressionStatement",
                  "src": "5127:40:10"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2768,
                        "name": "_minAcceptQuorumPct",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2742,
                        "src": "5199:19:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      ],
                      "id": 2767,
                      "name": "ChangeMinQuorum",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2641,
                      "src": "5183:15:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$",
                        "typeString": "function (uint64)"
                      }
                    },
                    "id": 2769,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5183:36:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2770,
                  "nodeType": "EmitStatement",
                  "src": "5178:41:10"
                }
              ]
            },
            "documentation": "@notice Change minimum acceptance quorum to `@formatPct(_minAcceptQuorumPct)`%\n@param _minAcceptQuorumPct New acceptance quorum",
            "id": 2772,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 2745,
                    "name": "MODIFY_QUORUM_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2535,
                    "src": "4943:18:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2748,
                            "name": "_minAcceptQuorumPct",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2742,
                            "src": "4975:19:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          ],
                          "id": 2747,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4967:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": "uint256"
                        },
                        "id": 2749,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4967:28:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2751,
                            "name": "minAcceptQuorumPct",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2603,
                            "src": "5005:18:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          ],
                          "id": 2750,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4997:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": "uint256"
                        },
                        "id": 2752,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4997:27:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2746,
                      "name": "arr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4798,
                        4813,
                        4833,
                        4848,
                        4868,
                        4889,
                        4913,
                        4933,
                        4962,
                        4987,
                        5012,
                        5035,
                        5066,
                        5105,
                        5152,
                        5207
                      ],
                      "referencedDeclaration": 5066,
                      "src": "4963:3:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256[] memory)"
                      }
                    },
                    "id": 2753,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4963:62:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  }
                ],
                "id": 2754,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2744,
                  "name": "authP",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 6059,
                  "src": "4937:5:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                    "typeString": "modifier (bytes32,uint256[] memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "4937:89:10"
              }
            ],
            "name": "changeMinAcceptQuorumPct",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2743,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2742,
                  "name": "_minAcceptQuorumPct",
                  "nodeType": "VariableDeclaration",
                  "scope": 2772,
                  "src": "4884:26:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 2741,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "4884:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4883:28:10"
            },
            "payable": false,
            "returnParameters": {
              "id": 2755,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5031:0:10"
            },
            "scope": 3488,
            "src": "4850:376:10",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2791,
              "nodeType": "Block",
              "src": "5568:73:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2785,
                        "name": "_executionScript",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2774,
                        "src": "5594:16:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2786,
                        "name": "_metadata",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2776,
                        "src": "5612:9:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 2787,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5623:4:10",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 2788,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5629:4:10",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        },
                        {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2784,
                      "name": "_newVote",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3152,
                      "src": "5585:8:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$_t_string_memory_ptr_$_t_bool_$_t_bool_$returns$_t_uint256_$",
                        "typeString": "function (bytes memory,string memory,bool,bool) returns (uint256)"
                      }
                    },
                    "id": 2789,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5585:49:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 2783,
                  "id": 2790,
                  "nodeType": "Return",
                  "src": "5578:56:10"
                }
              ]
            },
            "documentation": "@notice Create a new vote about \"`_metadata`\"\n@param _executionScript EVM script to be executed on approval\n@param _metadata Vote metadata\n@return voteId Id for newly created vote",
            "id": 2792,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 2779,
                    "name": "CREATE_VOTES_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2525,
                    "src": "5524:17:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 2780,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2778,
                  "name": "auth",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 6040,
                  "src": "5519:4:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "5519:23:10"
              }
            ],
            "name": "newVote",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2777,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2774,
                  "name": "_executionScript",
                  "nodeType": "VariableDeclaration",
                  "scope": 2792,
                  "src": "5468:22:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2773,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "5468:5:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2776,
                  "name": "_metadata",
                  "nodeType": "VariableDeclaration",
                  "scope": 2792,
                  "src": "5492:16:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2775,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "5492:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5467:42:10"
            },
            "payable": false,
            "returnParameters": {
              "id": 2783,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2782,
                  "name": "voteId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2792,
                  "src": "5552:14:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2781,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5552:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5551:16:10"
            },
            "scope": 3488,
            "src": "5451:190:10",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2815,
              "nodeType": "Block",
              "src": "6213:92:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2809,
                        "name": "_executionScript",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2794,
                        "src": "6239:16:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2810,
                        "name": "_metadata",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2796,
                        "src": "6257:9:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2811,
                        "name": "_castVote",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2798,
                        "src": "6268:9:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2812,
                        "name": "_executesIfDecided",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2800,
                        "src": "6279:18:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        },
                        {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2808,
                      "name": "_newVote",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3152,
                      "src": "6230:8:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$_t_string_memory_ptr_$_t_bool_$_t_bool_$returns$_t_uint256_$",
                        "typeString": "function (bytes memory,string memory,bool,bool) returns (uint256)"
                      }
                    },
                    "id": 2813,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6230:68:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 2807,
                  "id": 2814,
                  "nodeType": "Return",
                  "src": "6223:75:10"
                }
              ]
            },
            "documentation": "@notice Create a new vote about \"`_metadata`\"\n@param _executionScript EVM script to be executed on approval\n@param _metadata Vote metadata\n@param _castVote Whether to also cast newly created vote\n@param _executesIfDecided Whether to also immediately execute newly created vote if decided\n@return voteId id for newly created vote",
            "id": 2816,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 2803,
                    "name": "CREATE_VOTES_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2525,
                    "src": "6157:17:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 2804,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2802,
                  "name": "auth",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 6040,
                  "src": "6152:4:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "6152:23:10"
              }
            ],
            "name": "newVote",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2801,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2794,
                  "name": "_executionScript",
                  "nodeType": "VariableDeclaration",
                  "scope": 2816,
                  "src": "6044:22:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2793,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "6044:5:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2796,
                  "name": "_metadata",
                  "nodeType": "VariableDeclaration",
                  "scope": 2816,
                  "src": "6068:16:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2795,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6068:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2798,
                  "name": "_castVote",
                  "nodeType": "VariableDeclaration",
                  "scope": 2816,
                  "src": "6086:14:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2797,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "6086:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2800,
                  "name": "_executesIfDecided",
                  "nodeType": "VariableDeclaration",
                  "scope": 2816,
                  "src": "6102:23:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2799,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "6102:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6043:83:10"
            },
            "payable": false,
            "returnParameters": {
              "id": 2807,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2806,
                  "name": "voteId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2816,
                  "src": "6193:14:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2805,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6193:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6192:16:10"
            },
            "scope": 3488,
            "src": "6027:278:10",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2845,
              "nodeType": "Block",
              "src": "6841:142:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2830,
                            "name": "_voteId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2818,
                            "src": "6868:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2831,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10404,
                              "src": "6877:3:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 2832,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "6877:10:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 2829,
                          "name": "_canVote",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3434,
                          "src": "6859:8:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_address_$returns$_t_bool_$",
                            "typeString": "function (uint256,address) view returns (bool)"
                          }
                        },
                        "id": 2833,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6859:29:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2834,
                        "name": "ERROR_CAN_NOT_VOTE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2561,
                        "src": "6890:18:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 2828,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        10407,
                        10408
                      ],
                      "referencedDeclaration": 10408,
                      "src": "6851:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2835,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6851:58:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2836,
                  "nodeType": "ExpressionStatement",
                  "src": "6851:58:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2838,
                        "name": "_voteId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2818,
                        "src": "6925:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2839,
                        "name": "_supports",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2820,
                        "src": "6934:9:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2840,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10404,
                          "src": "6945:3:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 2841,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "6945:10:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2842,
                        "name": "_executesIfDecided",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2822,
                        "src": "6957:18:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2837,
                      "name": "_vote",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3273,
                      "src": "6919:5:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_bool_$_t_address_$_t_bool_$returns$__$",
                        "typeString": "function (uint256,bool,address,bool)"
                      }
                    },
                    "id": 2843,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6919:57:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2844,
                  "nodeType": "ExpressionStatement",
                  "src": "6919:57:10"
                }
              ]
            },
            "documentation": "@notice Vote `_supports ? 'yes' : 'no'` in vote #`_voteId`\n@dev Initialization check is implicitly provided by `voteExists()` as new votes can only be\n     created via `newVote(),` which requires initialization\n@param _voteId Id for vote\n@param _supports Whether voter supports the vote\n@param _executesIfDecided Whether the vote should execute its action if it becomes decided",
            "id": 2846,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 2825,
                    "name": "_voteId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2818,
                    "src": "6832:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 2826,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2824,
                  "name": "voteExists",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 2654,
                  "src": "6821:10:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "6821:19:10"
              }
            ],
            "name": "vote",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2823,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2818,
                  "name": "_voteId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2846,
                  "src": "6754:15:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2817,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6754:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2820,
                  "name": "_supports",
                  "nodeType": "VariableDeclaration",
                  "scope": 2846,
                  "src": "6771:14:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2819,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "6771:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2822,
                  "name": "_executesIfDecided",
                  "nodeType": "VariableDeclaration",
                  "scope": 2846,
                  "src": "6787:23:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2821,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "6787:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6753:58:10"
            },
            "payable": false,
            "returnParameters": {
              "id": 2827,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6841:0:10"
            },
            "scope": 3488,
            "src": "6740:243:10",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2858,
              "nodeType": "Block",
              "src": "7306:38:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2855,
                        "name": "_voteId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2848,
                        "src": "7329:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2854,
                      "name": "_executeVote",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3290,
                      "src": "7316:12:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 2856,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7316:21:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2857,
                  "nodeType": "ExpressionStatement",
                  "src": "7316:21:10"
                }
              ]
            },
            "documentation": "@notice Execute vote #`_voteId`\n@dev Initialization check is implicitly provided by `voteExists()` as new votes can only be\n     created via `newVote(),` which requires initialization\n@param _voteId Id for vote",
            "id": 2859,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 2851,
                    "name": "_voteId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2848,
                    "src": "7297:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 2852,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2850,
                  "name": "voteExists",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 2654,
                  "src": "7286:10:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "7286:19:10"
              }
            ],
            "name": "executeVote",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2849,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2848,
                  "name": "_voteId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2859,
                  "src": "7260:15:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2847,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7260:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7259:17:10"
            },
            "payable": false,
            "returnParameters": {
              "id": 2853,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7306:0:10"
            },
            "scope": 3488,
            "src": "7239:105:10",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2866,
              "nodeType": "Block",
              "src": "7425:28:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "74727565",
                    "id": 2864,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "7442:4:10",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 2863,
                  "id": 2865,
                  "nodeType": "Return",
                  "src": "7435:11:10"
                }
              ]
            },
            "documentation": null,
            "id": 2867,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "isForwarder",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2860,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7393:2:10"
            },
            "payable": false,
            "returnParameters": {
              "id": 2863,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2862,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2867,
                  "src": "7419:4:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2861,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "7419:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7418:6:10"
            },
            "scope": 3488,
            "src": "7373:80:10",
            "stateMutability": "pure",
            "superFunction": 6300,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2888,
              "nodeType": "Block",
              "src": "7704:129:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2874,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10404,
                              "src": "7733:3:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 2875,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "7733:10:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2876,
                            "name": "_evmScript",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2869,
                            "src": "7745:10:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 2873,
                          "name": "canForward",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            2906
                          ],
                          "referencedDeclaration": 2906,
                          "src": "7722:10:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes_memory_ptr_$returns$_t_bool_$",
                            "typeString": "function (address,bytes memory) view returns (bool)"
                          }
                        },
                        "id": 2877,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7722:34:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2878,
                        "name": "ERROR_CAN_NOT_FORWARD",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2567,
                        "src": "7758:21:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 2872,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        10407,
                        10408
                      ],
                      "referencedDeclaration": 10408,
                      "src": "7714:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2879,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7714:66:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2880,
                  "nodeType": "ExpressionStatement",
                  "src": "7714:66:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2882,
                        "name": "_evmScript",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2869,
                        "src": "7799:10:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "",
                        "id": 2883,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7811:2:10",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        },
                        "value": ""
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 2884,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7815:4:10",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 2885,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7821:4:10",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2881,
                      "name": "_newVote",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3152,
                      "src": "7790:8:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$_t_string_memory_ptr_$_t_bool_$_t_bool_$returns$_t_uint256_$",
                        "typeString": "function (bytes memory,string memory,bool,bool) returns (uint256)"
                      }
                    },
                    "id": 2886,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7790:36:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2887,
                  "nodeType": "ExpressionStatement",
                  "src": "7790:36:10"
                }
              ]
            },
            "documentation": "@notice Creates a vote to execute the desired action, and casts a support vote if possible\n@dev IForwarder interface conformance\n@param _evmScript Start vote with script",
            "id": 2889,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "forward",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2870,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2869,
                  "name": "_evmScript",
                  "nodeType": "VariableDeclaration",
                  "scope": 2889,
                  "src": "7679:16:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2868,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "7679:5:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7678:18:10"
            },
            "payable": false,
            "returnParameters": {
              "id": 2871,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7704:0:10"
            },
            "scope": 3488,
            "src": "7662:171:10",
            "stateMutability": "nonpayable",
            "superFunction": 6314,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2905,
              "nodeType": "Block",
              "src": "7910:152:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2899,
                        "name": "_sender",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2891,
                        "src": "8021:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2900,
                        "name": "CREATE_VOTES_ROLE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2525,
                        "src": "8030:17:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 2901,
                          "name": "arr",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            4798,
                            4813,
                            4833,
                            4848,
                            4868,
                            4889,
                            4913,
                            4933,
                            4962,
                            4987,
                            5012,
                            5035,
                            5066,
                            5105,
                            5152,
                            5207
                          ],
                          "referencedDeclaration": 4798,
                          "src": "8049:3:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$__$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                            "typeString": "function () pure returns (uint256[] memory)"
                          }
                        },
                        "id": 2902,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8049:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      ],
                      "id": 2898,
                      "name": "canPerform",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6108,
                      "src": "8010:10:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_bool_$",
                        "typeString": "function (address,bytes32,uint256[] memory) view returns (bool)"
                      }
                    },
                    "id": 2903,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8010:45:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 2897,
                  "id": 2904,
                  "nodeType": "Return",
                  "src": "8003:52:10"
                }
              ]
            },
            "documentation": null,
            "id": 2906,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "canForward",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2894,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2891,
                  "name": "_sender",
                  "nodeType": "VariableDeclaration",
                  "scope": 2906,
                  "src": "7859:15:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2890,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7859:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2893,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2906,
                  "src": "7876:5:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2892,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "7876:5:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7858:24:10"
            },
            "payable": false,
            "returnParameters": {
              "id": 2897,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2896,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2906,
                  "src": "7904:4:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2895,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "7904:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7903:6:10"
            },
            "scope": 3488,
            "src": "7839:223:10",
            "stateMutability": "view",
            "superFunction": 6309,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2920,
              "nodeType": "Block",
              "src": "8350:44:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2917,
                        "name": "_voteId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2908,
                        "src": "8379:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2916,
                      "name": "_canExecute",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3405,
                      "src": "8367:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$",
                        "typeString": "function (uint256) view returns (bool)"
                      }
                    },
                    "id": 2918,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8367:20:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 2915,
                  "id": 2919,
                  "nodeType": "Return",
                  "src": "8360:27:10"
                }
              ]
            },
            "documentation": "@dev Initialization check is implicitly provided by `voteExists()` as new votes can only be\n     created via `newVote(),` which requires initialization",
            "id": 2921,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 2911,
                    "name": "_voteId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2908,
                    "src": "8326:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 2912,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2910,
                  "name": "voteExists",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 2654,
                  "src": "8315:10:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "8315:19:10"
              }
            ],
            "name": "canExecute",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2909,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2908,
                  "name": "_voteId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2921,
                  "src": "8286:15:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2907,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8286:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8285:17:10"
            },
            "payable": false,
            "returnParameters": {
              "id": 2915,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2914,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2921,
                  "src": "8344:4:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2913,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "8344:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8343:6:10"
            },
            "scope": 3488,
            "src": "8266:128:10",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2938,
              "nodeType": "Block",
              "src": "8676:49:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2934,
                        "name": "_voteId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2923,
                        "src": "8702:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2935,
                        "name": "_voter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2925,
                        "src": "8711:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 2933,
                      "name": "_canVote",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3434,
                      "src": "8693:8:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_address_$returns$_t_bool_$",
                        "typeString": "function (uint256,address) view returns (bool)"
                      }
                    },
                    "id": 2936,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8693:25:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 2932,
                  "id": 2937,
                  "nodeType": "Return",
                  "src": "8686:32:10"
                }
              ]
            },
            "documentation": "@dev Initialization check is implicitly provided by `voteExists()` as new votes can only be\n     created via `newVote(),` which requires initialization",
            "id": 2939,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 2928,
                    "name": "_voteId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2923,
                    "src": "8652:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 2929,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2927,
                  "name": "voteExists",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 2654,
                  "src": "8641:10:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "8641:19:10"
              }
            ],
            "name": "canVote",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2926,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2923,
                  "name": "_voteId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2939,
                  "src": "8596:15:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2922,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8596:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2925,
                  "name": "_voter",
                  "nodeType": "VariableDeclaration",
                  "scope": 2939,
                  "src": "8613:14:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2924,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8613:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8595:33:10"
            },
            "payable": false,
            "returnParameters": {
              "id": 2932,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2931,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2939,
                  "src": "8670:4:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2930,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "8670:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8669:6:10"
            },
            "scope": 3488,
            "src": "8579:146:10",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3024,
              "nodeType": "Block",
              "src": "9147:440:10",
              "statements": [
                {
                  "assignments": [
                    2968
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2968,
                      "name": "vote_",
                      "nodeType": "VariableDeclaration",
                      "scope": 3025,
                      "src": "9157:18:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                        "typeString": "struct Voting.Vote"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2967,
                        "name": "Vote",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2597,
                        "src": "9157:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                          "typeString": "struct Voting.Vote"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2972,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 2969,
                      "name": "votes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2609,
                      "src": "9178:5:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Vote_$2597_storage_$",
                        "typeString": "mapping(uint256 => struct Voting.Vote storage ref)"
                      }
                    },
                    "id": 2971,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 2970,
                      "name": "_voteId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2941,
                      "src": "9184:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "9178:14:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Vote_$2597_storage",
                      "typeString": "struct Voting.Vote storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9157:35:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2977,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2973,
                      "name": "open",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2947,
                      "src": "9203:4:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 2975,
                          "name": "vote_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2968,
                          "src": "9222:5:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                            "typeString": "struct Voting.Vote storage pointer"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                            "typeString": "struct Voting.Vote storage pointer"
                          }
                        ],
                        "id": 2974,
                        "name": "_isVoteOpen",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3455,
                        "src": "9210:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_struct$_Vote_$2597_storage_ptr_$returns$_t_bool_$",
                          "typeString": "function (struct Voting.Vote storage pointer) view returns (bool)"
                        }
                      },
                      "id": 2976,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "9210:18:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "9203:25:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2978,
                  "nodeType": "ExpressionStatement",
                  "src": "9203:25:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2982,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2979,
                      "name": "executed",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2949,
                      "src": "9238:8:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2980,
                        "name": "vote_",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2968,
                        "src": "9249:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                          "typeString": "struct Voting.Vote storage pointer"
                        }
                      },
                      "id": 2981,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "executed",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2576,
                      "src": "9249:14:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "9238:25:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2983,
                  "nodeType": "ExpressionStatement",
                  "src": "9238:25:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2987,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2984,
                      "name": "startDate",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2951,
                      "src": "9273:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2985,
                        "name": "vote_",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2968,
                        "src": "9285:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                          "typeString": "struct Voting.Vote storage pointer"
                        }
                      },
                      "id": 2986,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "startDate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2578,
                      "src": "9285:15:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "src": "9273:27:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "id": 2988,
                  "nodeType": "ExpressionStatement",
                  "src": "9273:27:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2992,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2989,
                      "name": "snapshotBlock",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2953,
                      "src": "9310:13:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2990,
                        "name": "vote_",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2968,
                        "src": "9326:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                          "typeString": "struct Voting.Vote storage pointer"
                        }
                      },
                      "id": 2991,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "snapshotBlock",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2580,
                      "src": "9326:19:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "src": "9310:35:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "id": 2993,
                  "nodeType": "ExpressionStatement",
                  "src": "9310:35:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2997,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2994,
                      "name": "supportRequired",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2955,
                      "src": "9355:15:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2995,
                        "name": "vote_",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2968,
                        "src": "9373:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                          "typeString": "struct Voting.Vote storage pointer"
                        }
                      },
                      "id": 2996,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "supportRequiredPct",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2582,
                      "src": "9373:24:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "src": "9355:42:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "id": 2998,
                  "nodeType": "ExpressionStatement",
                  "src": "9355:42:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3002,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2999,
                      "name": "minAcceptQuorum",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2957,
                      "src": "9407:15:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3000,
                        "name": "vote_",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2968,
                        "src": "9425:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                          "typeString": "struct Voting.Vote storage pointer"
                        }
                      },
                      "id": 3001,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "minAcceptQuorumPct",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2584,
                      "src": "9425:24:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "src": "9407:42:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "id": 3003,
                  "nodeType": "ExpressionStatement",
                  "src": "9407:42:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3007,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3004,
                      "name": "yea",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2959,
                      "src": "9459:3:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3005,
                        "name": "vote_",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2968,
                        "src": "9465:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                          "typeString": "struct Voting.Vote storage pointer"
                        }
                      },
                      "id": 3006,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "yea",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2586,
                      "src": "9465:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "9459:15:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3008,
                  "nodeType": "ExpressionStatement",
                  "src": "9459:15:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3012,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3009,
                      "name": "nay",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2961,
                      "src": "9484:3:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3010,
                        "name": "vote_",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2968,
                        "src": "9490:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                          "typeString": "struct Voting.Vote storage pointer"
                        }
                      },
                      "id": 3011,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "nay",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2588,
                      "src": "9490:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "9484:15:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3013,
                  "nodeType": "ExpressionStatement",
                  "src": "9484:15:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3017,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3014,
                      "name": "votingPower",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2963,
                      "src": "9509:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3015,
                        "name": "vote_",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2968,
                        "src": "9523:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                          "typeString": "struct Voting.Vote storage pointer"
                        }
                      },
                      "id": 3016,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "votingPower",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2590,
                      "src": "9523:17:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "9509:31:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3018,
                  "nodeType": "ExpressionStatement",
                  "src": "9509:31:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3022,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3019,
                      "name": "script",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2965,
                      "src": "9550:6:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3020,
                        "name": "vote_",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2968,
                        "src": "9559:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                          "typeString": "struct Voting.Vote storage pointer"
                        }
                      },
                      "id": 3021,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "executionScript",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2592,
                      "src": "9559:21:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage",
                        "typeString": "bytes storage ref"
                      }
                    },
                    "src": "9550:30:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "id": 3023,
                  "nodeType": "ExpressionStatement",
                  "src": "9550:30:10"
                }
              ]
            },
            "documentation": null,
            "id": 3025,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 2944,
                    "name": "_voteId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2941,
                    "src": "8812:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 2945,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2943,
                  "name": "voteExists",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 2654,
                  "src": "8801:10:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "8801:19:10"
              }
            ],
            "name": "getVote",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2942,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2941,
                  "name": "_voteId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3025,
                  "src": "8748:15:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2940,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8748:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8747:17:10"
            },
            "payable": false,
            "returnParameters": {
              "id": 2966,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2947,
                  "name": "open",
                  "nodeType": "VariableDeclaration",
                  "scope": 3025,
                  "src": "8851:9:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2946,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "8851:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2949,
                  "name": "executed",
                  "nodeType": "VariableDeclaration",
                  "scope": 3025,
                  "src": "8874:13:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2948,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "8874:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2951,
                  "name": "startDate",
                  "nodeType": "VariableDeclaration",
                  "scope": 3025,
                  "src": "8901:16:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 2950,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "8901:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2953,
                  "name": "snapshotBlock",
                  "nodeType": "VariableDeclaration",
                  "scope": 3025,
                  "src": "8931:20:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 2952,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "8931:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2955,
                  "name": "supportRequired",
                  "nodeType": "VariableDeclaration",
                  "scope": 3025,
                  "src": "8965:22:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 2954,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "8965:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2957,
                  "name": "minAcceptQuorum",
                  "nodeType": "VariableDeclaration",
                  "scope": 3025,
                  "src": "9001:22:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 2956,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "9001:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2959,
                  "name": "yea",
                  "nodeType": "VariableDeclaration",
                  "scope": 3025,
                  "src": "9037:11:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2958,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9037:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2961,
                  "name": "nay",
                  "nodeType": "VariableDeclaration",
                  "scope": 3025,
                  "src": "9062:11:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2960,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9062:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2963,
                  "name": "votingPower",
                  "nodeType": "VariableDeclaration",
                  "scope": 3025,
                  "src": "9087:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2962,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9087:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2965,
                  "name": "script",
                  "nodeType": "VariableDeclaration",
                  "scope": 3025,
                  "src": "9120:12:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2964,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "9120:5:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8837:305:10"
            },
            "scope": 3488,
            "src": "8731:856:10",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3044,
              "nodeType": "Block",
              "src": "9702:53:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 3037,
                          "name": "votes",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2609,
                          "src": "9719:5:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Vote_$2597_storage_$",
                            "typeString": "mapping(uint256 => struct Voting.Vote storage ref)"
                          }
                        },
                        "id": 3039,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 3038,
                          "name": "_voteId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3027,
                          "src": "9725:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "9719:14:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$2597_storage",
                          "typeString": "struct Voting.Vote storage ref"
                        }
                      },
                      "id": 3040,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "voters",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2596,
                      "src": "9719:21:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_enum$_VoterState_$2574_$",
                        "typeString": "mapping(address => enum Voting.VoterState)"
                      }
                    },
                    "id": 3042,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 3041,
                      "name": "_voter",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3029,
                      "src": "9741:6:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "9719:29:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_VoterState_$2574",
                      "typeString": "enum Voting.VoterState"
                    }
                  },
                  "functionReturnParameters": 3036,
                  "id": 3043,
                  "nodeType": "Return",
                  "src": "9712:36:10"
                }
              ]
            },
            "documentation": null,
            "id": 3045,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 3032,
                    "name": "_voteId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3027,
                    "src": "9672:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 3033,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 3031,
                  "name": "voteExists",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 2654,
                  "src": "9661:10:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "9661:19:10"
              }
            ],
            "name": "getVoterState",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3030,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3027,
                  "name": "_voteId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3045,
                  "src": "9616:15:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3026,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9616:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3029,
                  "name": "_voter",
                  "nodeType": "VariableDeclaration",
                  "scope": 3045,
                  "src": "9633:14:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3028,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9633:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9615:33:10"
            },
            "payable": false,
            "returnParameters": {
              "id": 3036,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3035,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3045,
                  "src": "9690:10:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_VoterState_$2574",
                    "typeString": "enum Voting.VoterState"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3034,
                    "name": "VoterState",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2574,
                    "src": "9690:10:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_VoterState_$2574",
                      "typeString": "enum Voting.VoterState"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9689:12:10"
            },
            "scope": 3488,
            "src": "9593:162:10",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3151,
              "nodeType": "Block",
              "src": "9937:784:10",
              "statements": [
                {
                  "assignments": [
                    3059
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3059,
                      "name": "snapshotBlock",
                      "nodeType": "VariableDeclaration",
                      "scope": 3152,
                      "src": "9947:20:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      },
                      "typeName": {
                        "id": 3058,
                        "name": "uint64",
                        "nodeType": "ElementaryTypeName",
                        "src": "9947:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3064,
                  "initialValue": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    },
                    "id": 3063,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 3060,
                        "name": "getBlockNumber64",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6810,
                        "src": "9970:16:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$__$returns$_t_uint64_$",
                          "typeString": "function () view returns (uint64)"
                        }
                      },
                      "id": 3061,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "9970:18:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "-",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "31",
                      "id": 3062,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "9991:1:10",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "9970:22:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9947:45:10"
                },
                {
                  "assignments": [
                    3066
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3066,
                      "name": "votingPower",
                      "nodeType": "VariableDeclaration",
                      "scope": 3152,
                      "src": "10044:19:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3065,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "10044:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3071,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3069,
                        "name": "snapshotBlock",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3059,
                        "src": "10086:13:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 3067,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2599,
                        "src": "10066:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_MiniMeToken_$2462",
                          "typeString": "contract MiniMeToken"
                        }
                      },
                      "id": 3068,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "totalSupplyAt",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1962,
                      "src": "10066:19:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (uint256) view external returns (uint256)"
                      }
                    },
                    "id": 3070,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10066:34:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10044:56:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3075,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 3073,
                          "name": "votingPower",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3066,
                          "src": "10118:11:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 3074,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "10132:1:10",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "10118:15:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3076,
                        "name": "ERROR_NO_VOTING_POWER",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2570,
                        "src": "10135:21:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 3072,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        10407,
                        10408
                      ],
                      "referencedDeclaration": 10408,
                      "src": "10110:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3077,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10110:47:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3078,
                  "nodeType": "ExpressionStatement",
                  "src": "10110:47:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3082,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3079,
                      "name": "voteId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3056,
                      "src": "10168:6:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 3081,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "10177:13:10",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 3080,
                        "name": "votesLength",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2611,
                        "src": "10177:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "10168:22:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3083,
                  "nodeType": "ExpressionStatement",
                  "src": "10168:22:10"
                },
                {
                  "assignments": [
                    3085
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3085,
                      "name": "vote_",
                      "nodeType": "VariableDeclaration",
                      "scope": 3152,
                      "src": "10201:18:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                        "typeString": "struct Voting.Vote"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 3084,
                        "name": "Vote",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2597,
                        "src": "10201:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                          "typeString": "struct Voting.Vote"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3089,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 3086,
                      "name": "votes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2609,
                      "src": "10222:5:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Vote_$2597_storage_$",
                        "typeString": "mapping(uint256 => struct Voting.Vote storage ref)"
                      }
                    },
                    "id": 3088,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 3087,
                      "name": "voteId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3056,
                      "src": "10228:6:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "10222:13:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Vote_$2597_storage",
                      "typeString": "struct Voting.Vote storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10201:34:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3095,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3090,
                        "name": "vote_",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3085,
                        "src": "10245:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                          "typeString": "struct Voting.Vote storage pointer"
                        }
                      },
                      "id": 3092,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "startDate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2578,
                      "src": "10245:15:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 3093,
                        "name": "getTimestamp64",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6830,
                        "src": "10263:14:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$__$returns$_t_uint64_$",
                          "typeString": "function () view returns (uint64)"
                        }
                      },
                      "id": 3094,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10263:16:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "src": "10245:34:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "id": 3096,
                  "nodeType": "ExpressionStatement",
                  "src": "10245:34:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3101,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3097,
                        "name": "vote_",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3085,
                        "src": "10289:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                          "typeString": "struct Voting.Vote storage pointer"
                        }
                      },
                      "id": 3099,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "snapshotBlock",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2580,
                      "src": "10289:19:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 3100,
                      "name": "snapshotBlock",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3059,
                      "src": "10311:13:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "src": "10289:35:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "id": 3102,
                  "nodeType": "ExpressionStatement",
                  "src": "10289:35:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3107,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3103,
                        "name": "vote_",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3085,
                        "src": "10334:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                          "typeString": "struct Voting.Vote storage pointer"
                        }
                      },
                      "id": 3105,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "supportRequiredPct",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2582,
                      "src": "10334:24:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 3106,
                      "name": "supportRequiredPct",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2601,
                      "src": "10361:18:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "src": "10334:45:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "id": 3108,
                  "nodeType": "ExpressionStatement",
                  "src": "10334:45:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3113,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3109,
                        "name": "vote_",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3085,
                        "src": "10389:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                          "typeString": "struct Voting.Vote storage pointer"
                        }
                      },
                      "id": 3111,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "minAcceptQuorumPct",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2584,
                      "src": "10389:24:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 3112,
                      "name": "minAcceptQuorumPct",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2603,
                      "src": "10416:18:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "src": "10389:45:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "id": 3114,
                  "nodeType": "ExpressionStatement",
                  "src": "10389:45:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3119,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3115,
                        "name": "vote_",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3085,
                        "src": "10444:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                          "typeString": "struct Voting.Vote storage pointer"
                        }
                      },
                      "id": 3117,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "votingPower",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2590,
                      "src": "10444:17:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 3118,
                      "name": "votingPower",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3066,
                      "src": "10464:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "10444:31:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3120,
                  "nodeType": "ExpressionStatement",
                  "src": "10444:31:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3125,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3121,
                        "name": "vote_",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3085,
                        "src": "10485:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                          "typeString": "struct Voting.Vote storage pointer"
                        }
                      },
                      "id": 3123,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "executionScript",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2592,
                      "src": "10485:21:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage",
                        "typeString": "bytes storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 3124,
                      "name": "_executionScript",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3047,
                      "src": "10509:16:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "src": "10485:40:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage",
                      "typeString": "bytes storage ref"
                    }
                  },
                  "id": 3126,
                  "nodeType": "ExpressionStatement",
                  "src": "10485:40:10"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3128,
                        "name": "voteId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3056,
                        "src": "10551:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3129,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10404,
                          "src": "10559:3:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 3130,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "10559:10:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3131,
                        "name": "_metadata",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3049,
                        "src": "10571:9:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 3127,
                      "name": "StartVote",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2619,
                      "src": "10541:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (uint256,address,string memory)"
                      }
                    },
                    "id": 3132,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10541:40:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3133,
                  "nodeType": "EmitStatement",
                  "src": "10536:45:10"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 3140,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3134,
                      "name": "_castVote",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3051,
                      "src": "10596:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 3136,
                          "name": "voteId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3056,
                          "src": "10618:6:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3137,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10404,
                            "src": "10626:3:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 3138,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "10626:10:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 3135,
                        "name": "_canVote",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3434,
                        "src": "10609:8:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_address_$returns$_t_bool_$",
                          "typeString": "function (uint256,address) view returns (bool)"
                        }
                      },
                      "id": 3139,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10609:28:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "10596:41:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3150,
                  "nodeType": "IfStatement",
                  "src": "10592:123:10",
                  "trueBody": {
                    "id": 3149,
                    "nodeType": "Block",
                    "src": "10639:76:10",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3142,
                              "name": "voteId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3056,
                              "src": "10659:6:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "74727565",
                              "id": 3143,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10667:4:10",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 3144,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10404,
                                "src": "10673:3:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 3145,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "10673:10:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3146,
                              "name": "_executesIfDecided",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3053,
                              "src": "10685:18:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 3141,
                            "name": "_vote",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3273,
                            "src": "10653:5:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_bool_$_t_address_$_t_bool_$returns$__$",
                              "typeString": "function (uint256,bool,address,bool)"
                            }
                          },
                          "id": 3147,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10653:51:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3148,
                        "nodeType": "ExpressionStatement",
                        "src": "10653:51:10"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": null,
            "id": 3152,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "_newVote",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3054,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3047,
                  "name": "_executionScript",
                  "nodeType": "VariableDeclaration",
                  "scope": 3152,
                  "src": "9800:22:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 3046,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "9800:5:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3049,
                  "name": "_metadata",
                  "nodeType": "VariableDeclaration",
                  "scope": 3152,
                  "src": "9824:16:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3048,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "9824:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3051,
                  "name": "_castVote",
                  "nodeType": "VariableDeclaration",
                  "scope": 3152,
                  "src": "9842:14:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 3050,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "9842:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3053,
                  "name": "_executesIfDecided",
                  "nodeType": "VariableDeclaration",
                  "scope": 3152,
                  "src": "9858:23:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 3052,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "9858:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9799:83:10"
            },
            "payable": false,
            "returnParameters": {
              "id": 3057,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3056,
                  "name": "voteId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3152,
                  "src": "9917:14:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3055,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9917:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9916:16:10"
            },
            "scope": 3488,
            "src": "9782:939:10",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3272,
              "nodeType": "Block",
              "src": "10867:1017:10",
              "statements": [
                {
                  "assignments": [
                    3164
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3164,
                      "name": "vote_",
                      "nodeType": "VariableDeclaration",
                      "scope": 3273,
                      "src": "10877:18:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                        "typeString": "struct Voting.Vote"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 3163,
                        "name": "Vote",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2597,
                        "src": "10877:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                          "typeString": "struct Voting.Vote"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3168,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 3165,
                      "name": "votes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2609,
                      "src": "10898:5:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Vote_$2597_storage_$",
                        "typeString": "mapping(uint256 => struct Voting.Vote storage ref)"
                      }
                    },
                    "id": 3167,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 3166,
                      "name": "_voteId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3154,
                      "src": "10904:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "10898:14:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Vote_$2597_storage",
                      "typeString": "struct Voting.Vote storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10877:35:10"
                },
                {
                  "assignments": [
                    3170
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3170,
                      "name": "voterStake",
                      "nodeType": "VariableDeclaration",
                      "scope": 3273,
                      "src": "11014:18:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3169,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "11014:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3177,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3173,
                        "name": "_voter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3158,
                        "src": "11053:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3174,
                          "name": "vote_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3164,
                          "src": "11061:5:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                            "typeString": "struct Voting.Vote storage pointer"
                          }
                        },
                        "id": 3175,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "snapshotBlock",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2580,
                        "src": "11061:19:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 3171,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2599,
                        "src": "11035:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_MiniMeToken_$2462",
                          "typeString": "contract MiniMeToken"
                        }
                      },
                      "id": 3172,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "balanceOfAt",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1915,
                      "src": "11035:17:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (address,uint256) view external returns (uint256)"
                      }
                    },
                    "id": 3176,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11035:46:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11014:67:10"
                },
                {
                  "assignments": [
                    3179
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3179,
                      "name": "state",
                      "nodeType": "VariableDeclaration",
                      "scope": 3273,
                      "src": "11091:16:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_VoterState_$2574",
                        "typeString": "enum Voting.VoterState"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 3178,
                        "name": "VoterState",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2574,
                        "src": "11091:10:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_VoterState_$2574",
                          "typeString": "enum Voting.VoterState"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3184,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3180,
                        "name": "vote_",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3164,
                        "src": "11110:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                          "typeString": "struct Voting.Vote storage pointer"
                        }
                      },
                      "id": 3181,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "voters",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2596,
                      "src": "11110:12:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_enum$_VoterState_$2574_$",
                        "typeString": "mapping(address => enum Voting.VoterState)"
                      }
                    },
                    "id": 3183,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 3182,
                      "name": "_voter",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3158,
                      "src": "11123:6:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "11110:20:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_VoterState_$2574",
                      "typeString": "enum Voting.VoterState"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11091:39:10"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_VoterState_$2574",
                      "typeString": "enum Voting.VoterState"
                    },
                    "id": 3188,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3185,
                      "name": "state",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3179,
                      "src": "11202:5:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_VoterState_$2574",
                        "typeString": "enum Voting.VoterState"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3186,
                        "name": "VoterState",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2574,
                        "src": "11211:10:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_VoterState_$2574_$",
                          "typeString": "type(enum Voting.VoterState)"
                        }
                      },
                      "id": 3187,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "Yea",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "11211:14:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_VoterState_$2574",
                        "typeString": "enum Voting.VoterState"
                      }
                    },
                    "src": "11202:23:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "condition": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_enum$_VoterState_$2574",
                        "typeString": "enum Voting.VoterState"
                      },
                      "id": 3203,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 3200,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3179,
                        "src": "11299:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_VoterState_$2574",
                          "typeString": "enum Voting.VoterState"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3201,
                          "name": "VoterState",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2574,
                          "src": "11308:10:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_enum$_VoterState_$2574_$",
                            "typeString": "type(enum Voting.VoterState)"
                          }
                        },
                        "id": 3202,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberName": "Nay",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "11308:14:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_VoterState_$2574",
                          "typeString": "enum Voting.VoterState"
                        }
                      },
                      "src": "11299:23:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseBody": null,
                    "id": 3215,
                    "nodeType": "IfStatement",
                    "src": "11295:91:10",
                    "trueBody": {
                      "id": 3214,
                      "nodeType": "Block",
                      "src": "11324:62:10",
                      "statements": [
                        {
                          "expression": {
                            "argumentTypes": null,
                            "id": 3212,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 3204,
                                "name": "vote_",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3164,
                                "src": "11338:5:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                                  "typeString": "struct Voting.Vote storage pointer"
                                }
                              },
                              "id": 3206,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "memberName": "nay",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2588,
                              "src": "11338:9:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 3210,
                                  "name": "voterStake",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3170,
                                  "src": "11364:10:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3207,
                                    "name": "vote_",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3164,
                                    "src": "11350:5:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                                      "typeString": "struct Voting.Vote storage pointer"
                                    }
                                  },
                                  "id": 3208,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "nay",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2588,
                                  "src": "11350:9:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 3209,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sub",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 9648,
                                "src": "11350:13:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 3211,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11350:25:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "11338:37:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 3213,
                          "nodeType": "ExpressionStatement",
                          "src": "11338:37:10"
                        }
                      ]
                    }
                  },
                  "id": 3216,
                  "nodeType": "IfStatement",
                  "src": "11198:188:10",
                  "trueBody": {
                    "id": 3199,
                    "nodeType": "Block",
                    "src": "11227:62:10",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3197,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3189,
                              "name": "vote_",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3164,
                              "src": "11241:5:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                                "typeString": "struct Voting.Vote storage pointer"
                              }
                            },
                            "id": 3191,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "yea",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2586,
                            "src": "11241:9:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3195,
                                "name": "voterStake",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3170,
                                "src": "11267:10:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3192,
                                  "name": "vote_",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3164,
                                  "src": "11253:5:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                                    "typeString": "struct Voting.Vote storage pointer"
                                  }
                                },
                                "id": 3193,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "yea",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2586,
                                "src": "11253:9:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3194,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 9648,
                              "src": "11253:13:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 3196,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11253:25:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11241:37:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3198,
                        "nodeType": "ExpressionStatement",
                        "src": "11241:37:10"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 3217,
                    "name": "_supports",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3156,
                    "src": "11400:9:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 3239,
                    "nodeType": "Block",
                    "src": "11479:62:10",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3237,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3229,
                              "name": "vote_",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3164,
                              "src": "11493:5:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                                "typeString": "struct Voting.Vote storage pointer"
                              }
                            },
                            "id": 3231,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "nay",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2588,
                            "src": "11493:9:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3235,
                                "name": "voterStake",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3170,
                                "src": "11519:10:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3232,
                                  "name": "vote_",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3164,
                                  "src": "11505:5:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                                    "typeString": "struct Voting.Vote storage pointer"
                                  }
                                },
                                "id": 3233,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "nay",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2588,
                                "src": "11505:9:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3234,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 9673,
                              "src": "11505:13:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 3236,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11505:25:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11493:37:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3238,
                        "nodeType": "ExpressionStatement",
                        "src": "11493:37:10"
                      }
                    ]
                  },
                  "id": 3240,
                  "nodeType": "IfStatement",
                  "src": "11396:145:10",
                  "trueBody": {
                    "id": 3228,
                    "nodeType": "Block",
                    "src": "11411:62:10",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3226,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3218,
                              "name": "vote_",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3164,
                              "src": "11425:5:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                                "typeString": "struct Voting.Vote storage pointer"
                              }
                            },
                            "id": 3220,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "yea",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2586,
                            "src": "11425:9:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3224,
                                "name": "voterStake",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3170,
                                "src": "11451:10:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3221,
                                  "name": "vote_",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3164,
                                  "src": "11437:5:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                                    "typeString": "struct Voting.Vote storage pointer"
                                  }
                                },
                                "id": 3222,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "yea",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2586,
                                "src": "11437:9:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3223,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 9673,
                              "src": "11437:13:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 3225,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11437:25:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11425:37:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3227,
                        "nodeType": "ExpressionStatement",
                        "src": "11425:37:10"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3252,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3241,
                          "name": "vote_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3164,
                          "src": "11551:5:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                            "typeString": "struct Voting.Vote storage pointer"
                          }
                        },
                        "id": 3244,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "voters",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2596,
                        "src": "11551:12:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_enum$_VoterState_$2574_$",
                          "typeString": "mapping(address => enum Voting.VoterState)"
                        }
                      },
                      "id": 3245,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 3243,
                        "name": "_voter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3158,
                        "src": "11564:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "11551:20:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_VoterState_$2574",
                        "typeString": "enum Voting.VoterState"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "condition": {
                        "argumentTypes": null,
                        "id": 3246,
                        "name": "_supports",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3156,
                        "src": "11574:9:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3249,
                          "name": "VoterState",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2574,
                          "src": "11603:10:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_enum$_VoterState_$2574_$",
                            "typeString": "type(enum Voting.VoterState)"
                          }
                        },
                        "id": 3250,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberName": "Nay",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "11603:14:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_VoterState_$2574",
                          "typeString": "enum Voting.VoterState"
                        }
                      },
                      "id": 3251,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "Conditional",
                      "src": "11574:43:10",
                      "trueExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3247,
                          "name": "VoterState",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2574,
                          "src": "11586:10:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_enum$_VoterState_$2574_$",
                            "typeString": "type(enum Voting.VoterState)"
                          }
                        },
                        "id": 3248,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberName": "Yea",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "11586:14:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_VoterState_$2574",
                          "typeString": "enum Voting.VoterState"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_VoterState_$2574",
                        "typeString": "enum Voting.VoterState"
                      }
                    },
                    "src": "11551:66:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_VoterState_$2574",
                      "typeString": "enum Voting.VoterState"
                    }
                  },
                  "id": 3253,
                  "nodeType": "ExpressionStatement",
                  "src": "11551:66:10"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3255,
                        "name": "_voteId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3154,
                        "src": "11642:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3256,
                        "name": "_voter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3158,
                        "src": "11651:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3257,
                        "name": "_supports",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3156,
                        "src": "11659:9:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3258,
                        "name": "voterStake",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3170,
                        "src": "11670:10:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 3254,
                      "name": "CastVote",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2629,
                      "src": "11633:8:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$_t_bool_$_t_uint256_$returns$__$",
                        "typeString": "function (uint256,address,bool,uint256)"
                      }
                    },
                    "id": 3259,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11633:48:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3260,
                  "nodeType": "EmitStatement",
                  "src": "11628:53:10"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 3265,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3261,
                      "name": "_executesIfDecided",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3160,
                      "src": "11696:18:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 3263,
                          "name": "_voteId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3154,
                          "src": "11730:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 3262,
                        "name": "_canExecute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3405,
                        "src": "11718:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$",
                          "typeString": "function (uint256) view returns (bool)"
                        }
                      },
                      "id": 3264,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "11718:20:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "11696:42:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3271,
                  "nodeType": "IfStatement",
                  "src": "11692:186:10",
                  "trueBody": {
                    "id": 3270,
                    "nodeType": "Block",
                    "src": "11740:138:10",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3267,
                              "name": "_voteId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3154,
                              "src": "11859:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3266,
                            "name": "_unsafeExecuteVote",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3330,
                            "src": "11840:18:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256)"
                            }
                          },
                          "id": 3268,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11840:27:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3269,
                        "nodeType": "ExpressionStatement",
                        "src": "11840:27:10"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": null,
            "id": 3273,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "_vote",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3161,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3154,
                  "name": "_voteId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3273,
                  "src": "10751:15:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3153,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10751:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3156,
                  "name": "_supports",
                  "nodeType": "VariableDeclaration",
                  "scope": 3273,
                  "src": "10776:14:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 3155,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "10776:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3158,
                  "name": "_voter",
                  "nodeType": "VariableDeclaration",
                  "scope": 3273,
                  "src": "10800:14:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3157,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "10800:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3160,
                  "name": "_executesIfDecided",
                  "nodeType": "VariableDeclaration",
                  "scope": 3273,
                  "src": "10824:23:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 3159,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "10824:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10741:112:10"
            },
            "payable": false,
            "returnParameters": {
              "id": 3162,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "10867:0:10"
            },
            "scope": 3488,
            "src": "10727:1157:10",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3289,
              "nodeType": "Block",
              "src": "11938:106:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3280,
                            "name": "_voteId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3275,
                            "src": "11968:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 3279,
                          "name": "_canExecute",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3405,
                          "src": "11956:11:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (uint256) view returns (bool)"
                          }
                        },
                        "id": 3281,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11956:20:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3282,
                        "name": "ERROR_CAN_NOT_EXECUTE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2564,
                        "src": "11978:21:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 3278,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        10407,
                        10408
                      ],
                      "referencedDeclaration": 10408,
                      "src": "11948:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3283,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11948:52:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3284,
                  "nodeType": "ExpressionStatement",
                  "src": "11948:52:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3286,
                        "name": "_voteId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3275,
                        "src": "12029:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 3285,
                      "name": "_unsafeExecuteVote",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3330,
                      "src": "12010:18:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 3287,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12010:27:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3288,
                  "nodeType": "ExpressionStatement",
                  "src": "12010:27:10"
                }
              ]
            },
            "documentation": null,
            "id": 3290,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "_executeVote",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3276,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3275,
                  "name": "_voteId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3290,
                  "src": "11912:15:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3274,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11912:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11911:17:10"
            },
            "payable": false,
            "returnParameters": {
              "id": 3277,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "11938:0:10"
            },
            "scope": 3488,
            "src": "11890:154:10",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3329,
              "nodeType": "Block",
              "src": "12227:274:10",
              "statements": [
                {
                  "assignments": [
                    3296
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3296,
                      "name": "vote_",
                      "nodeType": "VariableDeclaration",
                      "scope": 3330,
                      "src": "12237:18:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                        "typeString": "struct Voting.Vote"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 3295,
                        "name": "Vote",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2597,
                        "src": "12237:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                          "typeString": "struct Voting.Vote"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3300,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 3297,
                      "name": "votes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2609,
                      "src": "12258:5:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Vote_$2597_storage_$",
                        "typeString": "mapping(uint256 => struct Voting.Vote storage ref)"
                      }
                    },
                    "id": 3299,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 3298,
                      "name": "_voteId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3292,
                      "src": "12264:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "12258:14:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Vote_$2597_storage",
                      "typeString": "struct Voting.Vote storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12237:35:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3305,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3301,
                        "name": "vote_",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3296,
                        "src": "12283:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                          "typeString": "struct Voting.Vote storage pointer"
                        }
                      },
                      "id": 3303,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "executed",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2576,
                      "src": "12283:14:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 3304,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "12300:4:10",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "12283:21:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3306,
                  "nodeType": "ExpressionStatement",
                  "src": "12283:21:10"
                },
                {
                  "assignments": [
                    3308
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3308,
                      "name": "input",
                      "nodeType": "VariableDeclaration",
                      "scope": 3330,
                      "src": "12315:18:10",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 3307,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "12315:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3313,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 3311,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12346:1:10",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "id": 3310,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "12336:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_$",
                        "typeString": "function (uint256) pure returns (bytes memory)"
                      },
                      "typeName": {
                        "id": 3309,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "12340:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      }
                    },
                    "id": 3312,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12336:12:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12315:33:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3315,
                          "name": "vote_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3296,
                          "src": "12411:5:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                            "typeString": "struct Voting.Vote storage pointer"
                          }
                        },
                        "id": 3316,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "executionScript",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2592,
                        "src": "12411:21:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage",
                          "typeString": "bytes storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3317,
                        "name": "input",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3308,
                        "src": "12434:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 3321,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12455:1:10",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 3320,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "NewExpression",
                          "src": "12441:13:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_$",
                            "typeString": "function (uint256) pure returns (address[] memory)"
                          },
                          "typeName": {
                            "baseType": {
                              "id": 3318,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "12445:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 3319,
                            "length": null,
                            "nodeType": "ArrayTypeName",
                            "src": "12445:9:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                              "typeString": "address[]"
                            }
                          }
                        },
                        "id": 3322,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12441:16:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory",
                          "typeString": "address[] memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_storage",
                          "typeString": "bytes storage ref"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory",
                          "typeString": "address[] memory"
                        }
                      ],
                      "id": 3314,
                      "name": "runScript",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7419,
                      "src": "12401:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory,bytes memory,address[] memory) returns (bytes memory)"
                      }
                    },
                    "id": 3323,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12401:57:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "id": 3324,
                  "nodeType": "ExpressionStatement",
                  "src": "12401:57:10"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3326,
                        "name": "_voteId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3292,
                        "src": "12486:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 3325,
                      "name": "ExecuteVote",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2633,
                      "src": "12474:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 3327,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12474:20:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3328,
                  "nodeType": "EmitStatement",
                  "src": "12469:25:10"
                }
              ]
            },
            "documentation": "@dev Unsafe version of _executeVote that assumes you have already checked if the vote can be executed",
            "id": 3330,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "_unsafeExecuteVote",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3293,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3292,
                  "name": "_voteId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3330,
                  "src": "12201:15:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3291,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "12201:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12200:17:10"
            },
            "payable": false,
            "returnParameters": {
              "id": 3294,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "12227:0:10"
            },
            "scope": 3488,
            "src": "12173:328:10",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3404,
              "nodeType": "Block",
              "src": "12574:737:10",
              "statements": [
                {
                  "assignments": [
                    3338
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3338,
                      "name": "vote_",
                      "nodeType": "VariableDeclaration",
                      "scope": 3405,
                      "src": "12584:18:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                        "typeString": "struct Voting.Vote"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 3337,
                        "name": "Vote",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2597,
                        "src": "12584:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                          "typeString": "struct Voting.Vote"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3342,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 3339,
                      "name": "votes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2609,
                      "src": "12605:5:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Vote_$2597_storage_$",
                        "typeString": "mapping(uint256 => struct Voting.Vote storage ref)"
                      }
                    },
                    "id": 3341,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 3340,
                      "name": "_voteId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3332,
                      "src": "12611:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "12605:14:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Vote_$2597_storage",
                      "typeString": "struct Voting.Vote storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12584:35:10"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 3343,
                      "name": "vote_",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3338,
                      "src": "12634:5:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                        "typeString": "struct Voting.Vote storage pointer"
                      }
                    },
                    "id": 3344,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "executed",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 2576,
                    "src": "12634:14:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3348,
                  "nodeType": "IfStatement",
                  "src": "12630:57:10",
                  "trueBody": {
                    "id": 3347,
                    "nodeType": "Block",
                    "src": "12650:37:10",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 3345,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "12671:5:10",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 3336,
                        "id": 3346,
                        "nodeType": "Return",
                        "src": "12664:12:10"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3350,
                          "name": "vote_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3338,
                          "src": "12750:5:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                            "typeString": "struct Voting.Vote storage pointer"
                          }
                        },
                        "id": 3351,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "yea",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2586,
                        "src": "12750:9:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3352,
                          "name": "vote_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3338,
                          "src": "12761:5:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                            "typeString": "struct Voting.Vote storage pointer"
                          }
                        },
                        "id": 3353,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "votingPower",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2590,
                        "src": "12761:17:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3354,
                          "name": "vote_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3338,
                          "src": "12780:5:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                            "typeString": "struct Voting.Vote storage pointer"
                          }
                        },
                        "id": 3355,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "supportRequiredPct",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2582,
                        "src": "12780:24:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      ],
                      "id": 3349,
                      "name": "_isValuePct",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3487,
                      "src": "12738:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$",
                        "typeString": "function (uint256,uint256,uint256) pure returns (bool)"
                      }
                    },
                    "id": 3356,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12738:67:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3360,
                  "nodeType": "IfStatement",
                  "src": "12734:109:10",
                  "trueBody": {
                    "id": 3359,
                    "nodeType": "Block",
                    "src": "12807:36:10",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 3357,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "12828:4:10",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 3336,
                        "id": 3358,
                        "nodeType": "Return",
                        "src": "12821:11:10"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3362,
                        "name": "vote_",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3338,
                        "src": "12892:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                          "typeString": "struct Voting.Vote storage pointer"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                          "typeString": "struct Voting.Vote storage pointer"
                        }
                      ],
                      "id": 3361,
                      "name": "_isVoteOpen",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3455,
                      "src": "12880:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Vote_$2597_storage_ptr_$returns$_t_bool_$",
                        "typeString": "function (struct Voting.Vote storage pointer) view returns (bool)"
                      }
                    },
                    "id": 3363,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12880:18:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3367,
                  "nodeType": "IfStatement",
                  "src": "12876:61:10",
                  "trueBody": {
                    "id": 3366,
                    "nodeType": "Block",
                    "src": "12900:37:10",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 3364,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "12921:5:10",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 3336,
                        "id": 3365,
                        "nodeType": "Return",
                        "src": "12914:12:10"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    3369
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3369,
                      "name": "totalVotes",
                      "nodeType": "VariableDeclaration",
                      "scope": 3405,
                      "src": "12977:18:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3368,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "12977:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3376,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3373,
                          "name": "vote_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3338,
                          "src": "13012:5:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                            "typeString": "struct Voting.Vote storage pointer"
                          }
                        },
                        "id": 3374,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "nay",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2588,
                        "src": "13012:9:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3370,
                          "name": "vote_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3338,
                          "src": "12998:5:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                            "typeString": "struct Voting.Vote storage pointer"
                          }
                        },
                        "id": 3371,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "yea",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2586,
                        "src": "12998:9:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 3372,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "add",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9673,
                      "src": "12998:13:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 3375,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12998:24:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12977:45:10"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 3384,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "13036:61:10",
                    "subExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3378,
                            "name": "vote_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3338,
                            "src": "13049:5:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                              "typeString": "struct Voting.Vote storage pointer"
                            }
                          },
                          "id": 3379,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "yea",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2586,
                          "src": "13049:9:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 3380,
                          "name": "totalVotes",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3369,
                          "src": "13060:10:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3381,
                            "name": "vote_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3338,
                            "src": "13072:5:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                              "typeString": "struct Voting.Vote storage pointer"
                            }
                          },
                          "id": 3382,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "supportRequiredPct",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2582,
                          "src": "13072:24:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        ],
                        "id": 3377,
                        "name": "_isValuePct",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3487,
                        "src": "13037:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$",
                          "typeString": "function (uint256,uint256,uint256) pure returns (bool)"
                        }
                      },
                      "id": 3383,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "13037:60:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3388,
                  "nodeType": "IfStatement",
                  "src": "13032:104:10",
                  "trueBody": {
                    "id": 3387,
                    "nodeType": "Block",
                    "src": "13099:37:10",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 3385,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "13120:5:10",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 3336,
                        "id": 3386,
                        "nodeType": "Return",
                        "src": "13113:12:10"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 3397,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "13176:68:10",
                    "subExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3390,
                            "name": "vote_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3338,
                            "src": "13189:5:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                              "typeString": "struct Voting.Vote storage pointer"
                            }
                          },
                          "id": 3391,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "yea",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2586,
                          "src": "13189:9:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3392,
                            "name": "vote_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3338,
                            "src": "13200:5:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                              "typeString": "struct Voting.Vote storage pointer"
                            }
                          },
                          "id": 3393,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "votingPower",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2590,
                          "src": "13200:17:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3394,
                            "name": "vote_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3338,
                            "src": "13219:5:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                              "typeString": "struct Voting.Vote storage pointer"
                            }
                          },
                          "id": 3395,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "minAcceptQuorumPct",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2584,
                          "src": "13219:24:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        ],
                        "id": 3389,
                        "name": "_isValuePct",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3487,
                        "src": "13177:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$",
                          "typeString": "function (uint256,uint256,uint256) pure returns (bool)"
                        }
                      },
                      "id": 3396,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "13177:67:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3401,
                  "nodeType": "IfStatement",
                  "src": "13172:111:10",
                  "trueBody": {
                    "id": 3400,
                    "nodeType": "Block",
                    "src": "13246:37:10",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 3398,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "13267:5:10",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 3336,
                        "id": 3399,
                        "nodeType": "Return",
                        "src": "13260:12:10"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "74727565",
                    "id": 3402,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "13300:4:10",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 3336,
                  "id": 3403,
                  "nodeType": "Return",
                  "src": "13293:11:10"
                }
              ]
            },
            "documentation": null,
            "id": 3405,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "_canExecute",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3333,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3332,
                  "name": "_voteId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3405,
                  "src": "12528:15:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3331,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "12528:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12527:17:10"
            },
            "payable": false,
            "returnParameters": {
              "id": 3336,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3335,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3405,
                  "src": "12568:4:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 3334,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "12568:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12567:6:10"
            },
            "scope": 3488,
            "src": "12507:804:10",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3433,
              "nodeType": "Block",
              "src": "13397:142:10",
              "statements": [
                {
                  "assignments": [
                    3415
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3415,
                      "name": "vote_",
                      "nodeType": "VariableDeclaration",
                      "scope": 3434,
                      "src": "13407:18:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                        "typeString": "struct Voting.Vote"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 3414,
                        "name": "Vote",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2597,
                        "src": "13407:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                          "typeString": "struct Voting.Vote"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3419,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 3416,
                      "name": "votes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2609,
                      "src": "13428:5:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Vote_$2597_storage_$",
                        "typeString": "mapping(uint256 => struct Voting.Vote storage ref)"
                      }
                    },
                    "id": 3418,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 3417,
                      "name": "_voteId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3407,
                      "src": "13434:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "13428:14:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Vote_$2597_storage",
                      "typeString": "struct Voting.Vote storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "13407:35:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 3431,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 3421,
                          "name": "vote_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3415,
                          "src": "13472:5:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                            "typeString": "struct Voting.Vote storage pointer"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                            "typeString": "struct Voting.Vote storage pointer"
                          }
                        ],
                        "id": 3420,
                        "name": "_isVoteOpen",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3455,
                        "src": "13460:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_struct$_Vote_$2597_storage_ptr_$returns$_t_bool_$",
                          "typeString": "function (struct Voting.Vote storage pointer) view returns (bool)"
                        }
                      },
                      "id": 3422,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "13460:18:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 3430,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3425,
                            "name": "_voter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3409,
                            "src": "13500:6:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3426,
                              "name": "vote_",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3415,
                              "src": "13508:5:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                                "typeString": "struct Voting.Vote storage pointer"
                              }
                            },
                            "id": 3427,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "snapshotBlock",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2580,
                            "src": "13508:19:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 3423,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2599,
                            "src": "13482:5:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_MiniMeToken_$2462",
                              "typeString": "contract MiniMeToken"
                            }
                          },
                          "id": 3424,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "balanceOfAt",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1915,
                          "src": "13482:17:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_address_$_t_uint256_$returns$_t_uint256_$",
                            "typeString": "function (address,uint256) view external returns (uint256)"
                          }
                        },
                        "id": 3428,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "13482:46:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 3429,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "13531:1:10",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "13482:50:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "13460:72:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 3413,
                  "id": 3432,
                  "nodeType": "Return",
                  "src": "13453:79:10"
                }
              ]
            },
            "documentation": null,
            "id": 3434,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "_canVote",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3410,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3407,
                  "name": "_voteId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3434,
                  "src": "13335:15:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3406,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "13335:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3409,
                  "name": "_voter",
                  "nodeType": "VariableDeclaration",
                  "scope": 3434,
                  "src": "13352:14:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3408,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "13352:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "13334:33:10"
            },
            "payable": false,
            "returnParameters": {
              "id": 3413,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3412,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3434,
                  "src": "13391:4:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 3411,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "13391:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "13390:6:10"
            },
            "scope": 3488,
            "src": "13317:222:10",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3454,
              "nodeType": "Block",
              "src": "13615:91:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 3452,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      },
                      "id": 3448,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 3441,
                          "name": "getTimestamp64",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6830,
                          "src": "13632:14:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_uint64_$",
                            "typeString": "function () view returns (uint64)"
                          }
                        },
                        "id": 3442,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "13632:16:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "<",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3446,
                            "name": "voteTime",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2605,
                            "src": "13671:8:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3443,
                              "name": "vote_",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3436,
                              "src": "13651:5:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                                "typeString": "struct Voting.Vote storage pointer"
                              }
                            },
                            "id": 3444,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "startDate",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2578,
                            "src": "13651:15:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "id": 3445,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "add",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 9815,
                          "src": "13651:19:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint64_$_t_uint64_$returns$_t_uint64_$bound_to$_t_uint64_$",
                            "typeString": "function (uint64,uint64) pure returns (uint64)"
                          }
                        },
                        "id": 3447,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "13651:29:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      "src": "13632:48:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 3451,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "!",
                      "prefix": true,
                      "src": "13684:15:10",
                      "subExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3449,
                          "name": "vote_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3436,
                          "src": "13685:5:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                            "typeString": "struct Voting.Vote storage pointer"
                          }
                        },
                        "id": 3450,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "executed",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2576,
                        "src": "13685:14:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "13632:67:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 3440,
                  "id": 3453,
                  "nodeType": "Return",
                  "src": "13625:74:10"
                }
              ]
            },
            "documentation": null,
            "id": 3455,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "_isVoteOpen",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3437,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3436,
                  "name": "vote_",
                  "nodeType": "VariableDeclaration",
                  "scope": 3455,
                  "src": "13566:18:10",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                    "typeString": "struct Voting.Vote"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3435,
                    "name": "Vote",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2597,
                    "src": "13566:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Vote_$2597_storage_ptr",
                      "typeString": "struct Voting.Vote"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "13565:20:10"
            },
            "payable": false,
            "returnParameters": {
              "id": 3440,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3439,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3455,
                  "src": "13609:4:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 3438,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "13609:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "13608:6:10"
            },
            "scope": 3488,
            "src": "13545:161:10",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3486,
              "nodeType": "Block",
              "src": "13907:167:10",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3468,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3466,
                      "name": "_total",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3459,
                      "src": "13921:6:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 3467,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "13931:1:10",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "13921:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3472,
                  "nodeType": "IfStatement",
                  "src": "13917:54:10",
                  "trueBody": {
                    "id": 3471,
                    "nodeType": "Block",
                    "src": "13934:37:10",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 3469,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "13955:5:10",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 3465,
                        "id": 3470,
                        "nodeType": "Return",
                        "src": "13948:12:10"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    3474
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3474,
                      "name": "computedPct",
                      "nodeType": "VariableDeclaration",
                      "scope": 3487,
                      "src": "13981:19:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3473,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "13981:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3481,
                  "initialValue": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3480,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 3477,
                          "name": "PCT_BASE",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2540,
                          "src": "14014:8:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 3475,
                          "name": "_value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3457,
                          "src": "14003:6:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3476,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "mul",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 9598,
                        "src": "14003:10:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 3478,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "14003:20:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "/",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 3479,
                      "name": "_total",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3459,
                      "src": "14026:6:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "14003:29:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "13981:51:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3484,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3482,
                      "name": "computedPct",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3474,
                      "src": "14049:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 3483,
                      "name": "_pct",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3461,
                      "src": "14063:4:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "14049:18:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 3465,
                  "id": 3485,
                  "nodeType": "Return",
                  "src": "14042:25:10"
                }
              ]
            },
            "documentation": "@dev Calculates whether `_value` is more than a percentage `_pct` of `_total`",
            "id": 3487,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "_isValuePct",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3462,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3457,
                  "name": "_value",
                  "nodeType": "VariableDeclaration",
                  "scope": 3487,
                  "src": "13832:14:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3456,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "13832:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3459,
                  "name": "_total",
                  "nodeType": "VariableDeclaration",
                  "scope": 3487,
                  "src": "13848:14:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3458,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "13848:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3461,
                  "name": "_pct",
                  "nodeType": "VariableDeclaration",
                  "scope": 3487,
                  "src": "13864:12:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3460,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "13864:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "13831:46:10"
            },
            "payable": false,
            "returnParameters": {
              "id": 3465,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3464,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3487,
                  "src": "13901:4:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 3463,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "13901:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "13900:6:10"
            },
            "scope": 3488,
            "src": "13811:263:10",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          }
        ],
        "scope": 3489,
        "src": "360:13716:10"
      }
    ],
    "src": "57:14020:10"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.24+commit.e67f0147.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.2.0",
  "updatedAt": "2020-06-07T23:27:00.526Z",
  "devdoc": {
    "methods": {
      "allowRecoverability(address)": {
        "details": "By default deriving from AragonApp makes it recoverable",
        "params": {
          "token": "Token address that would be recovered"
        },
        "return": "bool whether the app allows the recovery"
      },
      "canExecute(uint256)": {
        "details": "Initialization check is implicitly provided by `voteExists()` as new votes can only be     created via `newVote(),` which requires initialization"
      },
      "canPerform(address,bytes32,uint256[])": {
        "details": "Check whether an action can be performed by a sender for a particular role on this app",
        "params": {
          "_params": "Permission params for the role",
          "_role": "Role on this app",
          "_sender": "Sender of the call"
        },
        "return": "Boolean indicating whether the sender has the permissions to perform the action.        Always returns false if the app hasn't been initialized yet."
      },
      "canVote(uint256,address)": {
        "details": "Initialization check is implicitly provided by `voteExists()` as new votes can only be     created via `newVote(),` which requires initialization"
      },
      "changeMinAcceptQuorumPct(uint64)": {
        "params": {
          "_minAcceptQuorumPct": "New acceptance quorum"
        }
      },
      "changeSupportRequiredPct(uint64)": {
        "params": {
          "_supportRequiredPct": "New required support"
        }
      },
      "executeVote(uint256)": {
        "details": "Initialization check is implicitly provided by `voteExists()` as new votes can only be     created via `newVote(),` which requires initialization",
        "params": {
          "_voteId": "Id for vote"
        }
      },
      "forward(bytes)": {
        "details": "IForwarder interface conformance",
        "params": {
          "_evmScript": "Start vote with script"
        }
      },
      "getInitializationBlock()": {
        "return": "Block number in which the contract was initialized"
      },
      "getRecoveryVault()": {
        "details": "Get the recovery vault for the app",
        "return": "Recovery vault address for the app"
      },
      "hasInitialized()": {
        "return": "Whether the contract has been initialized by the time of the current block"
      },
      "initialize(address,uint64,uint64,uint64)": {
        "params": {
          "_minAcceptQuorumPct": "Percentage of yeas in total possible votes for a vote to succeed (expressed as a percentage of 10^18; eg. 10^16 = 1%, 10^18 = 100%)",
          "_supportRequiredPct": "Percentage of yeas in casted votes for a vote to succeed (expressed as a percentage of 10^18; eg. 10^16 = 1%, 10^18 = 100%)",
          "_token": "MiniMeToken Address that will be used as governance token",
          "_voteTime": "Seconds that a vote will be open for token holders to vote (unless enough yeas or nays have been cast to make an early decision)"
        }
      },
      "newVote(bytes,string)": {
        "params": {
          "_executionScript": "EVM script to be executed on approval",
          "_metadata": "Vote metadata"
        },
        "return": "voteId Id for newly created vote"
      },
      "newVote(bytes,string,bool,bool)": {
        "params": {
          "_castVote": "Whether to also cast newly created vote",
          "_executesIfDecided": "Whether to also immediately execute newly created vote if decided",
          "_executionScript": "EVM script to be executed on approval",
          "_metadata": "Vote metadata"
        },
        "return": "voteId id for newly created vote"
      },
      "transferToVault(address)": {
        "params": {
          "_token": "Token balance to be sent to recovery vault."
        }
      },
      "vote(uint256,bool,bool)": {
        "details": "Initialization check is implicitly provided by `voteExists()` as new votes can only be     created via `newVote(),` which requires initialization",
        "params": {
          "_executesIfDecided": "Whether the vote should execute its action if it becomes decided",
          "_supports": "Whether voter supports the vote",
          "_voteId": "Id for vote"
        }
      }
    }
  },
  "userdoc": {
    "methods": {
      "changeMinAcceptQuorumPct(uint64)": {
        "notice": "Change minimum acceptance quorum to `@formatPct(_minAcceptQuorumPct)`%"
      },
      "changeSupportRequiredPct(uint64)": {
        "notice": "Change required support to `@formatPct(_supportRequiredPct)`%"
      },
      "executeVote(uint256)": {
        "notice": "Execute vote #`_voteId`"
      },
      "forward(bytes)": {
        "notice": "Creates a vote to execute the desired action, and casts a support vote if possible"
      },
      "initialize(address,uint64,uint64,uint64)": {
        "notice": "Initialize Voting app with `_token.symbol(): string` for governance, minimum support of `@formatPct(_supportRequiredPct)`%, minimum acceptance quorum of `@formatPct(_minAcceptQuorumPct)`%, and a voting duration of `@transformTime(_voteTime)`"
      },
      "newVote(bytes,string)": {
        "notice": "Create a new vote about \"`_metadata`\""
      },
      "newVote(bytes,string,bool,bool)": {
        "notice": "Create a new vote about \"`_metadata`\""
      },
      "transferToVault(address)": {
        "notice": "Send funds to recovery Vault. This contract should never receive funds,        but in case it does, this function allows one to recover them."
      },
      "vote(uint256,bool,bool)": {
        "notice": "Vote `_supports ? 'yes' : 'no'` in vote #`_voteId`"
      }
    }
  }
}