{
  "contractName": "TieredPool",
  "abi": [
    {
      "constant": false,
      "inputs": [],
      "name": "activate",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "gateway",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "b",
          "type": "address"
        }
      ],
      "name": "ballotExists",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "addr",
          "type": "address"
        }
      ],
      "name": "removeAdmin",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "addr",
          "type": "address"
        }
      ],
      "name": "isAdmin",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "electionPhase",
      "outputs": [
        {
          "name": "",
          "type": "uint8"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "votes",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "abort",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "createdBy",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "checkBallots",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "voteId",
          "type": "bytes32"
        },
        {
          "name": "vote",
          "type": "string"
        },
        {
          "name": "passphrase",
          "type": "string"
        },
        {
          "name": "jti",
          "type": "bytes32"
        }
      ],
      "name": "castVote",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "entry",
          "type": "bytes32"
        }
      ],
      "name": "addAuthorized",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "close",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "election",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "removeSelf",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "entry",
          "type": "bytes32"
        }
      ],
      "name": "isAuthorized",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "addr",
          "type": "address"
        }
      ],
      "name": "addAdmin",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "entry",
          "type": "bytes32"
        }
      ],
      "name": "removeAuthorized",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "getVoteAt",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "isLocked",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "unlock",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getBallotCount",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "isClosed",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "voteId",
          "type": "bytes32"
        },
        {
          "name": "vote",
          "type": "string"
        },
        {
          "name": "passphrase",
          "type": "string"
        },
        {
          "name": "jti",
          "type": "bytes32"
        }
      ],
      "name": "updateVote",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "b",
          "type": "address"
        }
      ],
      "name": "removeBallot",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "b",
          "type": "address"
        }
      ],
      "name": "getBallotIndex",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getVoteCount",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "checkConfig",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "lock",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "b",
          "type": "address"
        }
      ],
      "name": "addBallot",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "getBallot",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "name": "hashedUserId",
          "type": "bytes32"
        },
        {
          "name": "el",
          "type": "address"
        },
        {
          "name": "gw",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "name": "voteId",
          "type": "bytes32"
        }
      ],
      "name": "Vote",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "name": "voteId",
          "type": "bytes32"
        }
      ],
      "name": "UpdateVote",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [],
      "name": "Closed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [],
      "name": "Activated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [],
      "name": "Aborted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [],
      "name": "Locked",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [],
      "name": "Unlocked",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    }
  ],
  "bytecode": "0x60606040526003805461ffff1916905534156200001b57600080fd5b60405160608062001d0583398101604052808051919060200180519190602001805160008054600160a060020a03191633600160a060020a039081169190911790915590925084915083908390821615801590620000815750600160a060020a03811615155b15156200008d57600080fd5b620000a68364010000000062000e63620000dd82021704565b60098054600160a060020a03938416600160a060020a031991821617909155600d8054929093169116179055506200016e92505050565b620000f633640100000000620007cb6200011d82021704565b15156200010257600080fd5b6000908152600260205260409020805460ff19166001179055565b6000600160a060020a03821615801590620001685750600054600160a060020a0383811691161480620001685750600160a060020a03821660009081526001602052604090205460ff165b92915050565b611b87806200017e6000396000f3006060604052600436106101875763ffffffff60e060020a6000350416630f15f4c0811461018c578063116191b6146101a1578063138b1fa0146101d05780631785f53c1461020357806324d7806c14610222578063265050b6146102415780632b38cd961461027857806335a063b4146103055780633a5673a4146103185780633abfb2e91461032b5780634126ebe21461033e57806341af099d146103d857806343d726d6146103ee5780634b1d3ede146104015780635e898dac1461041457806362f4ed9014610427578063704802751461043d57806372e789b31461045c5780638da5cb5b146104725780639cc8f2b314610485578063a4e2d6341461049b578063a69df4b5146104ae578063b4741495146104c1578063c2b6b58c146104e6578063d6807a5c146104f9578063d71c677214610593578063db30eafb146105b2578063e7b3387c146105d1578063f098fe47146105e4578063f2fde38b146105f7578063f83d08ba14610616578063f8c74afa14610629578063f9d5ee7514610648575b600080fd5b341561019757600080fd5b61019f61065e565b005b34156101ac57600080fd5b6101b46106f7565b604051600160a060020a03909116815260200160405180910390f35b34156101db57600080fd5b6101ef600160a060020a0360043516610706565b604051901515815260200160405180910390f35b341561020e57600080fd5b61019f600160a060020a036004351661078f565b341561022d57600080fd5b6101ef600160a060020a03600435166107cb565b341561024c57600080fd5b61025461081a565b6040518082600381111561026457fe5b60ff16815260200191505060405180910390f35b341561028357600080fd5b61028e600435610828565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156102ca5780820151838201526020016102b2565b50505050905090810190601f1680156102f75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561031057600080fd5b61019f6108d8565b341561032357600080fd5b61028e610929565b341561033657600080fd5b6101ef610994565b341561034957600080fd5b61019f600480359060446024803590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405281815292919060208401838380828437509496505093359350610c1a92505050565b34156103e357600080fd5b61019f600435610e63565b34156103f957600080fd5b61019f610e92565b341561040c57600080fd5b6101b4610f18565b341561041f57600080fd5b61019f610f27565b341561043257600080fd5b6101ef600435610f5d565b341561044857600080fd5b61019f600160a060020a0360043516610f72565b341561046757600080fd5b61019f600435610fb4565b341561047d57600080fd5b6101b4610fe0565b341561049057600080fd5b61028e600435610fef565b34156104a657600080fd5b6101ef61112a565b34156104b957600080fd5b61019f611134565b34156104cc57600080fd5b6104d4611191565b60405190815260200160405180910390f35b34156104f157600080fd5b6101ef61120a565b341561050457600080fd5b61019f600480359060446024803590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f016020809104026020016040519081016040528181529291906020840183838082843750949650509335935061122a92505050565b341561059e57600080fd5b61019f600160a060020a03600435166113fd565b34156105bd57600080fd5b6104d4600160a060020a03600435166114bc565b34156105dc57600080fd5b6104d4611525565b34156105ef57600080fd5b6101ef61157f565b341561060257600080fd5b61019f600160a060020a0360043516611691565b341561062157600080fd5b61019f61172c565b341561063457600080fd5b61019f600160a060020a036004351661178b565b341561065357600080fd5b6101b4600435611833565b61066661112a565b1580156106885750600060038054610100900460ff169081111561068657fe5b145b151561069357600080fd5b61069c336107cb565b15156106a757600080fd5b6106af61157f565b15156106ba57600080fd5b6003805461ff0019166101001790557fed1cd0670ee0c0017f550451a038818c696d0b6a9d6ce5b369e44275573cf9b060405160405180910390a1565b600d54600160a060020a031681565b600073__AddressSet____________________________63758241e0600484846040516020015260405160e060020a63ffffffff85160281526004810192909252600160a060020a0316602482015260440160206040518083038186803b151561076f57600080fd5b6102c65a03f4151561078057600080fd5b50505060405180519392505050565b60005433600160a060020a039081169116146107aa57600080fd5b600160a060020a03166000908152600160205260409020805460ff19169055565b6000600160a060020a038216158015906108145750600054600160a060020a03838116911614806108145750600160a060020a03821660009081526001602052604090205460ff165b92915050565b600354610100900460ff1681565b600b6020528060005260406000206000915090508054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108d05780601f106108a5576101008083540402835291602001916108d0565b820191906000526020600020905b8154815290600101906020018083116108b357829003601f168201915b505050505081565b6108e1336107cb565b15156108ec57600080fd5b6003805461ff0019166103001790557f72c874aeff0b183a56e2b79c71b46e1aed4dee5e09862134b8821ba2fddbf8bf60405160405180910390a1565b600a8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108d05780601f106108a5576101008083540402835291602001916108d0565b6000805b73__AddressSet____________________________63913aa6cd600460006040516020015260405160e060020a63ffffffff8416028152600481019190915260240160206040518083038186803b15156109f157600080fd5b6102c65a03f41515610a0257600080fd5b50505060405180519050811015610c115773__AddressSet____________________________635c2125a760048360006040516020015260405160e060020a63ffffffff85160281526004810192909252602482015260440160206040518083038186803b1515610a7257600080fd5b6102c65a03f41515610a8357600080fd5b50505060405180519050600160a060020a0316631e1c6a073060006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515610ae357600080fd5b6102c65a03f11515610af457600080fd5b505050604051805190501515610b0d5760009150610c16565b600954600160a060020a031663138b1fa073__AddressSet____________________________635c2125a760048560006040516020015260405160e060020a63ffffffff85160281526004810192909252602482015260440160206040518083038186803b1515610b7d57600080fd5b6102c65a03f41515610b8e57600080fd5b5050506040518051905060006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515610bdf57600080fd5b6102c65a03f11515610bf057600080fd5b505050604051805190501515610c095760009150610c16565b600101610998565b600191505b5090565b6000610c2461112a565b158015610c465750600160038054610100900460ff1690811115610c4457fe5b145b1515610c5157600080fd5b8473__NoRemovalBytes32Set___________________63bd4a0da160078360006040516020015260405160e060020a63ffffffff85160281526004810192909252602482015260440160206040518083038186803b1515610cb157600080fd5b6102c65a03f41515610cc257600080fd5b5050506040518051159050610cd657600080fd5b600d5433600160a060020a03908116911614610cf157600080fd5b610cfd86868686611893565b600091505b73__AddressSet____________________________63913aa6cd600460006040516020015260405160e060020a63ffffffff8416028152600481019190915260240160206040518083038186803b1515610d5b57600080fd5b6102c65a03f41515610d6c57600080fd5b50505060405180519050821015610e5b5773__AddressSet____________________________635c2125a760048460006040516020015260405160e060020a63ffffffff85160281526004810192909252602482015260440160206040518083038186803b1515610ddc57600080fd5b6102c65a03f41515610ded57600080fd5b50505060405180519050600160a060020a0316633efafb6e8760405160e060020a63ffffffff84160281526004810191909152602401600060405180830381600087803b1515610e3c57600080fd5b6102c65a03f11515610e4d57600080fd5b505060019092019150610d02565b505050505050565b610e6c336107cb565b1515610e7757600080fd5b6000908152600260205260409020805460ff19166001179055565b610e9a61112a565b158015610ebc5750600160038054610100900460ff1690811115610eba57fe5b145b1515610ec757600080fd5b610ed0336107cb565b1515610edb57600080fd5b6003805461ff0019166102001790557f1cdde67b72a90f19919ac732a437ac2f7a10fc128d28c2a6e525d89ce5cd9d3a60405160405180910390a1565b600954600160a060020a031681565b610f30336107cb565b1515610f3b57600080fd5b600160a060020a0333166000908152600160205260409020805460ff19169055565b60009081526002602052604090205460ff1690565b60005433600160a060020a03908116911614610f8d57600080fd5b600160a060020a03166000908152600160208190526040909120805460ff19169091179055565b610fbd336107cb565b1515610fc857600080fd5b6000908152600260205260409020805460ff19169055565b600054600160a060020a031681565b610ff7611abb565b600b600073__NoRemovalBytes32Set___________________637a3d376c600786846040516020015260405160e060020a63ffffffff85160281526004810192909252602482015260440160206040518083038186803b151561105957600080fd5b6102c65a03f4151561106a57600080fd5b50505060405180519050600019166000191681526020019081526020016000208054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561111e5780601f106110f35761010080835404028352916020019161111e565b820191906000526020600020905b81548152906001019060200180831161110157829003601f168201915b50505050509050919050565b60035460ff165b90565b61113d336107cb565b151561114857600080fd5b60035460ff16151561115957600080fd5b6003805460ff191690557f19aad37188a1d3921e29eb3c66acf43d81975e107cb650d58cca878627955fd660405160405180910390a1565b600073__AddressSet____________________________63913aa6cd6004836040516020015260405160e060020a63ffffffff8416028152600481019190915260240160206040518083038186803b15156111eb57600080fd5b6102c65a03f415156111fc57600080fd5b505050604051805191505090565b6000600260038054610100900460ff169081111561122457fe5b14905090565b61123261112a565b1580156112545750600160038054610100900460ff169081111561125257fe5b145b151561125f57600080fd5b600d5433600160a060020a0390811691161461127a57600080fd5b600954600160a060020a031663bf41bf366000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156112c257600080fd5b6102c65a03f115156112d357600080fd5b5050506040518051905015156112e857600080fd5b6000818152600c6020526040902054819060ff161561130657600080fd5b73__NoRemovalBytes32Set___________________63bd4a0da160078760006040516020015260405160e060020a63ffffffff85160281526004810192909252602482015260440160206040518083038186803b151561136557600080fd5b6102c65a03f4151561137657600080fd5b50505060405180519050151561138b57600080fd5b6000828152600c60209081526040808320805460ff19166001179055878352600b90915290208480516113c2929160200190611acd565b507fb76baefd7e249e81a2c6ab2dd1692b4629b993e50c0f341cd9410ca6b0f3392e8560405190815260200160405180910390a15050505050565b61140561112a565b1580156114275750600060038054610100900460ff169081111561142557fe5b145b151561143257600080fd5b61143b336107cb565b151561144657600080fd5b73__AddressSet____________________________63e134066a60048360405160e060020a63ffffffff85160281526004810192909252600160a060020a0316602482015260440160006040518083038186803b15156114a557600080fd5b6102c65a03f415156114b657600080fd5b50505050565b600073__AddressSet____________________________6318c40249600484846040516020015260405160e060020a63ffffffff85160281526004810192909252600160a060020a0316602482015260440160206040518083038186803b151561076f57600080fd5b600073__NoRemovalBytes32Set___________________6366b26fbf6007836040516020015260405160e060020a63ffffffff8416028152600481019190915260240160206040518083038186803b15156111eb57600080fd5b600073__AddressSet____________________________63913aa6cd6004836040516020015260405160e060020a63ffffffff8416028152600481019190915260240160206040518083038186803b15156115d957600080fd5b6102c65a03f415156115ea57600080fd5b50505060405180511515905061160257506000611131565b600954600160a060020a0316631e1c6a073060006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561165b57600080fd5b6102c65a03f1151561166c57600080fd5b50505060405180519050151561168457506000611131565b61168c610994565b905090565b60005433600160a060020a039081169116146116ac57600080fd5b600160a060020a03811615156116c157600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b611735336107cb565b151561174057600080fd5b60035460ff161561175057600080fd5b6003805460ff191660011790557f0f2e5b6c72c6a4491efd919a9f9a409f324ef0708c11ee57d410c2cb06c0992b60405160405180910390a1565b61179361112a565b1580156117b55750600060038054610100900460ff16908111156117b357fe5b145b15156117c057600080fd5b6117c9336107cb565b15156117d457600080fd5b73__AddressSet____________________________63f9802f8560048360405160e060020a63ffffffff85160281526004810192909252600160a060020a0316602482015260440160006040518083038186803b15156114a557600080fd5b600073__AddressSet____________________________635c2125a7600484846040516020015260405160e060020a63ffffffff85160281526004810192909252602482015260440160206040518083038186803b151561076f57600080fd5b61189b61112a565b1580156118bd5750600160038054610100900460ff16908111156118bb57fe5b145b15156118c857600080fd5b600d5433600160a060020a039081169116146118e357600080fd5b8373__NoRemovalBytes32Set___________________63bd4a0da160078360006040516020015260405160e060020a63ffffffff85160281526004810192909252602482015260440160206040518083038186803b151561194357600080fd5b6102c65a03f4151561195457600080fd5b505050604051805115905061196857600080fd5b6000828152600c6020526040902054829060ff161561198657600080fd5b6000838152600c602052604090819020805460ff1916600117905573__NoRemovalBytes32Set___________________9063bda02f009060079089905160e060020a63ffffffff85160281526004810192909252602482015260440160006040518083038186803b15156119f957600080fd5b6102c65a03f41515611a0a57600080fd5b5050506000868152600b60205260409020858051611a2c929160200190611acd565b50600954600160a060020a031663de61a7326040518163ffffffff1660e060020a028152600401600060405180830381600087803b1515611a6c57600080fd5b6102c65a03f11515611a7d57600080fd5b5050507fe071651fdb9485bc1f9dbd3312c8a999c04ad7a5fef33ee1036e1fc709c4da4f8660405190815260200160405180910390a1505050505050565b60206040519081016040526000815290565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611b0e57805160ff1916838001178555611b3b565b82800160010185558215611b3b579182015b82811115611b3b578251825591602001919060010190611b20565b50610c16926111319250905b80821115610c165760008155600101611b475600a165627a7a723058201f9415b82429fb2ecd345b4b6fc7fa1b463d6c27c818945dfb4ffb65c3f35be50029",
  "deployedBytecode": "0x6060604052600436106101875763ffffffff60e060020a6000350416630f15f4c0811461018c578063116191b6146101a1578063138b1fa0146101d05780631785f53c1461020357806324d7806c14610222578063265050b6146102415780632b38cd961461027857806335a063b4146103055780633a5673a4146103185780633abfb2e91461032b5780634126ebe21461033e57806341af099d146103d857806343d726d6146103ee5780634b1d3ede146104015780635e898dac1461041457806362f4ed9014610427578063704802751461043d57806372e789b31461045c5780638da5cb5b146104725780639cc8f2b314610485578063a4e2d6341461049b578063a69df4b5146104ae578063b4741495146104c1578063c2b6b58c146104e6578063d6807a5c146104f9578063d71c677214610593578063db30eafb146105b2578063e7b3387c146105d1578063f098fe47146105e4578063f2fde38b146105f7578063f83d08ba14610616578063f8c74afa14610629578063f9d5ee7514610648575b600080fd5b341561019757600080fd5b61019f61065e565b005b34156101ac57600080fd5b6101b46106f7565b604051600160a060020a03909116815260200160405180910390f35b34156101db57600080fd5b6101ef600160a060020a0360043516610706565b604051901515815260200160405180910390f35b341561020e57600080fd5b61019f600160a060020a036004351661078f565b341561022d57600080fd5b6101ef600160a060020a03600435166107cb565b341561024c57600080fd5b61025461081a565b6040518082600381111561026457fe5b60ff16815260200191505060405180910390f35b341561028357600080fd5b61028e600435610828565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156102ca5780820151838201526020016102b2565b50505050905090810190601f1680156102f75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561031057600080fd5b61019f6108d8565b341561032357600080fd5b61028e610929565b341561033657600080fd5b6101ef610994565b341561034957600080fd5b61019f600480359060446024803590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405281815292919060208401838380828437509496505093359350610c1a92505050565b34156103e357600080fd5b61019f600435610e63565b34156103f957600080fd5b61019f610e92565b341561040c57600080fd5b6101b4610f18565b341561041f57600080fd5b61019f610f27565b341561043257600080fd5b6101ef600435610f5d565b341561044857600080fd5b61019f600160a060020a0360043516610f72565b341561046757600080fd5b61019f600435610fb4565b341561047d57600080fd5b6101b4610fe0565b341561049057600080fd5b61028e600435610fef565b34156104a657600080fd5b6101ef61112a565b34156104b957600080fd5b61019f611134565b34156104cc57600080fd5b6104d4611191565b60405190815260200160405180910390f35b34156104f157600080fd5b6101ef61120a565b341561050457600080fd5b61019f600480359060446024803590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f016020809104026020016040519081016040528181529291906020840183838082843750949650509335935061122a92505050565b341561059e57600080fd5b61019f600160a060020a03600435166113fd565b34156105bd57600080fd5b6104d4600160a060020a03600435166114bc565b34156105dc57600080fd5b6104d4611525565b34156105ef57600080fd5b6101ef61157f565b341561060257600080fd5b61019f600160a060020a0360043516611691565b341561062157600080fd5b61019f61172c565b341561063457600080fd5b61019f600160a060020a036004351661178b565b341561065357600080fd5b6101b4600435611833565b61066661112a565b1580156106885750600060038054610100900460ff169081111561068657fe5b145b151561069357600080fd5b61069c336107cb565b15156106a757600080fd5b6106af61157f565b15156106ba57600080fd5b6003805461ff0019166101001790557fed1cd0670ee0c0017f550451a038818c696d0b6a9d6ce5b369e44275573cf9b060405160405180910390a1565b600d54600160a060020a031681565b600073__AddressSet____________________________63758241e0600484846040516020015260405160e060020a63ffffffff85160281526004810192909252600160a060020a0316602482015260440160206040518083038186803b151561076f57600080fd5b6102c65a03f4151561078057600080fd5b50505060405180519392505050565b60005433600160a060020a039081169116146107aa57600080fd5b600160a060020a03166000908152600160205260409020805460ff19169055565b6000600160a060020a038216158015906108145750600054600160a060020a03838116911614806108145750600160a060020a03821660009081526001602052604090205460ff165b92915050565b600354610100900460ff1681565b600b6020528060005260406000206000915090508054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108d05780601f106108a5576101008083540402835291602001916108d0565b820191906000526020600020905b8154815290600101906020018083116108b357829003601f168201915b505050505081565b6108e1336107cb565b15156108ec57600080fd5b6003805461ff0019166103001790557f72c874aeff0b183a56e2b79c71b46e1aed4dee5e09862134b8821ba2fddbf8bf60405160405180910390a1565b600a8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108d05780601f106108a5576101008083540402835291602001916108d0565b6000805b73__AddressSet____________________________63913aa6cd600460006040516020015260405160e060020a63ffffffff8416028152600481019190915260240160206040518083038186803b15156109f157600080fd5b6102c65a03f41515610a0257600080fd5b50505060405180519050811015610c115773__AddressSet____________________________635c2125a760048360006040516020015260405160e060020a63ffffffff85160281526004810192909252602482015260440160206040518083038186803b1515610a7257600080fd5b6102c65a03f41515610a8357600080fd5b50505060405180519050600160a060020a0316631e1c6a073060006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515610ae357600080fd5b6102c65a03f11515610af457600080fd5b505050604051805190501515610b0d5760009150610c16565b600954600160a060020a031663138b1fa073__AddressSet____________________________635c2125a760048560006040516020015260405160e060020a63ffffffff85160281526004810192909252602482015260440160206040518083038186803b1515610b7d57600080fd5b6102c65a03f41515610b8e57600080fd5b5050506040518051905060006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515610bdf57600080fd5b6102c65a03f11515610bf057600080fd5b505050604051805190501515610c095760009150610c16565b600101610998565b600191505b5090565b6000610c2461112a565b158015610c465750600160038054610100900460ff1690811115610c4457fe5b145b1515610c5157600080fd5b8473__NoRemovalBytes32Set___________________63bd4a0da160078360006040516020015260405160e060020a63ffffffff85160281526004810192909252602482015260440160206040518083038186803b1515610cb157600080fd5b6102c65a03f41515610cc257600080fd5b5050506040518051159050610cd657600080fd5b600d5433600160a060020a03908116911614610cf157600080fd5b610cfd86868686611893565b600091505b73__AddressSet____________________________63913aa6cd600460006040516020015260405160e060020a63ffffffff8416028152600481019190915260240160206040518083038186803b1515610d5b57600080fd5b6102c65a03f41515610d6c57600080fd5b50505060405180519050821015610e5b5773__AddressSet____________________________635c2125a760048460006040516020015260405160e060020a63ffffffff85160281526004810192909252602482015260440160206040518083038186803b1515610ddc57600080fd5b6102c65a03f41515610ded57600080fd5b50505060405180519050600160a060020a0316633efafb6e8760405160e060020a63ffffffff84160281526004810191909152602401600060405180830381600087803b1515610e3c57600080fd5b6102c65a03f11515610e4d57600080fd5b505060019092019150610d02565b505050505050565b610e6c336107cb565b1515610e7757600080fd5b6000908152600260205260409020805460ff19166001179055565b610e9a61112a565b158015610ebc5750600160038054610100900460ff1690811115610eba57fe5b145b1515610ec757600080fd5b610ed0336107cb565b1515610edb57600080fd5b6003805461ff0019166102001790557f1cdde67b72a90f19919ac732a437ac2f7a10fc128d28c2a6e525d89ce5cd9d3a60405160405180910390a1565b600954600160a060020a031681565b610f30336107cb565b1515610f3b57600080fd5b600160a060020a0333166000908152600160205260409020805460ff19169055565b60009081526002602052604090205460ff1690565b60005433600160a060020a03908116911614610f8d57600080fd5b600160a060020a03166000908152600160208190526040909120805460ff19169091179055565b610fbd336107cb565b1515610fc857600080fd5b6000908152600260205260409020805460ff19169055565b600054600160a060020a031681565b610ff7611abb565b600b600073__NoRemovalBytes32Set___________________637a3d376c600786846040516020015260405160e060020a63ffffffff85160281526004810192909252602482015260440160206040518083038186803b151561105957600080fd5b6102c65a03f4151561106a57600080fd5b50505060405180519050600019166000191681526020019081526020016000208054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561111e5780601f106110f35761010080835404028352916020019161111e565b820191906000526020600020905b81548152906001019060200180831161110157829003601f168201915b50505050509050919050565b60035460ff165b90565b61113d336107cb565b151561114857600080fd5b60035460ff16151561115957600080fd5b6003805460ff191690557f19aad37188a1d3921e29eb3c66acf43d81975e107cb650d58cca878627955fd660405160405180910390a1565b600073__AddressSet____________________________63913aa6cd6004836040516020015260405160e060020a63ffffffff8416028152600481019190915260240160206040518083038186803b15156111eb57600080fd5b6102c65a03f415156111fc57600080fd5b505050604051805191505090565b6000600260038054610100900460ff169081111561122457fe5b14905090565b61123261112a565b1580156112545750600160038054610100900460ff169081111561125257fe5b145b151561125f57600080fd5b600d5433600160a060020a0390811691161461127a57600080fd5b600954600160a060020a031663bf41bf366000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156112c257600080fd5b6102c65a03f115156112d357600080fd5b5050506040518051905015156112e857600080fd5b6000818152600c6020526040902054819060ff161561130657600080fd5b73__NoRemovalBytes32Set___________________63bd4a0da160078760006040516020015260405160e060020a63ffffffff85160281526004810192909252602482015260440160206040518083038186803b151561136557600080fd5b6102c65a03f4151561137657600080fd5b50505060405180519050151561138b57600080fd5b6000828152600c60209081526040808320805460ff19166001179055878352600b90915290208480516113c2929160200190611acd565b507fb76baefd7e249e81a2c6ab2dd1692b4629b993e50c0f341cd9410ca6b0f3392e8560405190815260200160405180910390a15050505050565b61140561112a565b1580156114275750600060038054610100900460ff169081111561142557fe5b145b151561143257600080fd5b61143b336107cb565b151561144657600080fd5b73__AddressSet____________________________63e134066a60048360405160e060020a63ffffffff85160281526004810192909252600160a060020a0316602482015260440160006040518083038186803b15156114a557600080fd5b6102c65a03f415156114b657600080fd5b50505050565b600073__AddressSet____________________________6318c40249600484846040516020015260405160e060020a63ffffffff85160281526004810192909252600160a060020a0316602482015260440160206040518083038186803b151561076f57600080fd5b600073__NoRemovalBytes32Set___________________6366b26fbf6007836040516020015260405160e060020a63ffffffff8416028152600481019190915260240160206040518083038186803b15156111eb57600080fd5b600073__AddressSet____________________________63913aa6cd6004836040516020015260405160e060020a63ffffffff8416028152600481019190915260240160206040518083038186803b15156115d957600080fd5b6102c65a03f415156115ea57600080fd5b50505060405180511515905061160257506000611131565b600954600160a060020a0316631e1c6a073060006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561165b57600080fd5b6102c65a03f1151561166c57600080fd5b50505060405180519050151561168457506000611131565b61168c610994565b905090565b60005433600160a060020a039081169116146116ac57600080fd5b600160a060020a03811615156116c157600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b611735336107cb565b151561174057600080fd5b60035460ff161561175057600080fd5b6003805460ff191660011790557f0f2e5b6c72c6a4491efd919a9f9a409f324ef0708c11ee57d410c2cb06c0992b60405160405180910390a1565b61179361112a565b1580156117b55750600060038054610100900460ff16908111156117b357fe5b145b15156117c057600080fd5b6117c9336107cb565b15156117d457600080fd5b73__AddressSet____________________________63f9802f8560048360405160e060020a63ffffffff85160281526004810192909252600160a060020a0316602482015260440160006040518083038186803b15156114a557600080fd5b600073__AddressSet____________________________635c2125a7600484846040516020015260405160e060020a63ffffffff85160281526004810192909252602482015260440160206040518083038186803b151561076f57600080fd5b61189b61112a565b1580156118bd5750600160038054610100900460ff16908111156118bb57fe5b145b15156118c857600080fd5b600d5433600160a060020a039081169116146118e357600080fd5b8373__NoRemovalBytes32Set___________________63bd4a0da160078360006040516020015260405160e060020a63ffffffff85160281526004810192909252602482015260440160206040518083038186803b151561194357600080fd5b6102c65a03f4151561195457600080fd5b505050604051805115905061196857600080fd5b6000828152600c6020526040902054829060ff161561198657600080fd5b6000838152600c602052604090819020805460ff1916600117905573__NoRemovalBytes32Set___________________9063bda02f009060079089905160e060020a63ffffffff85160281526004810192909252602482015260440160006040518083038186803b15156119f957600080fd5b6102c65a03f41515611a0a57600080fd5b5050506000868152600b60205260409020858051611a2c929160200190611acd565b50600954600160a060020a031663de61a7326040518163ffffffff1660e060020a028152600401600060405180830381600087803b1515611a6c57600080fd5b6102c65a03f11515611a7d57600080fd5b5050507fe071651fdb9485bc1f9dbd3312c8a999c04ad7a5fef33ee1036e1fc709c4da4f8660405190815260200160405180910390a1505050505050565b60206040519081016040526000815290565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611b0e57805160ff1916838001178555611b3b565b82800160010185558215611b3b579182015b82811115611b3b578251825591602001919060010190611b20565b50610c16926111319250905b80821115610c165760008155600101611b475600a165627a7a723058201f9415b82429fb2ecd345b4b6fc7fa1b463d6c27c818945dfb4ffb65c3f35be50029",
  "sourceMap": "1111:1470:10:-;;;1183:22:16;;;-1:-1:-1;;1326:59:15;;;1150:112:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;494:5:21;:18;;-1:-1:-1;;;;;;494:18:21;502:10;-1:-1:-1;;;;;494:18:21;;;;;;;;;;1150:112:10;;-1:-1:-1;1225:12:10;;-1:-1:-1;1239:2:10;;1150:112;;1792:16:4;;;;;;:36;;-1:-1:-1;;;;;;1812:16:4;;;;1792:36;1784:45;;;;;;;;1839:27;1853:12;1839:13;;;;;;:27;:::i;:::-;1876:8;:13;;-1:-1:-1;;;;;1876:13:4;;;-1:-1:-1;;;;;;1876:13:4;;;;;;;1899:7;:12;;;;;;;;;;;-1:-1:-1;1111:1470:10;;-1:-1:-1;;;1111:1470:10;1240:92:1;1168:19:0;1176:10;1168:7;;;;;;:19;:::i;:::-;1160:28;;;;;;;;1301:17:1;;;;:10;:17;;;;;:24;;-1:-1:-1;;1301:24:1;1321:4;1301:24;;;1240:92::o;1212:145:0:-;1268:4;-1:-1:-1;;;;;1291:18:0;;;;;;:59;;-1:-1:-1;1322:5:0;;-1:-1:-1;;;;;1314:13:0;;;1322:5;;1314:13;;:35;;-1:-1:-1;;;;;;1331:18:0;;;;;;:12;:18;;;;;;;;1314:35;1284:66;1212:145;-1:-1:-1;;1212:145:0:o;1111:1470:10:-;;;;;;;",
  "deployedSourceMap": "1111:1470:10:-;;;;;;;;;-1:-1:-1;;;1111:1470:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2006:148:15;;;;;;;;;;;;;;1674:22:4;;;;;;;;;;;;;;;-1:-1:-1;;;;;1674:22:4;;;;;;;;;;;;;;1836:109:5;;;;;;;;;;-1:-1:-1;;;;;1836:109:5;;;;;;;;;;;;;;;;;;;;;;1460:95:0;;;;;;;;;;-1:-1:-1;;;;;1460:95:0;;;;;1212:145;;;;;;;;;;-1:-1:-1;;;;;1212:145:0;;;;;1326:59:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1557:40:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;71:3;;;64:6;52:2;45:3;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2274:103:15;;;;;;;;;;;;1416:23:4;;;;;;;;;;;;1268:449:10;;;;;;;;;;;;2166:412;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2166:412:10;;-1:-1:-1;;2166:412:10;;;-1:-1:-1;2166:412:10;;-1:-1:-1;;;2166:412:10;1240:92:1;;;;;;;;;;;;;;2160:108:15;;;;;;;;;;;;1387:23:4;;;;;;;;;;;;1561:84:0;;;;;;;;;;;;1125:109:1;;;;;;;;;;;;;;1363:91:0;;;;;;;;;;-1:-1:-1;;;;;1363:91:0;;;;;1338:96:1;;;;;;;;;;;;;;238:20:21;;;;;;;;;;;;2656:120:4;;;;;;;;;;;;;;1355:84:16;;;;;;;;;;;;1540:92;;;;;;;;;;;;1542:100:5;;;;;;;;;;;;;;;;;;;;;;;;;;;1720:112:15;;;;;;;;;;;;3210:318:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3210:318:4;;-1:-1:-1;;3210:318:4;;;-1:-1:-1;3210:318:4;;-1:-1:-1;;;3210:318:4;1739:91:5;;;;;;;;;;-1:-1:-1;;;;;1739:91:5;;;;;1304:113;;;;;;;;;;-1:-1:-1;;;;;1304:113:5;;;;;2488:98:4;;;;;;;;;;;;1772:323:10;;;;;;;;;;;;827:169:21;;;;;;;;;;-1:-1:-1;;;;;827:169:21;;;;;1445:89:16;;;;;;;;;;;;1648:85:5;;;;;;;;;;-1:-1:-1;;;;;1648:85:5;;;;;1423:113;;;;;;;;;;;;;;2006:148:15;1529:10;:8;:10::i;:::-;1528:11;:54;;;;-1:-1:-1;1560:22:15;1543:13;;;;;;;;;:39;;;;;;;;1528:54;1520:63;;;;;;;;1168:19:0;1176:10;1168:7;:19::i;:::-;1160:28;;;;;;;;2066:13:15;:11;:13::i;:::-;2058:22;;;;;;;;2090:13;:36;;-1:-1:-1;;2090:36:15;;;;;2136:11;;;;;;;;;;2006:148::o;1674:22:4:-;;;-1:-1:-1;;;;;1674:22:4;;:::o;1836:109:5:-;1894:4;1917:18;;:9;1936:1;1894:4;1917:21;;;;;;;-1:-1:-1;;;1917:21:5;;;;;;;;;;;;;-1:-1:-1;;;;;1917:21:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1836:109;-1:-1:-1;;;1836:109:5:o;1460:95:0:-;647:5:21;;633:10;-1:-1:-1;;;;;633:19:21;;;647:5;;633:19;625:28;;;;;;-1:-1:-1;;;;;1522:18:0;1543:5;1522:18;;;:12;:18;;;;;:26;;-1:-1:-1;;1522:26:0;;;1460:95::o;1212:145::-;1268:4;-1:-1:-1;;;;;1291:18:0;;;;;;:59;;-1:-1:-1;1322:5:0;;-1:-1:-1;;;;;1314:13:0;;;1322:5;;1314:13;;:35;;-1:-1:-1;;;;;;1331:18:0;;;;;;:12;:18;;;;;;;;1314:35;1284:66;1212:145;-1:-1:-1;;1212:145:0:o;1326:59:15:-;;;;;;;;;:::o;1557:40:4:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2274:103:15:-;1168:19:0;1176:10;1168:7;:19::i;:::-;1160:28;;;;;;;;2330:21:15;2314:37;;-1:-1:-1;;2314:37:15;;;;;2361:9;;;;;;;;;;2274:103::o;1416:23:4:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1268:449:10;1317:4;;1398:292;1420:14;;:9;:16;;;;;;;;-1:-1:-1;;;1420:16:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1418:1;:18;1398:292;;;1475:15;;:9;1491:1;1475:18;;;;;;;;-1:-1:-1;;;1475:18:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1462:43:10;;1506:4;1462:49;;;;;;;;-1:-1:-1;;;1462:49:10;;;;;;-1:-1:-1;;;;;1462:49:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1461:50;1457:101;;;1538:5;1531:12;;;;1457:101;1591:8;;-1:-1:-1;;;;;1591:8:10;1576:37;1614:15;;:9;1630:1;1591:8;1614:18;;;;;;;-1:-1:-1;;;1614:18:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1576:57;;;;;;;;-1:-1:-1;;;1576:57:10;;;;;;-1:-1:-1;;;;;1576:57:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1575:58;1571:109;;;1660:5;1653:12;;;;1571:109;1438:3;;1398:292;;;1706:4;1699:11;;1268:449;;;:::o;2166:412::-;2458:9;1644:10:15;:8;:10::i;:::-;1643:11;:52;;;;-1:-1:-1;1675:20:15;1658:13;;;;;;;;;:37;;;;;;;;1643:52;1635:61;;;;;;;;2305:6:10;2201:18:4;;:9;2305:6:10;2201:26:4;;;;;;;;-1:-1:-1;;;2201:26:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2200:27;;-1:-1:-1;2192:36:4;;;;;;1979:7;;1965:10;-1:-1:-1;;;;;1965:21:4;;;1979:7;;1965:21;1957:30;;;;;;2339:103:10;2367:6;2387:4;2405:10;2429:3;2339:14;:103::i;:::-;2470:1;2458:13;;2453:119;2475:14;;:9;:16;;;;;;;;-1:-1:-1;;;2475:16:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2473:1;:18;2453:119;;;2525:15;;:9;2541:1;2525:18;;;;;;;;-1:-1:-1;;;2525:18:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2512:41:10;;2554:6;2512:49;;-1:-1:-1;;;2512:49:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2493:3:10;;;;;-1:-1:-1;2453:119:10;;;1706:1:15;2166:412:10;;;;;:::o;1240:92:1:-;1168:19:0;1176:10;1168:7;:19::i;:::-;1160:28;;;;;;;;1301:17:1;;;;:10;:17;;;;;:24;;-1:-1:-1;;1301:24:1;1321:4;1301:24;;;1240:92::o;2160:108:15:-;1644:10;:8;:10::i;:::-;1643:11;:52;;;;-1:-1:-1;1675:20:15;1658:13;;;;;;;;;:37;;;;;;;;1643:52;1635:61;;;;;;;;1168:19:0;1176:10;1168:7;:19::i;:::-;1160:28;;;;;;;;2207:13:15;:36;;-1:-1:-1;;2207:36:15;;;;;2253:8;;;;;;;;;;2160:108::o;1387:23:4:-;;;-1:-1:-1;;;;;1387:23:4;;:::o;1561:84:0:-;1168:19;1176:10;1168:7;:19::i;:::-;1160:28;;;;;;;;-1:-1:-1;;;;;1619:10:0;1606:24;1633:5;1606:24;;;:12;:24;;;;;:32;;-1:-1:-1;;1606:32:0;;;1561:84::o;1125:109:1:-;1187:4;1210:17;;;:10;:17;;;;;;;;;1125:109::o;1363:91:0:-;647:5:21;;633:10;-1:-1:-1;;;;;633:19:21;;;647:5;;633:19;625:28;;;;;;-1:-1:-1;;;;;1422:18:0;;;;;1443:4;1422:18;;;;;;;;:25;;-1:-1:-1;;1422:25:0;;;;;;1363:91::o;1338:96:1:-;1168:19:0;1176:10;1168:7;:19::i;:::-;1160:28;;;;;;;;1422:5:1;1402:17;;;:10;:17;;;;;:25;;-1:-1:-1;;1402:25:1;;;1338:96::o;238:20:21:-;;;-1:-1:-1;;;;;238:20:21;;:::o;2656:120:4:-;2715:6;;:::i;:::-;2740:5;:29;2746:15;;:9;2762:5;2740:29;2746:22;;;;;;;-1:-1:-1;;;2746:22:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2740:29;;;;;;;;;;;;;;;;;2733:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2656:120;;;:::o;1355:84:16:-;1423:9;;;;1355:84;;:::o;1540:92::-;1168:19:0;1176:10;1168:7;:19::i;:::-;1160:28;;;;;;;;1248:9:16;;;;1240:18;;;;;;;;1588:9;:17;;-1:-1:-1;;1588:17:16;;;1615:10;;;;;;;;;;1540:92::o;1542:100:5:-;1593:7;1619:14;;:9;1593:7;1619:16;;;;;;;-1:-1:-1;;;1619:16:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1542:100:5;:::o;1720:112:15:-;1765:4;1805:20;1788:13;;;;;;;;;:37;;;;;;;;1781:44;;1720:112;:::o;3210:318:4:-;1644:10:15;:8;:10::i;:::-;1643:11;:52;;;;-1:-1:-1;1675:20:15;1658:13;;;;;;;;;:37;;;;;;;;1643:52;1635:61;;;;;;;;1979:7:4;;1965:10;-1:-1:-1;;;;;1965:21:4;;;1979:7;;1965:21;1957:30;;;;;;2371:8;;-1:-1:-1;;;;;2371:8:4;2358:39;2371:8;2358:41;;;;;;;;;;-1:-1:-1;;;2358:41:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2350:50;;;;;;;;2068:11;;;;:6;:11;;;;;;3381:3;;2068:11;;2067:12;2059:21;;;;;;3408:18;;:9;3427:6;3408:26;;;;;;;;-1:-1:-1;;;3408:26:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3400:35;;;;;;;;3445:11;;;;:6;:11;;;;;;;;:18;;-1:-1:-1;;3445:18:4;3459:4;3445:18;;;3473:13;;;:5;:13;;;;;3489:4;;3473:20;;;;;;;;:::i;:::-;;3503:18;3514:6;3503:18;;;;;;;;;;;;;;2410:1;3210:318;;;;:::o;1739:91:5:-;1529:10:15;:8;:10::i;:::-;1528:11;:54;;;;-1:-1:-1;1560:22:15;1543:13;;;;;;;;;:39;;;;;;;;1528:54;1520:63;;;;;;;;1168:19:0;1176:10;1168:7;:19::i;:::-;1160:28;;;;;;;;1804:16:5;;:9;1821:1;1804:19;;-1:-1:-1;;;1804:19:5;;;;;;;;;;;;;-1:-1:-1;;;;;1804:19:5;;;;;;;-1:-1:-1;1804:19:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1739:91;:::o;1304:113::-;1364:7;1390:17;;:9;1408:1;1364:7;1390:20;;;;;;;-1:-1:-1;;;1390:20:5;;;;;;;;;;;;;-1:-1:-1;;;;;1390:20:5;;;;;;;;;;;;;;;;;;;;;;;;2488:98:4;2537:7;2563:14;;:9;2537:7;2563:16;;;;;;;-1:-1:-1;;;2563:16:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1772:323:10;1820:4;1864:14;;:9;1820:4;1864:16;;;;;;;-1:-1:-1;;;1864:16:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:21;1859:65;;-1:-1:-1;1859:65:10;;-1:-1:-1;1908:5:10;1901:12;;1859:65;1992:8;;-1:-1:-1;;;;;1992:8:10;1977:35;2013:4;1992:8;1977:41;;;;;;;-1:-1:-1;;;1977:41:10;;;;;;-1:-1:-1;;;;;1977:41:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1976:42;1972:85;;;-1:-1:-1;2041:5:10;2034:12;;1972:85;2074:14;:12;:14::i;:::-;2067:21;;1772:323;:::o;827:169:21:-;647:5;;633:10;-1:-1:-1;;;;;633:19:21;;;647:5;;633:19;625:28;;;;;;-1:-1:-1;;;;;903:22:21;;;;895:31;;;;;;953:5;;-1:-1:-1;;;;;932:37:21;;;;953:5;932:37;;;;;;;;;;975:5;:16;;-1:-1:-1;;975:16:21;-1:-1:-1;;;;;975:16:21;;;;;;;;;;827:169::o;1445:89:16:-;1168:19:0;1176:10;1168:7;:19::i;:::-;1160:28;;;;;;;;1321:9:16;;;;1320:10;1312:19;;;;;;1493:9;:16;;-1:-1:-1;;1493:16:16;1505:4;1493:16;;;1519:8;;;;;;;;;;1445:89::o;1648:85:5:-;1529:10:15;:8;:10::i;:::-;1528:11;:54;;;;-1:-1:-1;1560:22:15;1543:13;;;;;;;;;:39;;;;;;;;1528:54;1520:63;;;;;;;;1168:19:0;1176:10;1168:7;:19::i;:::-;1160:28;;;;;;;;1710:13:5;;:9;1724:1;1710:16;;-1:-1:-1;;;1710:16:5;;;;;;;;;;;;;-1:-1:-1;;;;;1710:16:5;;;;;;;-1:-1:-1;1710:16:5;;;;;;;;;;;;;;;;1423:113;1481:7;1507:15;;:9;1523:5;1481:7;1507:22;;;;;;;-1:-1:-1;;;1507:22:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2800:347:4;1644:10:15;:8;:10::i;:::-;1643:11;:52;;;;-1:-1:-1;1675:20:15;1658:13;;;;;;;;;:37;;;;;;;;1643:52;1635:61;;;;;;;;1979:7:4;;1965:10;-1:-1:-1;;;;;1965:21:4;;;1979:7;;1965:21;1957:30;;;;;;2951:6;2201:18;;:9;2951:6;2201:26;;;;;;;;-1:-1:-1;;;2201:26:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2200:27;;-1:-1:-1;2192:36:4;;;;;;2068:11;;;;:6;:11;;;;;;2975:3;;2068:11;;2067:12;2059:21;;;;;;2994:11;;;;:6;:11;;;;;;;:18;;-1:-1:-1;;2994:18:4;3008:4;2994:18;;;3022:13;;;;:9;;3036:6;;3022:21;-1:-1:-1;;;3022:21:4;;;;;;;;;;;;;;;;;;;-1:-1:-1;3022:21:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3053:13:4;;;;:5;:13;;;;;3069:4;;3053:20;;;;;;;;:::i;:::-;-1:-1:-1;3096:8:4;;-1:-1:-1;;;;;3096:8:4;3083:33;:35;;;;;-1:-1:-1;;;3083:35:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3128:12;3133:6;3128:12;;;;;;;;;;;;;;2238:1;1997;2800:347;;;;:::o;1111:1470:10:-;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1111:1470:10;;;;-1:-1:-1;1111:1470:10;;;;;;;;;;;;;;",
  "source": "// ------------------------------------------------------------------------------\n// This file is part of netvote.\n//\n// netvote is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// netvote is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with solidity.  If not, see <http://www.gnu.org/licenses/>\n//\n// (c) 2017 netvote contributors.\n//------------------------------------------------------------------------------\n\npragma solidity ^0.4.17;\n\nimport \"../BasePool.sol\";\nimport \"./TieredBallot.sol\";\nimport \"./TieredElection.sol\";\n\n\n/**\n * @title TieredPool\n * @dev This allows a particular group over voters to collect votes for a set\n * of mapped ballots.\n */\ncontract TieredPool is BasePool {\n\n    function TieredPool(bytes32 hashedUserId, address el, address gw) BasePool(hashedUserId, el, gw) public {\n\n    }\n\n    function checkBallots() public constant returns (bool) {\n        //all ballots include pool, and election includes ballot\n        for (uint256 i = 0; i<ballotSet.size(); i++) {\n            if (!TieredBallot(ballotSet.getAt(i)).poolExists(this)) {\n                return false;\n            }\n            if (!TieredElection(election).ballotExists(ballotSet.getAt(i))) {\n                return false;\n            }\n        }\n        return true;\n    }\n\n    // returns true if pool can vote on election\n    function checkConfig() public constant returns (bool) {\n        // has ballots\n        if ( ballotSet.size() == 0) {\n            return false;\n        }\n        // election includes this pool\n        if (!TieredElection(election).poolExists(this)) {\n            return false;\n        }\n\n        return checkBallots();\n    }\n\n    // for each ballot, cast vote for sender, store vote to pool\n    function castVote(\n        bytes32 voteId,\n        string vote,\n        string passphrase,\n        bytes32 jti) public voting notDuplicate(voteId) onlyGateway\n    {\n        super.castVote(\n            voteId,\n            vote,\n            passphrase,\n            jti\n        );\n\n        for (uint256 i = 0; i<ballotSet.size(); i++) {\n            TieredBallot(ballotSet.getAt(i)).castVote(voteId);\n        }\n    }\n\n}",
  "sourcePath": "/Users/slanders/netvote/elections-solidity/contracts/elections/tiered/TieredPool.sol",
  "ast": {
    "attributes": {
      "absolutePath": "/Users/slanders/netvote/elections-solidity/contracts/elections/tiered/TieredPool.sol",
      "exportedSymbols": {
        "TieredPool": [
          1480
        ]
      }
    },
    "children": [
      {
        "attributes": {
          "literals": [
            "solidity",
            "^",
            "0.4",
            ".17"
          ]
        },
        "id": 1328,
        "name": "PragmaDirective",
        "src": "868:24:10"
      },
      {
        "attributes": {
          "SourceUnit": 615,
          "absolutePath": "/Users/slanders/netvote/elections-solidity/contracts/elections/BasePool.sol",
          "file": "../BasePool.sol",
          "scope": 1481,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 1329,
        "name": "ImportDirective",
        "src": "894:25:10"
      },
      {
        "attributes": {
          "SourceUnit": 1259,
          "absolutePath": "/Users/slanders/netvote/elections-solidity/contracts/elections/tiered/TieredBallot.sol",
          "file": "./TieredBallot.sol",
          "scope": 1481,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 1330,
        "name": "ImportDirective",
        "src": "920:28:10"
      },
      {
        "attributes": {
          "SourceUnit": 1327,
          "absolutePath": "/Users/slanders/netvote/elections-solidity/contracts/elections/tiered/TieredElection.sol",
          "file": "./TieredElection.sol",
          "scope": 1481,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 1331,
        "name": "ImportDirective",
        "src": "949:30:10"
      },
      {
        "attributes": {
          "contractDependencies": [
            84,
            134,
            614,
            707,
            2129,
            2197,
            2703
          ],
          "contractKind": "contract",
          "documentation": "@title TieredPool\n@dev This allows a particular group over voters to collect votes for a set\nof mapped ballots.",
          "fullyImplemented": true,
          "linearizedBaseContracts": [
            1480,
            614,
            707,
            2129,
            2197,
            134,
            84,
            2703
          ],
          "name": "TieredPool",
          "scope": 1481
        },
        "children": [
          {
            "attributes": {
              "arguments": [
                null
              ]
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "BasePool",
                  "referencedDeclaration": 614,
                  "type": "contract BasePool"
                },
                "id": 1332,
                "name": "UserDefinedTypeName",
                "src": "1134:8:10"
              }
            ],
            "id": 1333,
            "name": "InheritanceSpecifier",
            "src": "1134:8:10"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": true,
              "name": "TieredPool",
              "payable": false,
              "scope": 1480,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "hashedUserId",
                      "scope": 1348,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 1334,
                        "name": "ElementaryTypeName",
                        "src": "1170:7:10"
                      }
                    ],
                    "id": 1335,
                    "name": "VariableDeclaration",
                    "src": "1170:20:10"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "el",
                      "scope": 1348,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 1336,
                        "name": "ElementaryTypeName",
                        "src": "1192:7:10"
                      }
                    ],
                    "id": 1337,
                    "name": "VariableDeclaration",
                    "src": "1192:10:10"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "gw",
                      "scope": 1348,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 1338,
                        "name": "ElementaryTypeName",
                        "src": "1204:7:10"
                      }
                    ],
                    "id": 1339,
                    "name": "VariableDeclaration",
                    "src": "1204:10:10"
                  }
                ],
                "id": 1340,
                "name": "ParameterList",
                "src": "1169:46:10"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 1346,
                "name": "ParameterList",
                "src": "1254:0:10"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 614,
                      "type": "type(contract BasePool)",
                      "value": "BasePool"
                    },
                    "id": 1341,
                    "name": "Identifier",
                    "src": "1216:8:10"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 1335,
                      "type": "bytes32",
                      "value": "hashedUserId"
                    },
                    "id": 1342,
                    "name": "Identifier",
                    "src": "1225:12:10"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 1337,
                      "type": "address",
                      "value": "el"
                    },
                    "id": 1343,
                    "name": "Identifier",
                    "src": "1239:2:10"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 1339,
                      "type": "address",
                      "value": "gw"
                    },
                    "id": 1344,
                    "name": "Identifier",
                    "src": "1243:2:10"
                  }
                ],
                "id": 1345,
                "name": "ModifierInvocation",
                "src": "1216:30:10"
              },
              {
                "attributes": {
                  "statements": [
                    null
                  ]
                },
                "children": [],
                "id": 1347,
                "name": "Block",
                "src": "1254:8:10"
              }
            ],
            "id": 1348,
            "name": "FunctionDefinition",
            "src": "1150:112:10"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "checkBallots",
              "payable": false,
              "scope": 1480,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 1349,
                "name": "ParameterList",
                "src": "1289:2:10"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 1398,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 1350,
                        "name": "ElementaryTypeName",
                        "src": "1317:4:10"
                      }
                    ],
                    "id": 1351,
                    "name": "VariableDeclaration",
                    "src": "1317:4:10"
                  }
                ],
                "id": 1352,
                "name": "ParameterList",
                "src": "1316:6:10"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "assignments": [
                            1354
                          ]
                        },
                        "children": [
                          {
                            "attributes": {
                              "constant": false,
                              "name": "i",
                              "scope": 1398,
                              "stateVariable": false,
                              "storageLocation": "default",
                              "type": "uint256",
                              "value": null,
                              "visibility": "internal"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "name": "uint256",
                                  "type": "uint256"
                                },
                                "id": 1353,
                                "name": "ElementaryTypeName",
                                "src": "1403:7:10"
                              }
                            ],
                            "id": 1354,
                            "name": "VariableDeclaration",
                            "src": "1403:9:10"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 1355,
                            "name": "Literal",
                            "src": "1415:1:10"
                          }
                        ],
                        "id": 1356,
                        "name": "VariableDeclarationStatement",
                        "src": "1403:13:10"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "<",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1354,
                              "type": "uint256",
                              "value": "i"
                            },
                            "id": 1357,
                            "name": "Identifier",
                            "src": "1418:1:10"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "arguments": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "uint256",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "size",
                                  "referencedDeclaration": 1613,
                                  "type": "function (struct AddressSet.SetData storage pointer) view returns (uint256)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 625,
                                      "type": "struct AddressSet.SetData storage ref",
                                      "value": "ballotSet"
                                    },
                                    "id": 1358,
                                    "name": "Identifier",
                                    "src": "1420:9:10"
                                  }
                                ],
                                "id": 1359,
                                "name": "MemberAccess",
                                "src": "1420:14:10"
                              }
                            ],
                            "id": 1360,
                            "name": "FunctionCall",
                            "src": "1420:16:10"
                          }
                        ],
                        "id": 1361,
                        "name": "BinaryOperation",
                        "src": "1418:18:10"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "++",
                              "prefix": false,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1354,
                                  "type": "uint256",
                                  "value": "i"
                                },
                                "id": 1362,
                                "name": "Identifier",
                                "src": "1438:1:10"
                              }
                            ],
                            "id": 1363,
                            "name": "UnaryOperation",
                            "src": "1438:3:10"
                          }
                        ],
                        "id": 1364,
                        "name": "ExpressionStatement",
                        "src": "1438:3:10"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "falseBody": null
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "!",
                                  "prefix": true,
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "type": "bool",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_contract$_TieredPool_$1480",
                                              "typeString": "contract TieredPool"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "poolExists",
                                          "referencedDeclaration": 799,
                                          "type": "function (address) view external returns (bool)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "isStructConstructorCall": false,
                                              "lValueRequested": false,
                                              "names": [
                                                null
                                              ],
                                              "type": "contract TieredBallot",
                                              "type_conversion": true
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_address",
                                                      "typeString": "address"
                                                    }
                                                  ],
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 1258,
                                                  "type": "type(contract TieredBallot)",
                                                  "value": "TieredBallot"
                                                },
                                                "id": 1365,
                                                "name": "Identifier",
                                                "src": "1462:12:10"
                                              },
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "isStructConstructorCall": false,
                                                  "lValueRequested": false,
                                                  "names": [
                                                    null
                                                  ],
                                                  "type": "address",
                                                  "type_conversion": false
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": [
                                                        {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      ],
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "member_name": "getAt",
                                                      "referencedDeclaration": 1586,
                                                      "type": "function (struct AddressSet.SetData storage pointer,uint256) view returns (address)"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "argumentTypes": null,
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 625,
                                                          "type": "struct AddressSet.SetData storage ref",
                                                          "value": "ballotSet"
                                                        },
                                                        "id": 1366,
                                                        "name": "Identifier",
                                                        "src": "1475:9:10"
                                                      }
                                                    ],
                                                    "id": 1367,
                                                    "name": "MemberAccess",
                                                    "src": "1475:15:10"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 1354,
                                                      "type": "uint256",
                                                      "value": "i"
                                                    },
                                                    "id": 1368,
                                                    "name": "Identifier",
                                                    "src": "1491:1:10"
                                                  }
                                                ],
                                                "id": 1369,
                                                "name": "FunctionCall",
                                                "src": "1475:18:10"
                                              }
                                            ],
                                            "id": 1370,
                                            "name": "FunctionCall",
                                            "src": "1462:32:10"
                                          }
                                        ],
                                        "id": 1371,
                                        "name": "MemberAccess",
                                        "src": "1462:43:10"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 3301,
                                          "type": "contract TieredPool",
                                          "value": "this"
                                        },
                                        "id": 1372,
                                        "name": "Identifier",
                                        "src": "1506:4:10"
                                      }
                                    ],
                                    "id": 1373,
                                    "name": "FunctionCall",
                                    "src": "1462:49:10"
                                  }
                                ],
                                "id": 1374,
                                "name": "UnaryOperation",
                                "src": "1461:50:10"
                              },
                              {
                                "children": [
                                  {
                                    "attributes": {
                                      "functionReturnParameters": 1352
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "66616c7365",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "bool",
                                          "type": "bool",
                                          "value": "false"
                                        },
                                        "id": 1375,
                                        "name": "Literal",
                                        "src": "1538:5:10"
                                      }
                                    ],
                                    "id": 1376,
                                    "name": "Return",
                                    "src": "1531:12:10"
                                  }
                                ],
                                "id": 1377,
                                "name": "Block",
                                "src": "1513:45:10"
                              }
                            ],
                            "id": 1378,
                            "name": "IfStatement",
                            "src": "1457:101:10"
                          },
                          {
                            "attributes": {
                              "falseBody": null
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "!",
                                  "prefix": true,
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "type": "bool",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "ballotExists",
                                          "referencedDeclaration": 706,
                                          "type": "function (address) view external returns (bool)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "isStructConstructorCall": false,
                                              "lValueRequested": false,
                                              "names": [
                                                null
                                              ],
                                              "type": "contract TieredElection",
                                              "type_conversion": true
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_address",
                                                      "typeString": "address"
                                                    }
                                                  ],
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 1326,
                                                  "type": "type(contract TieredElection)",
                                                  "value": "TieredElection"
                                                },
                                                "id": 1379,
                                                "name": "Identifier",
                                                "src": "1576:14:10"
                                              },
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 388,
                                                  "type": "address",
                                                  "value": "election"
                                                },
                                                "id": 1380,
                                                "name": "Identifier",
                                                "src": "1591:8:10"
                                              }
                                            ],
                                            "id": 1381,
                                            "name": "FunctionCall",
                                            "src": "1576:24:10"
                                          }
                                        ],
                                        "id": 1382,
                                        "name": "MemberAccess",
                                        "src": "1576:37:10"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "isStructConstructorCall": false,
                                          "lValueRequested": false,
                                          "names": [
                                            null
                                          ],
                                          "type": "address",
                                          "type_conversion": false
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "getAt",
                                              "referencedDeclaration": 1586,
                                              "type": "function (struct AddressSet.SetData storage pointer,uint256) view returns (address)"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 625,
                                                  "type": "struct AddressSet.SetData storage ref",
                                                  "value": "ballotSet"
                                                },
                                                "id": 1383,
                                                "name": "Identifier",
                                                "src": "1614:9:10"
                                              }
                                            ],
                                            "id": 1384,
                                            "name": "MemberAccess",
                                            "src": "1614:15:10"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1354,
                                              "type": "uint256",
                                              "value": "i"
                                            },
                                            "id": 1385,
                                            "name": "Identifier",
                                            "src": "1630:1:10"
                                          }
                                        ],
                                        "id": 1386,
                                        "name": "FunctionCall",
                                        "src": "1614:18:10"
                                      }
                                    ],
                                    "id": 1387,
                                    "name": "FunctionCall",
                                    "src": "1576:57:10"
                                  }
                                ],
                                "id": 1388,
                                "name": "UnaryOperation",
                                "src": "1575:58:10"
                              },
                              {
                                "children": [
                                  {
                                    "attributes": {
                                      "functionReturnParameters": 1352
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "66616c7365",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "bool",
                                          "type": "bool",
                                          "value": "false"
                                        },
                                        "id": 1389,
                                        "name": "Literal",
                                        "src": "1660:5:10"
                                      }
                                    ],
                                    "id": 1390,
                                    "name": "Return",
                                    "src": "1653:12:10"
                                  }
                                ],
                                "id": 1391,
                                "name": "Block",
                                "src": "1635:45:10"
                              }
                            ],
                            "id": 1392,
                            "name": "IfStatement",
                            "src": "1571:109:10"
                          }
                        ],
                        "id": 1393,
                        "name": "Block",
                        "src": "1443:247:10"
                      }
                    ],
                    "id": 1394,
                    "name": "ForStatement",
                    "src": "1398:292:10"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 1352
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "hexvalue": "74727565",
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "subdenomination": null,
                          "token": "bool",
                          "type": "bool",
                          "value": "true"
                        },
                        "id": 1395,
                        "name": "Literal",
                        "src": "1706:4:10"
                      }
                    ],
                    "id": 1396,
                    "name": "Return",
                    "src": "1699:11:10"
                  }
                ],
                "id": 1397,
                "name": "Block",
                "src": "1323:394:10"
              }
            ],
            "id": 1398,
            "name": "FunctionDefinition",
            "src": "1268:449:10"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "checkConfig",
              "payable": false,
              "scope": 1480,
              "stateMutability": "view",
              "superFunction": 2077,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 1399,
                "name": "ParameterList",
                "src": "1792:2:10"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 1427,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 1400,
                        "name": "ElementaryTypeName",
                        "src": "1820:4:10"
                      }
                    ],
                    "id": 1401,
                    "name": "VariableDeclaration",
                    "src": "1820:4:10"
                  }
                ],
                "id": 1402,
                "name": "ParameterList",
                "src": "1819:6:10"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "==",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "arguments": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "uint256",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "size",
                                  "referencedDeclaration": 1613,
                                  "type": "function (struct AddressSet.SetData storage pointer) view returns (uint256)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 625,
                                      "type": "struct AddressSet.SetData storage ref",
                                      "value": "ballotSet"
                                    },
                                    "id": 1403,
                                    "name": "Identifier",
                                    "src": "1864:9:10"
                                  }
                                ],
                                "id": 1404,
                                "name": "MemberAccess",
                                "src": "1864:14:10"
                              }
                            ],
                            "id": 1405,
                            "name": "FunctionCall",
                            "src": "1864:16:10"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 1406,
                            "name": "Literal",
                            "src": "1884:1:10"
                          }
                        ],
                        "id": 1407,
                        "name": "BinaryOperation",
                        "src": "1864:21:10"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "functionReturnParameters": 1402
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "66616c7365",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "bool",
                                  "type": "bool",
                                  "value": "false"
                                },
                                "id": 1408,
                                "name": "Literal",
                                "src": "1908:5:10"
                              }
                            ],
                            "id": 1409,
                            "name": "Return",
                            "src": "1901:12:10"
                          }
                        ],
                        "id": 1410,
                        "name": "Block",
                        "src": "1887:37:10"
                      }
                    ],
                    "id": 1411,
                    "name": "IfStatement",
                    "src": "1859:65:10"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "!",
                          "prefix": true,
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bool",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_TieredPool_$1480",
                                      "typeString": "contract TieredPool"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "poolExists",
                                  "referencedDeclaration": 799,
                                  "type": "function (address) view external returns (bool)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "type": "contract TieredElection",
                                      "type_conversion": true
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1326,
                                          "type": "type(contract TieredElection)",
                                          "value": "TieredElection"
                                        },
                                        "id": 1412,
                                        "name": "Identifier",
                                        "src": "1977:14:10"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 388,
                                          "type": "address",
                                          "value": "election"
                                        },
                                        "id": 1413,
                                        "name": "Identifier",
                                        "src": "1992:8:10"
                                      }
                                    ],
                                    "id": 1414,
                                    "name": "FunctionCall",
                                    "src": "1977:24:10"
                                  }
                                ],
                                "id": 1415,
                                "name": "MemberAccess",
                                "src": "1977:35:10"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3301,
                                  "type": "contract TieredPool",
                                  "value": "this"
                                },
                                "id": 1416,
                                "name": "Identifier",
                                "src": "2013:4:10"
                              }
                            ],
                            "id": 1417,
                            "name": "FunctionCall",
                            "src": "1977:41:10"
                          }
                        ],
                        "id": 1418,
                        "name": "UnaryOperation",
                        "src": "1976:42:10"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "functionReturnParameters": 1402
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "66616c7365",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "bool",
                                  "type": "bool",
                                  "value": "false"
                                },
                                "id": 1419,
                                "name": "Literal",
                                "src": "2041:5:10"
                              }
                            ],
                            "id": 1420,
                            "name": "Return",
                            "src": "2034:12:10"
                          }
                        ],
                        "id": 1421,
                        "name": "Block",
                        "src": "2020:37:10"
                      }
                    ],
                    "id": 1422,
                    "name": "IfStatement",
                    "src": "1972:85:10"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 1402
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bool",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1398,
                              "type": "function () view returns (bool)",
                              "value": "checkBallots"
                            },
                            "id": 1423,
                            "name": "Identifier",
                            "src": "2074:12:10"
                          }
                        ],
                        "id": 1424,
                        "name": "FunctionCall",
                        "src": "2074:14:10"
                      }
                    ],
                    "id": 1425,
                    "name": "Return",
                    "src": "2067:21:10"
                  }
                ],
                "id": 1426,
                "name": "Block",
                "src": "1826:269:10"
              }
            ],
            "id": 1427,
            "name": "FunctionDefinition",
            "src": "1772:323:10"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "name": "castVote",
              "payable": false,
              "scope": 1480,
              "stateMutability": "nonpayable",
              "superFunction": 569,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "voteId",
                      "scope": 1479,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 1428,
                        "name": "ElementaryTypeName",
                        "src": "2193:7:10"
                      }
                    ],
                    "id": 1429,
                    "name": "VariableDeclaration",
                    "src": "2193:14:10"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "vote",
                      "scope": 1479,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "string memory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "string",
                          "type": "string storage pointer"
                        },
                        "id": 1430,
                        "name": "ElementaryTypeName",
                        "src": "2217:6:10"
                      }
                    ],
                    "id": 1431,
                    "name": "VariableDeclaration",
                    "src": "2217:11:10"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "passphrase",
                      "scope": 1479,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "string memory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "string",
                          "type": "string storage pointer"
                        },
                        "id": 1432,
                        "name": "ElementaryTypeName",
                        "src": "2238:6:10"
                      }
                    ],
                    "id": 1433,
                    "name": "VariableDeclaration",
                    "src": "2238:17:10"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "jti",
                      "scope": 1479,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 1434,
                        "name": "ElementaryTypeName",
                        "src": "2265:7:10"
                      }
                    ],
                    "id": 1435,
                    "name": "VariableDeclaration",
                    "src": "2265:11:10"
                  }
                ],
                "id": 1436,
                "name": "ParameterList",
                "src": "2183:94:10"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 1444,
                "name": "ParameterList",
                "src": "2329:0:10"
              },
              {
                "attributes": {
                  "arguments": [
                    null
                  ]
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 2058,
                      "type": "modifier ()",
                      "value": "voting"
                    },
                    "id": 1437,
                    "name": "Identifier",
                    "src": "2285:6:10"
                  }
                ],
                "id": 1438,
                "name": "ModifierInvocation",
                "src": "2285:6:10"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 482,
                      "type": "modifier (bytes32)",
                      "value": "notDuplicate"
                    },
                    "id": 1439,
                    "name": "Identifier",
                    "src": "2292:12:10"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 1429,
                      "type": "bytes32",
                      "value": "voteId"
                    },
                    "id": 1440,
                    "name": "Identifier",
                    "src": "2305:6:10"
                  }
                ],
                "id": 1441,
                "name": "ModifierInvocation",
                "src": "2292:20:10"
              },
              {
                "attributes": {
                  "arguments": [
                    null
                  ]
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 455,
                      "type": "modifier ()",
                      "value": "onlyGateway"
                    },
                    "id": 1442,
                    "name": "Identifier",
                    "src": "2313:11:10"
                  }
                ],
                "id": 1443,
                "name": "ModifierInvocation",
                "src": "2313:11:10"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                },
                                {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "castVote",
                              "referencedDeclaration": 569,
                              "type": "function (bytes32,string memory,string memory,bytes32)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3302,
                                  "type": "contract super TieredPool",
                                  "value": "super"
                                },
                                "id": 1445,
                                "name": "Identifier",
                                "src": "2339:5:10"
                              }
                            ],
                            "id": 1447,
                            "name": "MemberAccess",
                            "src": "2339:14:10"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1429,
                              "type": "bytes32",
                              "value": "voteId"
                            },
                            "id": 1448,
                            "name": "Identifier",
                            "src": "2367:6:10"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1431,
                              "type": "string memory",
                              "value": "vote"
                            },
                            "id": 1449,
                            "name": "Identifier",
                            "src": "2387:4:10"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1433,
                              "type": "string memory",
                              "value": "passphrase"
                            },
                            "id": 1450,
                            "name": "Identifier",
                            "src": "2405:10:10"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1435,
                              "type": "bytes32",
                              "value": "jti"
                            },
                            "id": 1451,
                            "name": "Identifier",
                            "src": "2429:3:10"
                          }
                        ],
                        "id": 1452,
                        "name": "FunctionCall",
                        "src": "2339:103:10"
                      }
                    ],
                    "id": 1453,
                    "name": "ExpressionStatement",
                    "src": "2339:103:10"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "assignments": [
                            1455
                          ]
                        },
                        "children": [
                          {
                            "attributes": {
                              "constant": false,
                              "name": "i",
                              "scope": 1479,
                              "stateVariable": false,
                              "storageLocation": "default",
                              "type": "uint256",
                              "value": null,
                              "visibility": "internal"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "name": "uint256",
                                  "type": "uint256"
                                },
                                "id": 1454,
                                "name": "ElementaryTypeName",
                                "src": "2458:7:10"
                              }
                            ],
                            "id": 1455,
                            "name": "VariableDeclaration",
                            "src": "2458:9:10"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 1456,
                            "name": "Literal",
                            "src": "2470:1:10"
                          }
                        ],
                        "id": 1457,
                        "name": "VariableDeclarationStatement",
                        "src": "2458:13:10"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "<",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1455,
                              "type": "uint256",
                              "value": "i"
                            },
                            "id": 1458,
                            "name": "Identifier",
                            "src": "2473:1:10"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "arguments": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "uint256",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "size",
                                  "referencedDeclaration": 1613,
                                  "type": "function (struct AddressSet.SetData storage pointer) view returns (uint256)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 625,
                                      "type": "struct AddressSet.SetData storage ref",
                                      "value": "ballotSet"
                                    },
                                    "id": 1459,
                                    "name": "Identifier",
                                    "src": "2475:9:10"
                                  }
                                ],
                                "id": 1460,
                                "name": "MemberAccess",
                                "src": "2475:14:10"
                              }
                            ],
                            "id": 1461,
                            "name": "FunctionCall",
                            "src": "2475:16:10"
                          }
                        ],
                        "id": 1462,
                        "name": "BinaryOperation",
                        "src": "2473:18:10"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "++",
                              "prefix": false,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1455,
                                  "type": "uint256",
                                  "value": "i"
                                },
                                "id": 1463,
                                "name": "Identifier",
                                "src": "2493:1:10"
                              }
                            ],
                            "id": 1464,
                            "name": "UnaryOperation",
                            "src": "2493:3:10"
                          }
                        ],
                        "id": 1465,
                        "name": "ExpressionStatement",
                        "src": "2493:3:10"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "tuple()",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "castVote",
                                      "referencedDeclaration": 1257,
                                      "type": "function (bytes32) external"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "isStructConstructorCall": false,
                                          "lValueRequested": false,
                                          "names": [
                                            null
                                          ],
                                          "type": "contract TieredBallot",
                                          "type_conversion": true
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              ],
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1258,
                                              "type": "type(contract TieredBallot)",
                                              "value": "TieredBallot"
                                            },
                                            "id": 1466,
                                            "name": "Identifier",
                                            "src": "2512:12:10"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "isStructConstructorCall": false,
                                              "lValueRequested": false,
                                              "names": [
                                                null
                                              ],
                                              "type": "address",
                                              "type_conversion": false
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  ],
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "member_name": "getAt",
                                                  "referencedDeclaration": 1586,
                                                  "type": "function (struct AddressSet.SetData storage pointer,uint256) view returns (address)"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 625,
                                                      "type": "struct AddressSet.SetData storage ref",
                                                      "value": "ballotSet"
                                                    },
                                                    "id": 1467,
                                                    "name": "Identifier",
                                                    "src": "2525:9:10"
                                                  }
                                                ],
                                                "id": 1468,
                                                "name": "MemberAccess",
                                                "src": "2525:15:10"
                                              },
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 1455,
                                                  "type": "uint256",
                                                  "value": "i"
                                                },
                                                "id": 1469,
                                                "name": "Identifier",
                                                "src": "2541:1:10"
                                              }
                                            ],
                                            "id": 1470,
                                            "name": "FunctionCall",
                                            "src": "2525:18:10"
                                          }
                                        ],
                                        "id": 1471,
                                        "name": "FunctionCall",
                                        "src": "2512:32:10"
                                      }
                                    ],
                                    "id": 1472,
                                    "name": "MemberAccess",
                                    "src": "2512:41:10"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1429,
                                      "type": "bytes32",
                                      "value": "voteId"
                                    },
                                    "id": 1473,
                                    "name": "Identifier",
                                    "src": "2554:6:10"
                                  }
                                ],
                                "id": 1474,
                                "name": "FunctionCall",
                                "src": "2512:49:10"
                              }
                            ],
                            "id": 1475,
                            "name": "ExpressionStatement",
                            "src": "2512:49:10"
                          }
                        ],
                        "id": 1476,
                        "name": "Block",
                        "src": "2498:74:10"
                      }
                    ],
                    "id": 1477,
                    "name": "ForStatement",
                    "src": "2453:119:10"
                  }
                ],
                "id": 1478,
                "name": "Block",
                "src": "2329:249:10"
              }
            ],
            "id": 1479,
            "name": "FunctionDefinition",
            "src": "2166:412:10"
          }
        ],
        "id": 1480,
        "name": "ContractDefinition",
        "src": "1111:1470:10"
      }
    ],
    "id": 1481,
    "name": "SourceUnit",
    "src": "868:1713:10"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.18+commit.9cf6e910.Emscripten.clang"
  },
  "networks": {
    "3": {
      "events": {},
      "links": {
        "AddressSet": "0xab6f805fb7754d19f82eb8fce07cf70f10c7a620",
        "Bytes32Set": "0x5f3294732f9a04fd6e96a8b0ee414ae65f759232",
        "NoRemovalBytes32Set": "0x486f7a37b62c7247beabbc1f9d451da04a9c585a"
      }
    }
  },
  "schemaVersion": "1.0.1",
  "updatedAt": "2018-03-26T15:57:59.453Z"
}