{
  "contractName": "BasePool",
  "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": 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": "0x60606040526003805461ffff1916905534156200001b57600080fd5b6040516060806200170b83398101604052808051919060200180519190602001805160008054600160a060020a03191633600160a060020a0390811691909117909155909250831615801591506200007b5750600160a060020a03811615155b15156200008757600080fd5b620000a08364010000000062000b9e620000d382021704565b60098054600160a060020a03938416600160a060020a031991821617909155600d80549290931691161790555062000164565b620000ec33640100000000620007ad6200011382021704565b1515620000f857600080fd5b6000908152600260205260409020805460ff19166001179055565b6000600160a060020a038216158015906200015e5750600054600160a060020a03838116911614806200015e5750600160a060020a03821660009081526001602052604090205460ff165b92915050565b61159780620001746000396000f30060606040526004361061017c5763ffffffff60e060020a6000350416630f15f4c08114610181578063116191b614610196578063138b1fa0146101c55780631785f53c146101f857806324d7806c14610217578063265050b6146102365780632b38cd961461026d57806335a063b4146102fa5780633a5673a41461030d5780634126ebe21461032057806341af099d146103ba57806343d726d6146103d05780634b1d3ede146103e35780635e898dac146103f657806362f4ed9014610409578063704802751461041f57806372e789b31461043e5780638da5cb5b146104545780639cc8f2b314610467578063a4e2d6341461047d578063a69df4b514610490578063b4741495146104a3578063c2b6b58c146104c8578063d6807a5c146104db578063d71c677214610575578063db30eafb14610594578063e7b3387c146105b3578063f098fe47146105c6578063f2fde38b146105d9578063f83d08ba146105f8578063f8c74afa1461060b578063f9d5ee751461062a575b600080fd5b341561018c57600080fd5b610194610640565b005b34156101a157600080fd5b6101a96106d9565b604051600160a060020a03909116815260200160405180910390f35b34156101d057600080fd5b6101e4600160a060020a03600435166106e8565b604051901515815260200160405180910390f35b341561020357600080fd5b610194600160a060020a0360043516610771565b341561022257600080fd5b6101e4600160a060020a03600435166107ad565b341561024157600080fd5b6102496107fc565b6040518082600381111561025957fe5b60ff16815260200191505060405180910390f35b341561027857600080fd5b61028360043561080a565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156102bf5780820151838201526020016102a7565b50505050905090810190601f1680156102ec5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561030557600080fd5b6101946108ba565b341561031857600080fd5b61028361090b565b341561032b57600080fd5b610194600480359060446024803590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f016020809104026020016040519081016040528181529291906020840183838082843750949650509335935061097692505050565b34156103c557600080fd5b610194600435610b9e565b34156103db57600080fd5b610194610bcd565b34156103ee57600080fd5b6101a9610c53565b341561040157600080fd5b610194610c62565b341561041457600080fd5b6101e4600435610c98565b341561042a57600080fd5b610194600160a060020a0360043516610cad565b341561044957600080fd5b610194600435610cef565b341561045f57600080fd5b6101a9610d1b565b341561047257600080fd5b610283600435610d2a565b341561048857600080fd5b6101e4610e65565b341561049b57600080fd5b610194610e6f565b34156104ae57600080fd5b6104b6610ecc565b60405190815260200160405180910390f35b34156104d357600080fd5b6101e4610f45565b34156104e657600080fd5b610194600480359060446024803590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405281815292919060208401838380828437509496505093359350610f6592505050565b341561058057600080fd5b610194600160a060020a0360043516611138565b341561059f57600080fd5b6104b6600160a060020a03600435166111f7565b34156105be57600080fd5b6104b6611260565b34156105d157600080fd5b6101e46112ba565b34156105e457600080fd5b610194600160a060020a03600435166112bf565b341561060357600080fd5b61019461135a565b341561061657600080fd5b610194600160a060020a03600435166113b9565b341561063557600080fd5b6101a9600435611461565b610648610e65565b15801561066a5750600060038054610100900460ff169081111561066857fe5b145b151561067557600080fd5b61067e336107ad565b151561068957600080fd5b6106916112ba565b151561069c57600080fd5b6003805461ff0019166101001790557fed1cd0670ee0c0017f550451a038818c696d0b6a9d6ce5b369e44275573cf9b060405160405180910390a1565b600d54600160a060020a031681565b600073__AddressSet____________________________63758241e0600484846040516020015260405160e060020a63ffffffff85160281526004810192909252600160a060020a0316602482015260440160206040518083038186803b151561075157600080fd5b6102c65a03f4151561076257600080fd5b50505060405180519392505050565b60005433600160a060020a0390811691161461078c57600080fd5b600160a060020a03166000908152600160205260409020805460ff19169055565b6000600160a060020a038216158015906107f65750600054600160a060020a03838116911614806107f65750600160a060020a03821660009081526001602052604090205460ff165b92915050565b600354610100900460ff1681565b600b6020528060005260406000206000915090508054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108b25780601f10610887576101008083540402835291602001916108b2565b820191906000526020600020905b81548152906001019060200180831161089557829003601f168201915b505050505081565b6108c3336107ad565b15156108ce57600080fd5b6003805461ff0019166103001790557f72c874aeff0b183a56e2b79c71b46e1aed4dee5e09862134b8821ba2fddbf8bf60405160405180910390a1565b600a8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108b25780601f10610887576101008083540402835291602001916108b2565b61097e610e65565b1580156109a05750600160038054610100900460ff169081111561099e57fe5b145b15156109ab57600080fd5b600d5433600160a060020a039081169116146109c657600080fd5b8373__NoRemovalBytes32Set___________________63bd4a0da160078360006040516020015260405160e060020a63ffffffff85160281526004810192909252602482015260440160206040518083038186803b1515610a2657600080fd5b6102c65a03f41515610a3757600080fd5b5050506040518051159050610a4b57600080fd5b6000828152600c6020526040902054829060ff1615610a6957600080fd5b6000838152600c602052604090819020805460ff1916600117905573__NoRemovalBytes32Set___________________9063bda02f009060079089905160e060020a63ffffffff85160281526004810192909252602482015260440160006040518083038186803b1515610adc57600080fd5b6102c65a03f41515610aed57600080fd5b5050506000868152600b60205260409020858051610b0f9291602001906114c1565b50600954600160a060020a031663de61a7326040518163ffffffff1660e060020a028152600401600060405180830381600087803b1515610b4f57600080fd5b6102c65a03f11515610b6057600080fd5b5050507fe071651fdb9485bc1f9dbd3312c8a999c04ad7a5fef33ee1036e1fc709c4da4f8660405190815260200160405180910390a1505050505050565b610ba7336107ad565b1515610bb257600080fd5b6000908152600260205260409020805460ff19166001179055565b610bd5610e65565b158015610bf75750600160038054610100900460ff1690811115610bf557fe5b145b1515610c0257600080fd5b610c0b336107ad565b1515610c1657600080fd5b6003805461ff0019166102001790557f1cdde67b72a90f19919ac732a437ac2f7a10fc128d28c2a6e525d89ce5cd9d3a60405160405180910390a1565b600954600160a060020a031681565b610c6b336107ad565b1515610c7657600080fd5b600160a060020a0333166000908152600160205260409020805460ff19169055565b60009081526002602052604090205460ff1690565b60005433600160a060020a03908116911614610cc857600080fd5b600160a060020a03166000908152600160208190526040909120805460ff19169091179055565b610cf8336107ad565b1515610d0357600080fd5b6000908152600260205260409020805460ff19169055565b600054600160a060020a031681565b610d3261153f565b600b600073__NoRemovalBytes32Set___________________637a3d376c600786846040516020015260405160e060020a63ffffffff85160281526004810192909252602482015260440160206040518083038186803b1515610d9457600080fd5b6102c65a03f41515610da557600080fd5b50505060405180519050600019166000191681526020019081526020016000208054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610e595780601f10610e2e57610100808354040283529160200191610e59565b820191906000526020600020905b815481529060010190602001808311610e3c57829003601f168201915b50505050509050919050565b60035460ff165b90565b610e78336107ad565b1515610e8357600080fd5b60035460ff161515610e9457600080fd5b6003805460ff191690557f19aad37188a1d3921e29eb3c66acf43d81975e107cb650d58cca878627955fd660405160405180910390a1565b600073__AddressSet____________________________63913aa6cd6004836040516020015260405160e060020a63ffffffff8416028152600481019190915260240160206040518083038186803b1515610f2657600080fd5b6102c65a03f41515610f3757600080fd5b505050604051805191505090565b6000600260038054610100900460ff1690811115610f5f57fe5b14905090565b610f6d610e65565b158015610f8f5750600160038054610100900460ff1690811115610f8d57fe5b145b1515610f9a57600080fd5b600d5433600160a060020a03908116911614610fb557600080fd5b600954600160a060020a031663bf41bf366000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610ffd57600080fd5b6102c65a03f1151561100e57600080fd5b50505060405180519050151561102357600080fd5b6000818152600c6020526040902054819060ff161561104157600080fd5b73__NoRemovalBytes32Set___________________63bd4a0da160078760006040516020015260405160e060020a63ffffffff85160281526004810192909252602482015260440160206040518083038186803b15156110a057600080fd5b6102c65a03f415156110b157600080fd5b5050506040518051905015156110c657600080fd5b6000828152600c60209081526040808320805460ff19166001179055878352600b90915290208480516110fd9291602001906114c1565b507fb76baefd7e249e81a2c6ab2dd1692b4629b993e50c0f341cd9410ca6b0f3392e8560405190815260200160405180910390a15050505050565b611140610e65565b1580156111625750600060038054610100900460ff169081111561116057fe5b145b151561116d57600080fd5b611176336107ad565b151561118157600080fd5b73__AddressSet____________________________63e134066a60048360405160e060020a63ffffffff85160281526004810192909252600160a060020a0316602482015260440160006040518083038186803b15156111e057600080fd5b6102c65a03f415156111f157600080fd5b50505050565b600073__AddressSet____________________________6318c40249600484846040516020015260405160e060020a63ffffffff85160281526004810192909252600160a060020a0316602482015260440160206040518083038186803b151561075157600080fd5b600073__NoRemovalBytes32Set___________________6366b26fbf6007836040516020015260405160e060020a63ffffffff8416028152600481019190915260240160206040518083038186803b1515610f2657600080fd5b600190565b60005433600160a060020a039081169116146112da57600080fd5b600160a060020a03811615156112ef57600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b611363336107ad565b151561136e57600080fd5b60035460ff161561137e57600080fd5b6003805460ff191660011790557f0f2e5b6c72c6a4491efd919a9f9a409f324ef0708c11ee57d410c2cb06c0992b60405160405180910390a1565b6113c1610e65565b1580156113e35750600060038054610100900460ff16908111156113e157fe5b145b15156113ee57600080fd5b6113f7336107ad565b151561140257600080fd5b73__AddressSet____________________________63f9802f8560048360405160e060020a63ffffffff85160281526004810192909252600160a060020a0316602482015260440160006040518083038186803b15156111e057600080fd5b600073__AddressSet____________________________635c2125a7600484846040516020015260405160e060020a63ffffffff85160281526004810192909252602482015260440160206040518083038186803b151561075157600080fd5b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061150257805160ff191683800117855561152f565b8280016001018555821561152f579182015b8281111561152f578251825591602001919060010190611514565b5061153b929150611551565b5090565b60206040519081016040526000815290565b610e6c91905b8082111561153b57600081556001016115575600a165627a7a72305820ab292e9cccc333ef4c7de021adf04c55af05144320afb2c3bcaf442742bbec600029",
  "deployedBytecode": "0x60606040526004361061017c5763ffffffff60e060020a6000350416630f15f4c08114610181578063116191b614610196578063138b1fa0146101c55780631785f53c146101f857806324d7806c14610217578063265050b6146102365780632b38cd961461026d57806335a063b4146102fa5780633a5673a41461030d5780634126ebe21461032057806341af099d146103ba57806343d726d6146103d05780634b1d3ede146103e35780635e898dac146103f657806362f4ed9014610409578063704802751461041f57806372e789b31461043e5780638da5cb5b146104545780639cc8f2b314610467578063a4e2d6341461047d578063a69df4b514610490578063b4741495146104a3578063c2b6b58c146104c8578063d6807a5c146104db578063d71c677214610575578063db30eafb14610594578063e7b3387c146105b3578063f098fe47146105c6578063f2fde38b146105d9578063f83d08ba146105f8578063f8c74afa1461060b578063f9d5ee751461062a575b600080fd5b341561018c57600080fd5b610194610640565b005b34156101a157600080fd5b6101a96106d9565b604051600160a060020a03909116815260200160405180910390f35b34156101d057600080fd5b6101e4600160a060020a03600435166106e8565b604051901515815260200160405180910390f35b341561020357600080fd5b610194600160a060020a0360043516610771565b341561022257600080fd5b6101e4600160a060020a03600435166107ad565b341561024157600080fd5b6102496107fc565b6040518082600381111561025957fe5b60ff16815260200191505060405180910390f35b341561027857600080fd5b61028360043561080a565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156102bf5780820151838201526020016102a7565b50505050905090810190601f1680156102ec5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561030557600080fd5b6101946108ba565b341561031857600080fd5b61028361090b565b341561032b57600080fd5b610194600480359060446024803590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f016020809104026020016040519081016040528181529291906020840183838082843750949650509335935061097692505050565b34156103c557600080fd5b610194600435610b9e565b34156103db57600080fd5b610194610bcd565b34156103ee57600080fd5b6101a9610c53565b341561040157600080fd5b610194610c62565b341561041457600080fd5b6101e4600435610c98565b341561042a57600080fd5b610194600160a060020a0360043516610cad565b341561044957600080fd5b610194600435610cef565b341561045f57600080fd5b6101a9610d1b565b341561047257600080fd5b610283600435610d2a565b341561048857600080fd5b6101e4610e65565b341561049b57600080fd5b610194610e6f565b34156104ae57600080fd5b6104b6610ecc565b60405190815260200160405180910390f35b34156104d357600080fd5b6101e4610f45565b34156104e657600080fd5b610194600480359060446024803590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405281815292919060208401838380828437509496505093359350610f6592505050565b341561058057600080fd5b610194600160a060020a0360043516611138565b341561059f57600080fd5b6104b6600160a060020a03600435166111f7565b34156105be57600080fd5b6104b6611260565b34156105d157600080fd5b6101e46112ba565b34156105e457600080fd5b610194600160a060020a03600435166112bf565b341561060357600080fd5b61019461135a565b341561061657600080fd5b610194600160a060020a03600435166113b9565b341561063557600080fd5b6101a9600435611461565b610648610e65565b15801561066a5750600060038054610100900460ff169081111561066857fe5b145b151561067557600080fd5b61067e336107ad565b151561068957600080fd5b6106916112ba565b151561069c57600080fd5b6003805461ff0019166101001790557fed1cd0670ee0c0017f550451a038818c696d0b6a9d6ce5b369e44275573cf9b060405160405180910390a1565b600d54600160a060020a031681565b600073__AddressSet____________________________63758241e0600484846040516020015260405160e060020a63ffffffff85160281526004810192909252600160a060020a0316602482015260440160206040518083038186803b151561075157600080fd5b6102c65a03f4151561076257600080fd5b50505060405180519392505050565b60005433600160a060020a0390811691161461078c57600080fd5b600160a060020a03166000908152600160205260409020805460ff19169055565b6000600160a060020a038216158015906107f65750600054600160a060020a03838116911614806107f65750600160a060020a03821660009081526001602052604090205460ff165b92915050565b600354610100900460ff1681565b600b6020528060005260406000206000915090508054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108b25780601f10610887576101008083540402835291602001916108b2565b820191906000526020600020905b81548152906001019060200180831161089557829003601f168201915b505050505081565b6108c3336107ad565b15156108ce57600080fd5b6003805461ff0019166103001790557f72c874aeff0b183a56e2b79c71b46e1aed4dee5e09862134b8821ba2fddbf8bf60405160405180910390a1565b600a8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108b25780601f10610887576101008083540402835291602001916108b2565b61097e610e65565b1580156109a05750600160038054610100900460ff169081111561099e57fe5b145b15156109ab57600080fd5b600d5433600160a060020a039081169116146109c657600080fd5b8373__NoRemovalBytes32Set___________________63bd4a0da160078360006040516020015260405160e060020a63ffffffff85160281526004810192909252602482015260440160206040518083038186803b1515610a2657600080fd5b6102c65a03f41515610a3757600080fd5b5050506040518051159050610a4b57600080fd5b6000828152600c6020526040902054829060ff1615610a6957600080fd5b6000838152600c602052604090819020805460ff1916600117905573__NoRemovalBytes32Set___________________9063bda02f009060079089905160e060020a63ffffffff85160281526004810192909252602482015260440160006040518083038186803b1515610adc57600080fd5b6102c65a03f41515610aed57600080fd5b5050506000868152600b60205260409020858051610b0f9291602001906114c1565b50600954600160a060020a031663de61a7326040518163ffffffff1660e060020a028152600401600060405180830381600087803b1515610b4f57600080fd5b6102c65a03f11515610b6057600080fd5b5050507fe071651fdb9485bc1f9dbd3312c8a999c04ad7a5fef33ee1036e1fc709c4da4f8660405190815260200160405180910390a1505050505050565b610ba7336107ad565b1515610bb257600080fd5b6000908152600260205260409020805460ff19166001179055565b610bd5610e65565b158015610bf75750600160038054610100900460ff1690811115610bf557fe5b145b1515610c0257600080fd5b610c0b336107ad565b1515610c1657600080fd5b6003805461ff0019166102001790557f1cdde67b72a90f19919ac732a437ac2f7a10fc128d28c2a6e525d89ce5cd9d3a60405160405180910390a1565b600954600160a060020a031681565b610c6b336107ad565b1515610c7657600080fd5b600160a060020a0333166000908152600160205260409020805460ff19169055565b60009081526002602052604090205460ff1690565b60005433600160a060020a03908116911614610cc857600080fd5b600160a060020a03166000908152600160208190526040909120805460ff19169091179055565b610cf8336107ad565b1515610d0357600080fd5b6000908152600260205260409020805460ff19169055565b600054600160a060020a031681565b610d3261153f565b600b600073__NoRemovalBytes32Set___________________637a3d376c600786846040516020015260405160e060020a63ffffffff85160281526004810192909252602482015260440160206040518083038186803b1515610d9457600080fd5b6102c65a03f41515610da557600080fd5b50505060405180519050600019166000191681526020019081526020016000208054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610e595780601f10610e2e57610100808354040283529160200191610e59565b820191906000526020600020905b815481529060010190602001808311610e3c57829003601f168201915b50505050509050919050565b60035460ff165b90565b610e78336107ad565b1515610e8357600080fd5b60035460ff161515610e9457600080fd5b6003805460ff191690557f19aad37188a1d3921e29eb3c66acf43d81975e107cb650d58cca878627955fd660405160405180910390a1565b600073__AddressSet____________________________63913aa6cd6004836040516020015260405160e060020a63ffffffff8416028152600481019190915260240160206040518083038186803b1515610f2657600080fd5b6102c65a03f41515610f3757600080fd5b505050604051805191505090565b6000600260038054610100900460ff1690811115610f5f57fe5b14905090565b610f6d610e65565b158015610f8f5750600160038054610100900460ff1690811115610f8d57fe5b145b1515610f9a57600080fd5b600d5433600160a060020a03908116911614610fb557600080fd5b600954600160a060020a031663bf41bf366000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610ffd57600080fd5b6102c65a03f1151561100e57600080fd5b50505060405180519050151561102357600080fd5b6000818152600c6020526040902054819060ff161561104157600080fd5b73__NoRemovalBytes32Set___________________63bd4a0da160078760006040516020015260405160e060020a63ffffffff85160281526004810192909252602482015260440160206040518083038186803b15156110a057600080fd5b6102c65a03f415156110b157600080fd5b5050506040518051905015156110c657600080fd5b6000828152600c60209081526040808320805460ff19166001179055878352600b90915290208480516110fd9291602001906114c1565b507fb76baefd7e249e81a2c6ab2dd1692b4629b993e50c0f341cd9410ca6b0f3392e8560405190815260200160405180910390a15050505050565b611140610e65565b1580156111625750600060038054610100900460ff169081111561116057fe5b145b151561116d57600080fd5b611176336107ad565b151561118157600080fd5b73__AddressSet____________________________63e134066a60048360405160e060020a63ffffffff85160281526004810192909252600160a060020a0316602482015260440160006040518083038186803b15156111e057600080fd5b6102c65a03f415156111f157600080fd5b50505050565b600073__AddressSet____________________________6318c40249600484846040516020015260405160e060020a63ffffffff85160281526004810192909252600160a060020a0316602482015260440160206040518083038186803b151561075157600080fd5b600073__NoRemovalBytes32Set___________________6366b26fbf6007836040516020015260405160e060020a63ffffffff8416028152600481019190915260240160206040518083038186803b1515610f2657600080fd5b600190565b60005433600160a060020a039081169116146112da57600080fd5b600160a060020a03811615156112ef57600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b611363336107ad565b151561136e57600080fd5b60035460ff161561137e57600080fd5b6003805460ff191660011790557f0f2e5b6c72c6a4491efd919a9f9a409f324ef0708c11ee57d410c2cb06c0992b60405160405180910390a1565b6113c1610e65565b1580156113e35750600060038054610100900460ff16908111156113e157fe5b145b15156113ee57600080fd5b6113f7336107ad565b151561140257600080fd5b73__AddressSet____________________________63f9802f8560048360405160e060020a63ffffffff85160281526004810192909252600160a060020a0316602482015260440160006040518083038186803b15156111e057600080fd5b600073__AddressSet____________________________635c2125a7600484846040516020015260405160e060020a63ffffffff85160281526004810192909252602482015260440160206040518083038186803b151561075157600080fd5b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061150257805160ff191683800117855561152f565b8280016001018555821561152f579182015b8281111561152f578251825591602001919060010190611514565b5061153b929150611551565b5090565b60206040519081016040526000815290565b610e6c91905b8082111561153b57600081556001016115575600a165627a7a72305820ab292e9cccc333ef4c7de021adf04c55af05144320afb2c3bcaf442742bbec600029",
  "sourceMap": "1215:2315:4:-;;;1183:22:16;;;-1:-1:-1;;1326:59:15;;;1703:215:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;494:5:21;:18;;-1:-1:-1;;;;;;494:18:21;502:10;-1:-1:-1;;;;;494:18:21;;;;;;;;;;1703:215:4;;-1:-1:-1;1792:16:4;;;;;;-1:-1:-1;1792:36:4;;-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;1215:2315:4;;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;1215:2315:4:-;;;;;;;",
  "deployedSourceMap": "1215:2315:4:-;;;;;;;;;-1:-1:-1;;;1215:2315:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;;;;;;;;;;;2800:347;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2800:347:4;;-1:-1:-1;;2800:347:4;;;-1:-1:-1;2800:347:4;;-1:-1:-1;;;2800:347:4;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;;;;;;;;;;;;1838:162:15;;;;;;;;;;;;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:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2800:347;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;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1838:162:15;1989:4;1838:162;:::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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1215:2315:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1215:2315:4;;;-1:-1:-1;1215:2315:4;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;",
  "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 \"./BaseElection.sol\";\nimport \"./links/BallotRegistry.sol\";\nimport \"../auth/ExternalAuthorizable.sol\";\nimport \"../lib/NoRemovalBytes32Set.sol\";\n\n\n/**\n * @title BasePool\n * @dev A base contract receives and stores votes from a gateway address.\n * This maps a set of ballots for the purposes of ballot iteration.\n */\ncontract BasePool is ExternalAuthorizable, BallotRegistry {\n    using NoRemovalBytes32Set for NoRemovalBytes32Set.SetData;\n\n    NoRemovalBytes32Set.SetData voteIdSet;\n\n    address public election;\n    string public createdBy;\n\n    // events\n    event Vote(bytes32 voteId);\n    event UpdateVote(bytes32 voteId);\n\n    // voteId to vote map\n    mapping (bytes32 => string) public votes;\n\n    // prevents duplicate JTIs\n    mapping (bytes32 => bool) jtiMap;\n\n    address public gateway;\n\n    function BasePool(bytes32 hashedUserId, address el, address gw) public {\n        require(el != address(0) && gw != address(0));\n        addAuthorized(hashedUserId);\n        election = el;\n        gateway = gw;\n    }\n\n    modifier onlyGateway() {\n        require(msg.sender == gateway);\n        _;\n    }\n\n    modifier notDuplicateJti(bytes32 jti) {\n        require(!jtiMap[jti]);\n        _;\n    }\n\n    // avoids allowing a duplicate vote\n    modifier notDuplicate(bytes32 voteId) {\n        require(!voteIdSet.contains(voteId));\n        _;\n    }\n\n    // checks election to see if updates to votes are allowed\n    modifier updatesAllowed() {\n        require(BaseElection(election).allowVoteUpdates());\n        _;\n    }\n\n    // returns number of voteIds voted (for iteration of votes)\n    function getVoteCount() public constant returns (uint256) {\n        return voteIdSet.size();\n    }\n\n    // returns number of voteIds voted (for iteration of votes)\n    function getVoteAt(uint256 index) public constant returns (string) {\n        return votes[voteIdSet.getAt(index)];\n    }\n\n    // store vote\n    function castVote(\n        bytes32 voteId,\n        string vote,\n        string passphrase,\n        bytes32 jti) public voting onlyGateway notDuplicate(voteId) notDuplicateJti(jti)\n    {\n        jtiMap[jti] = true;\n        voteIdSet.put(voteId);\n        votes[voteId] = vote;\n        BaseElection(election).deductVote();\n        Vote(voteId);\n    }\n\n    // voter can update their vote if election allows it\n    function updateVote(\n        bytes32 voteId,\n        string vote,\n        string passphrase,\n        bytes32 jti) public voting onlyGateway updatesAllowed notDuplicateJti(jti)\n    {\n        require(voteIdSet.contains(voteId));\n        jtiMap[jti] = true;\n        votes[voteId] = vote;\n        UpdateVote(voteId);\n    }\n}",
  "sourcePath": "/Users/slanders/netvote/elections-solidity/contracts/elections/BasePool.sol",
  "ast": {
    "attributes": {
      "absolutePath": "/Users/slanders/netvote/elections-solidity/contracts/elections/BasePool.sol",
      "exportedSymbols": {
        "BasePool": [
          614
        ]
      }
    },
    "children": [
      {
        "attributes": {
          "literals": [
            "solidity",
            "^",
            "0.4",
            ".17"
          ]
        },
        "id": 373,
        "name": "PragmaDirective",
        "src": "868:24:4"
      },
      {
        "attributes": {
          "SourceUnit": 372,
          "absolutePath": "/Users/slanders/netvote/elections-solidity/contracts/elections/BaseElection.sol",
          "file": "./BaseElection.sol",
          "scope": 615,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 374,
        "name": "ImportDirective",
        "src": "894:28:4"
      },
      {
        "attributes": {
          "SourceUnit": 708,
          "absolutePath": "/Users/slanders/netvote/elections-solidity/contracts/elections/links/BallotRegistry.sol",
          "file": "./links/BallotRegistry.sol",
          "scope": 615,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 375,
        "name": "ImportDirective",
        "src": "923:36:4"
      },
      {
        "attributes": {
          "SourceUnit": 135,
          "absolutePath": "/Users/slanders/netvote/elections-solidity/contracts/auth/ExternalAuthorizable.sol",
          "file": "../auth/ExternalAuthorizable.sol",
          "scope": 615,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 376,
        "name": "ImportDirective",
        "src": "960:42:4"
      },
      {
        "attributes": {
          "SourceUnit": 2009,
          "absolutePath": "/Users/slanders/netvote/elections-solidity/contracts/lib/NoRemovalBytes32Set.sol",
          "file": "../lib/NoRemovalBytes32Set.sol",
          "scope": 615,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 377,
        "name": "ImportDirective",
        "src": "1003:40:4"
      },
      {
        "attributes": {
          "contractDependencies": [
            84,
            134,
            707,
            2129,
            2197,
            2703
          ],
          "contractKind": "contract",
          "documentation": "@title BasePool\n@dev A base contract receives and stores votes from a gateway address.\nThis maps a set of ballots for the purposes of ballot iteration.",
          "fullyImplemented": true,
          "linearizedBaseContracts": [
            614,
            707,
            2129,
            2197,
            134,
            84,
            2703
          ],
          "name": "BasePool",
          "scope": 615
        },
        "children": [
          {
            "attributes": {
              "arguments": [
                null
              ]
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "ExternalAuthorizable",
                  "referencedDeclaration": 134,
                  "type": "contract ExternalAuthorizable"
                },
                "id": 378,
                "name": "UserDefinedTypeName",
                "src": "1236:20:4"
              }
            ],
            "id": 379,
            "name": "InheritanceSpecifier",
            "src": "1236:20:4"
          },
          {
            "attributes": {
              "arguments": [
                null
              ]
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "BallotRegistry",
                  "referencedDeclaration": 707,
                  "type": "contract BallotRegistry"
                },
                "id": 380,
                "name": "UserDefinedTypeName",
                "src": "1258:14:4"
              }
            ],
            "id": 381,
            "name": "InheritanceSpecifier",
            "src": "1258:14:4"
          },
          {
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "NoRemovalBytes32Set",
                  "referencedDeclaration": 2008,
                  "type": "library NoRemovalBytes32Set"
                },
                "id": 382,
                "name": "UserDefinedTypeName",
                "src": "1285:19:4"
              },
              {
                "attributes": {
                  "contractScope": null,
                  "name": "NoRemovalBytes32Set.SetData",
                  "referencedDeclaration": 1934,
                  "type": "struct NoRemovalBytes32Set.SetData storage pointer"
                },
                "id": 383,
                "name": "UserDefinedTypeName",
                "src": "1309:27:4"
              }
            ],
            "id": 384,
            "name": "UsingForDirective",
            "src": "1279:58:4"
          },
          {
            "attributes": {
              "constant": false,
              "name": "voteIdSet",
              "scope": 614,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "struct NoRemovalBytes32Set.SetData storage ref",
              "value": null,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "NoRemovalBytes32Set.SetData",
                  "referencedDeclaration": 1934,
                  "type": "struct NoRemovalBytes32Set.SetData storage pointer"
                },
                "id": 385,
                "name": "UserDefinedTypeName",
                "src": "1343:27:4"
              }
            ],
            "id": 386,
            "name": "VariableDeclaration",
            "src": "1343:37:4"
          },
          {
            "attributes": {
              "constant": false,
              "name": "election",
              "scope": 614,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "address",
              "value": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "name": "address",
                  "type": "address"
                },
                "id": 387,
                "name": "ElementaryTypeName",
                "src": "1387:7:4"
              }
            ],
            "id": 388,
            "name": "VariableDeclaration",
            "src": "1387:23:4"
          },
          {
            "attributes": {
              "constant": false,
              "name": "createdBy",
              "scope": 614,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "string storage ref",
              "value": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "name": "string",
                  "type": "string storage pointer"
                },
                "id": 389,
                "name": "ElementaryTypeName",
                "src": "1416:6:4"
              }
            ],
            "id": 390,
            "name": "VariableDeclaration",
            "src": "1416:23:4"
          },
          {
            "attributes": {
              "anonymous": false,
              "name": "Vote"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "name": "voteId",
                      "scope": 394,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 391,
                        "name": "ElementaryTypeName",
                        "src": "1471:7:4"
                      }
                    ],
                    "id": 392,
                    "name": "VariableDeclaration",
                    "src": "1471:14:4"
                  }
                ],
                "id": 393,
                "name": "ParameterList",
                "src": "1470:16:4"
              }
            ],
            "id": 394,
            "name": "EventDefinition",
            "src": "1460:27:4"
          },
          {
            "attributes": {
              "anonymous": false,
              "name": "UpdateVote"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "name": "voteId",
                      "scope": 398,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 395,
                        "name": "ElementaryTypeName",
                        "src": "1509:7:4"
                      }
                    ],
                    "id": 396,
                    "name": "VariableDeclaration",
                    "src": "1509:14:4"
                  }
                ],
                "id": 397,
                "name": "ParameterList",
                "src": "1508:16:4"
              }
            ],
            "id": 398,
            "name": "EventDefinition",
            "src": "1492:33:4"
          },
          {
            "attributes": {
              "constant": false,
              "name": "votes",
              "scope": 614,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "mapping(bytes32 => string storage ref)",
              "value": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "type": "mapping(bytes32 => string storage ref)"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "bytes32",
                      "type": "bytes32"
                    },
                    "id": 399,
                    "name": "ElementaryTypeName",
                    "src": "1566:7:4"
                  },
                  {
                    "attributes": {
                      "name": "string",
                      "type": "string storage pointer"
                    },
                    "id": 400,
                    "name": "ElementaryTypeName",
                    "src": "1577:6:4"
                  }
                ],
                "id": 401,
                "name": "Mapping",
                "src": "1557:27:4"
              }
            ],
            "id": 402,
            "name": "VariableDeclaration",
            "src": "1557:40:4"
          },
          {
            "attributes": {
              "constant": false,
              "name": "jtiMap",
              "scope": 614,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "mapping(bytes32 => bool)",
              "value": null,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "type": "mapping(bytes32 => bool)"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "bytes32",
                      "type": "bytes32"
                    },
                    "id": 403,
                    "name": "ElementaryTypeName",
                    "src": "1644:7:4"
                  },
                  {
                    "attributes": {
                      "name": "bool",
                      "type": "bool"
                    },
                    "id": 404,
                    "name": "ElementaryTypeName",
                    "src": "1655:4:4"
                  }
                ],
                "id": 405,
                "name": "Mapping",
                "src": "1635:25:4"
              }
            ],
            "id": 406,
            "name": "VariableDeclaration",
            "src": "1635:32:4"
          },
          {
            "attributes": {
              "constant": false,
              "name": "gateway",
              "scope": 614,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "address",
              "value": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "name": "address",
                  "type": "address"
                },
                "id": 407,
                "name": "ElementaryTypeName",
                "src": "1674:7:4"
              }
            ],
            "id": 408,
            "name": "VariableDeclaration",
            "src": "1674:22:4"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": true,
              "modifiers": [
                null
              ],
              "name": "BasePool",
              "payable": false,
              "scope": 614,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "hashedUserId",
                      "scope": 444,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 409,
                        "name": "ElementaryTypeName",
                        "src": "1721:7:4"
                      }
                    ],
                    "id": 410,
                    "name": "VariableDeclaration",
                    "src": "1721:20:4"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "el",
                      "scope": 444,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 411,
                        "name": "ElementaryTypeName",
                        "src": "1743:7:4"
                      }
                    ],
                    "id": 412,
                    "name": "VariableDeclaration",
                    "src": "1743:10:4"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "gw",
                      "scope": 444,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 413,
                        "name": "ElementaryTypeName",
                        "src": "1755:7:4"
                      }
                    ],
                    "id": 414,
                    "name": "VariableDeclaration",
                    "src": "1755:10:4"
                  }
                ],
                "id": 415,
                "name": "ParameterList",
                "src": "1720:46:4"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 416,
                "name": "ParameterList",
                "src": "1774:0:4"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3241,
                              "type": "function (bool) pure",
                              "value": "require"
                            },
                            "id": 417,
                            "name": "Identifier",
                            "src": "1784:7:4"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "&&",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "!=",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 412,
                                      "type": "address",
                                      "value": "el"
                                    },
                                    "id": 418,
                                    "name": "Identifier",
                                    "src": "1792:2:4"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "type": "address",
                                      "type_conversion": true
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "type": "type(address)",
                                          "value": "address"
                                        },
                                        "id": 419,
                                        "name": "ElementaryTypeNameExpression",
                                        "src": "1798:7:4"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "30",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 0",
                                          "value": "0"
                                        },
                                        "id": 420,
                                        "name": "Literal",
                                        "src": "1806:1:4"
                                      }
                                    ],
                                    "id": 421,
                                    "name": "FunctionCall",
                                    "src": "1798:10:4"
                                  }
                                ],
                                "id": 422,
                                "name": "BinaryOperation",
                                "src": "1792:16:4"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "!=",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 414,
                                      "type": "address",
                                      "value": "gw"
                                    },
                                    "id": 423,
                                    "name": "Identifier",
                                    "src": "1812:2:4"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "type": "address",
                                      "type_conversion": true
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "type": "type(address)",
                                          "value": "address"
                                        },
                                        "id": 424,
                                        "name": "ElementaryTypeNameExpression",
                                        "src": "1818:7:4"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "30",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 0",
                                          "value": "0"
                                        },
                                        "id": 425,
                                        "name": "Literal",
                                        "src": "1826:1:4"
                                      }
                                    ],
                                    "id": 426,
                                    "name": "FunctionCall",
                                    "src": "1818:10:4"
                                  }
                                ],
                                "id": 427,
                                "name": "BinaryOperation",
                                "src": "1812:16:4"
                              }
                            ],
                            "id": 428,
                            "name": "BinaryOperation",
                            "src": "1792:36:4"
                          }
                        ],
                        "id": 429,
                        "name": "FunctionCall",
                        "src": "1784:45:4"
                      }
                    ],
                    "id": 430,
                    "name": "ExpressionStatement",
                    "src": "1784:45:4"
                  },
                  {
                    "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"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 119,
                              "type": "function (bytes32)",
                              "value": "addAuthorized"
                            },
                            "id": 431,
                            "name": "Identifier",
                            "src": "1839:13:4"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 410,
                              "type": "bytes32",
                              "value": "hashedUserId"
                            },
                            "id": 432,
                            "name": "Identifier",
                            "src": "1853:12:4"
                          }
                        ],
                        "id": 433,
                        "name": "FunctionCall",
                        "src": "1839:27:4"
                      }
                    ],
                    "id": 434,
                    "name": "ExpressionStatement",
                    "src": "1839:27:4"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "address"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 388,
                              "type": "address",
                              "value": "election"
                            },
                            "id": 435,
                            "name": "Identifier",
                            "src": "1876:8:4"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 412,
                              "type": "address",
                              "value": "el"
                            },
                            "id": 436,
                            "name": "Identifier",
                            "src": "1887:2:4"
                          }
                        ],
                        "id": 437,
                        "name": "Assignment",
                        "src": "1876:13:4"
                      }
                    ],
                    "id": 438,
                    "name": "ExpressionStatement",
                    "src": "1876:13:4"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "address"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 408,
                              "type": "address",
                              "value": "gateway"
                            },
                            "id": 439,
                            "name": "Identifier",
                            "src": "1899:7:4"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 414,
                              "type": "address",
                              "value": "gw"
                            },
                            "id": 440,
                            "name": "Identifier",
                            "src": "1909:2:4"
                          }
                        ],
                        "id": 441,
                        "name": "Assignment",
                        "src": "1899:12:4"
                      }
                    ],
                    "id": 442,
                    "name": "ExpressionStatement",
                    "src": "1899:12:4"
                  }
                ],
                "id": 443,
                "name": "Block",
                "src": "1774:144:4"
              }
            ],
            "id": 444,
            "name": "FunctionDefinition",
            "src": "1703:215:4"
          },
          {
            "attributes": {
              "name": "onlyGateway",
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 445,
                "name": "ParameterList",
                "src": "1944:2:4"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3241,
                              "type": "function (bool) pure",
                              "value": "require"
                            },
                            "id": 446,
                            "name": "Identifier",
                            "src": "1957:7:4"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "==",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "sender",
                                  "referencedDeclaration": null,
                                  "type": "address"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3238,
                                      "type": "msg",
                                      "value": "msg"
                                    },
                                    "id": 447,
                                    "name": "Identifier",
                                    "src": "1965:3:4"
                                  }
                                ],
                                "id": 448,
                                "name": "MemberAccess",
                                "src": "1965:10:4"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 408,
                                  "type": "address",
                                  "value": "gateway"
                                },
                                "id": 449,
                                "name": "Identifier",
                                "src": "1979:7:4"
                              }
                            ],
                            "id": 450,
                            "name": "BinaryOperation",
                            "src": "1965:21:4"
                          }
                        ],
                        "id": 451,
                        "name": "FunctionCall",
                        "src": "1957:30:4"
                      }
                    ],
                    "id": 452,
                    "name": "ExpressionStatement",
                    "src": "1957:30:4"
                  },
                  {
                    "id": 453,
                    "name": "PlaceholderStatement",
                    "src": "1997:1:4"
                  }
                ],
                "id": 454,
                "name": "Block",
                "src": "1947:58:4"
              }
            ],
            "id": 455,
            "name": "ModifierDefinition",
            "src": "1924:81:4"
          },
          {
            "attributes": {
              "name": "notDuplicateJti",
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "jti",
                      "scope": 468,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 456,
                        "name": "ElementaryTypeName",
                        "src": "2036:7:4"
                      }
                    ],
                    "id": 457,
                    "name": "VariableDeclaration",
                    "src": "2036:11:4"
                  }
                ],
                "id": 458,
                "name": "ParameterList",
                "src": "2035:13:4"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3241,
                              "type": "function (bool) pure",
                              "value": "require"
                            },
                            "id": 459,
                            "name": "Identifier",
                            "src": "2059:7:4"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "!",
                              "prefix": true,
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 406,
                                      "type": "mapping(bytes32 => bool)",
                                      "value": "jtiMap"
                                    },
                                    "id": 460,
                                    "name": "Identifier",
                                    "src": "2068:6:4"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 457,
                                      "type": "bytes32",
                                      "value": "jti"
                                    },
                                    "id": 461,
                                    "name": "Identifier",
                                    "src": "2075:3:4"
                                  }
                                ],
                                "id": 462,
                                "name": "IndexAccess",
                                "src": "2068:11:4"
                              }
                            ],
                            "id": 463,
                            "name": "UnaryOperation",
                            "src": "2067:12:4"
                          }
                        ],
                        "id": 464,
                        "name": "FunctionCall",
                        "src": "2059:21:4"
                      }
                    ],
                    "id": 465,
                    "name": "ExpressionStatement",
                    "src": "2059:21:4"
                  },
                  {
                    "id": 466,
                    "name": "PlaceholderStatement",
                    "src": "2090:1:4"
                  }
                ],
                "id": 467,
                "name": "Block",
                "src": "2049:49:4"
              }
            ],
            "id": 468,
            "name": "ModifierDefinition",
            "src": "2011:87:4"
          },
          {
            "attributes": {
              "name": "notDuplicate",
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "voteId",
                      "scope": 482,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 469,
                        "name": "ElementaryTypeName",
                        "src": "2166:7:4"
                      }
                    ],
                    "id": 470,
                    "name": "VariableDeclaration",
                    "src": "2166:14:4"
                  }
                ],
                "id": 471,
                "name": "ParameterList",
                "src": "2165:16:4"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3241,
                              "type": "function (bool) pure",
                              "value": "require"
                            },
                            "id": 472,
                            "name": "Identifier",
                            "src": "2192:7:4"
                          },
                          {
                            "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_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "contains",
                                      "referencedDeclaration": 1964,
                                      "type": "function (struct NoRemovalBytes32Set.SetData storage pointer,bytes32) view returns (bool)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 386,
                                          "type": "struct NoRemovalBytes32Set.SetData storage ref",
                                          "value": "voteIdSet"
                                        },
                                        "id": 473,
                                        "name": "Identifier",
                                        "src": "2201:9:4"
                                      }
                                    ],
                                    "id": 474,
                                    "name": "MemberAccess",
                                    "src": "2201:18:4"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 470,
                                      "type": "bytes32",
                                      "value": "voteId"
                                    },
                                    "id": 475,
                                    "name": "Identifier",
                                    "src": "2220:6:4"
                                  }
                                ],
                                "id": 476,
                                "name": "FunctionCall",
                                "src": "2201:26:4"
                              }
                            ],
                            "id": 477,
                            "name": "UnaryOperation",
                            "src": "2200:27:4"
                          }
                        ],
                        "id": 478,
                        "name": "FunctionCall",
                        "src": "2192:36:4"
                      }
                    ],
                    "id": 479,
                    "name": "ExpressionStatement",
                    "src": "2192:36:4"
                  },
                  {
                    "id": 480,
                    "name": "PlaceholderStatement",
                    "src": "2238:1:4"
                  }
                ],
                "id": 481,
                "name": "Block",
                "src": "2182:64:4"
              }
            ],
            "id": 482,
            "name": "ModifierDefinition",
            "src": "2144:102:4"
          },
          {
            "attributes": {
              "name": "updatesAllowed",
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 483,
                "name": "ParameterList",
                "src": "2337:2:4"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3241,
                              "type": "function (bool) pure",
                              "value": "require"
                            },
                            "id": 484,
                            "name": "Identifier",
                            "src": "2350:7:4"
                          },
                          {
                            "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
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "allowVoteUpdates",
                                  "referencedDeclaration": 180,
                                  "type": "function () view external returns (bool)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "type": "contract BaseElection",
                                      "type_conversion": true
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 371,
                                          "type": "type(contract BaseElection)",
                                          "value": "BaseElection"
                                        },
                                        "id": 485,
                                        "name": "Identifier",
                                        "src": "2358:12:4"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 388,
                                          "type": "address",
                                          "value": "election"
                                        },
                                        "id": 486,
                                        "name": "Identifier",
                                        "src": "2371:8:4"
                                      }
                                    ],
                                    "id": 487,
                                    "name": "FunctionCall",
                                    "src": "2358:22:4"
                                  }
                                ],
                                "id": 488,
                                "name": "MemberAccess",
                                "src": "2358:39:4"
                              }
                            ],
                            "id": 489,
                            "name": "FunctionCall",
                            "src": "2358:41:4"
                          }
                        ],
                        "id": 490,
                        "name": "FunctionCall",
                        "src": "2350:50:4"
                      }
                    ],
                    "id": 491,
                    "name": "ExpressionStatement",
                    "src": "2350:50:4"
                  },
                  {
                    "id": 492,
                    "name": "PlaceholderStatement",
                    "src": "2410:1:4"
                  }
                ],
                "id": 493,
                "name": "Block",
                "src": "2340:78:4"
              }
            ],
            "id": 494,
            "name": "ModifierDefinition",
            "src": "2314:104:4"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "getVoteCount",
              "payable": false,
              "scope": 614,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 495,
                "name": "ParameterList",
                "src": "2509:2:4"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 504,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 496,
                        "name": "ElementaryTypeName",
                        "src": "2537:7:4"
                      }
                    ],
                    "id": 497,
                    "name": "VariableDeclaration",
                    "src": "2537:7:4"
                  }
                ],
                "id": 498,
                "name": "ParameterList",
                "src": "2536:9:4"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 498
                    },
                    "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": 1976,
                              "type": "function (struct NoRemovalBytes32Set.SetData storage pointer) view returns (uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 386,
                                  "type": "struct NoRemovalBytes32Set.SetData storage ref",
                                  "value": "voteIdSet"
                                },
                                "id": 499,
                                "name": "Identifier",
                                "src": "2563:9:4"
                              }
                            ],
                            "id": 500,
                            "name": "MemberAccess",
                            "src": "2563:14:4"
                          }
                        ],
                        "id": 501,
                        "name": "FunctionCall",
                        "src": "2563:16:4"
                      }
                    ],
                    "id": 502,
                    "name": "Return",
                    "src": "2556:23:4"
                  }
                ],
                "id": 503,
                "name": "Block",
                "src": "2546:40:4"
              }
            ],
            "id": 504,
            "name": "FunctionDefinition",
            "src": "2488:98:4"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "getVoteAt",
              "payable": false,
              "scope": 614,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "index",
                      "scope": 519,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 505,
                        "name": "ElementaryTypeName",
                        "src": "2675:7:4"
                      }
                    ],
                    "id": 506,
                    "name": "VariableDeclaration",
                    "src": "2675:13:4"
                  }
                ],
                "id": 507,
                "name": "ParameterList",
                "src": "2674:15:4"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 519,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "string memory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "string",
                          "type": "string storage pointer"
                        },
                        "id": 508,
                        "name": "ElementaryTypeName",
                        "src": "2715:6:4"
                      }
                    ],
                    "id": 509,
                    "name": "VariableDeclaration",
                    "src": "2715:6:4"
                  }
                ],
                "id": 510,
                "name": "ParameterList",
                "src": "2714:8:4"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 510
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "string storage ref"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 402,
                              "type": "mapping(bytes32 => string storage ref)",
                              "value": "votes"
                            },
                            "id": 511,
                            "name": "Identifier",
                            "src": "2740:5:4"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bytes32",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "getAt",
                                  "referencedDeclaration": 1949,
                                  "type": "function (struct NoRemovalBytes32Set.SetData storage pointer,uint256) view returns (bytes32)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 386,
                                      "type": "struct NoRemovalBytes32Set.SetData storage ref",
                                      "value": "voteIdSet"
                                    },
                                    "id": 512,
                                    "name": "Identifier",
                                    "src": "2746:9:4"
                                  }
                                ],
                                "id": 513,
                                "name": "MemberAccess",
                                "src": "2746:15:4"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 506,
                                  "type": "uint256",
                                  "value": "index"
                                },
                                "id": 514,
                                "name": "Identifier",
                                "src": "2762:5:4"
                              }
                            ],
                            "id": 515,
                            "name": "FunctionCall",
                            "src": "2746:22:4"
                          }
                        ],
                        "id": 516,
                        "name": "IndexAccess",
                        "src": "2740:29:4"
                      }
                    ],
                    "id": 517,
                    "name": "Return",
                    "src": "2733:36:4"
                  }
                ],
                "id": 518,
                "name": "Block",
                "src": "2723:53:4"
              }
            ],
            "id": 519,
            "name": "FunctionDefinition",
            "src": "2656:120:4"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "name": "castVote",
              "payable": false,
              "scope": 614,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "voteId",
                      "scope": 569,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 520,
                        "name": "ElementaryTypeName",
                        "src": "2827:7:4"
                      }
                    ],
                    "id": 521,
                    "name": "VariableDeclaration",
                    "src": "2827:14:4"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "vote",
                      "scope": 569,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "string memory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "string",
                          "type": "string storage pointer"
                        },
                        "id": 522,
                        "name": "ElementaryTypeName",
                        "src": "2851:6:4"
                      }
                    ],
                    "id": 523,
                    "name": "VariableDeclaration",
                    "src": "2851:11:4"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "passphrase",
                      "scope": 569,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "string memory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "string",
                          "type": "string storage pointer"
                        },
                        "id": 524,
                        "name": "ElementaryTypeName",
                        "src": "2872:6:4"
                      }
                    ],
                    "id": 525,
                    "name": "VariableDeclaration",
                    "src": "2872:17:4"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "jti",
                      "scope": 569,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 526,
                        "name": "ElementaryTypeName",
                        "src": "2899:7:4"
                      }
                    ],
                    "id": 527,
                    "name": "VariableDeclaration",
                    "src": "2899:11:4"
                  }
                ],
                "id": 528,
                "name": "ParameterList",
                "src": "2817:94:4"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 539,
                "name": "ParameterList",
                "src": "2984:0:4"
              },
              {
                "attributes": {
                  "arguments": [
                    null
                  ]
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 2058,
                      "type": "modifier ()",
                      "value": "voting"
                    },
                    "id": 529,
                    "name": "Identifier",
                    "src": "2919:6:4"
                  }
                ],
                "id": 530,
                "name": "ModifierInvocation",
                "src": "2919:6:4"
              },
              {
                "attributes": {
                  "arguments": [
                    null
                  ]
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 455,
                      "type": "modifier ()",
                      "value": "onlyGateway"
                    },
                    "id": 531,
                    "name": "Identifier",
                    "src": "2926:11:4"
                  }
                ],
                "id": 532,
                "name": "ModifierInvocation",
                "src": "2926:11:4"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 482,
                      "type": "modifier (bytes32)",
                      "value": "notDuplicate"
                    },
                    "id": 533,
                    "name": "Identifier",
                    "src": "2938:12:4"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 521,
                      "type": "bytes32",
                      "value": "voteId"
                    },
                    "id": 534,
                    "name": "Identifier",
                    "src": "2951:6:4"
                  }
                ],
                "id": 535,
                "name": "ModifierInvocation",
                "src": "2938:20:4"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 468,
                      "type": "modifier (bytes32)",
                      "value": "notDuplicateJti"
                    },
                    "id": 536,
                    "name": "Identifier",
                    "src": "2959:15:4"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 527,
                      "type": "bytes32",
                      "value": "jti"
                    },
                    "id": 537,
                    "name": "Identifier",
                    "src": "2975:3:4"
                  }
                ],
                "id": 538,
                "name": "ModifierInvocation",
                "src": "2959:20:4"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 406,
                                  "type": "mapping(bytes32 => bool)",
                                  "value": "jtiMap"
                                },
                                "id": 540,
                                "name": "Identifier",
                                "src": "2994:6:4"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 527,
                                  "type": "bytes32",
                                  "value": "jti"
                                },
                                "id": 541,
                                "name": "Identifier",
                                "src": "3001:3:4"
                              }
                            ],
                            "id": 542,
                            "name": "IndexAccess",
                            "src": "2994:11:4"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "74727565",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "bool",
                              "type": "bool",
                              "value": "true"
                            },
                            "id": 543,
                            "name": "Literal",
                            "src": "3008:4:4"
                          }
                        ],
                        "id": 544,
                        "name": "Assignment",
                        "src": "2994:18:4"
                      }
                    ],
                    "id": 545,
                    "name": "ExpressionStatement",
                    "src": "2994:18:4"
                  },
                  {
                    "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": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "put",
                              "referencedDeclaration": 2007,
                              "type": "function (struct NoRemovalBytes32Set.SetData storage pointer,bytes32)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 386,
                                  "type": "struct NoRemovalBytes32Set.SetData storage ref",
                                  "value": "voteIdSet"
                                },
                                "id": 546,
                                "name": "Identifier",
                                "src": "3022:9:4"
                              }
                            ],
                            "id": 548,
                            "name": "MemberAccess",
                            "src": "3022:13:4"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 521,
                              "type": "bytes32",
                              "value": "voteId"
                            },
                            "id": 549,
                            "name": "Identifier",
                            "src": "3036:6:4"
                          }
                        ],
                        "id": 550,
                        "name": "FunctionCall",
                        "src": "3022:21:4"
                      }
                    ],
                    "id": 551,
                    "name": "ExpressionStatement",
                    "src": "3022:21:4"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "string storage ref"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "type": "string storage ref"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 402,
                                  "type": "mapping(bytes32 => string storage ref)",
                                  "value": "votes"
                                },
                                "id": 552,
                                "name": "Identifier",
                                "src": "3053:5:4"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 521,
                                  "type": "bytes32",
                                  "value": "voteId"
                                },
                                "id": 553,
                                "name": "Identifier",
                                "src": "3059:6:4"
                              }
                            ],
                            "id": 554,
                            "name": "IndexAccess",
                            "src": "3053:13:4"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 523,
                              "type": "string memory",
                              "value": "vote"
                            },
                            "id": 555,
                            "name": "Identifier",
                            "src": "3069:4:4"
                          }
                        ],
                        "id": 556,
                        "name": "Assignment",
                        "src": "3053:20:4"
                      }
                    ],
                    "id": 557,
                    "name": "ExpressionStatement",
                    "src": "3053:20:4"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "deductVote",
                              "referencedDeclaration": 370,
                              "type": "function () external"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "contract BaseElection",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 371,
                                      "type": "type(contract BaseElection)",
                                      "value": "BaseElection"
                                    },
                                    "id": 558,
                                    "name": "Identifier",
                                    "src": "3083:12:4"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 388,
                                      "type": "address",
                                      "value": "election"
                                    },
                                    "id": 559,
                                    "name": "Identifier",
                                    "src": "3096:8:4"
                                  }
                                ],
                                "id": 560,
                                "name": "FunctionCall",
                                "src": "3083:22:4"
                              }
                            ],
                            "id": 561,
                            "name": "MemberAccess",
                            "src": "3083:33:4"
                          }
                        ],
                        "id": 562,
                        "name": "FunctionCall",
                        "src": "3083:35:4"
                      }
                    ],
                    "id": 563,
                    "name": "ExpressionStatement",
                    "src": "3083:35:4"
                  },
                  {
                    "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"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 394,
                              "type": "function (bytes32)",
                              "value": "Vote"
                            },
                            "id": 564,
                            "name": "Identifier",
                            "src": "3128:4:4"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 521,
                              "type": "bytes32",
                              "value": "voteId"
                            },
                            "id": 565,
                            "name": "Identifier",
                            "src": "3133:6:4"
                          }
                        ],
                        "id": 566,
                        "name": "FunctionCall",
                        "src": "3128:12:4"
                      }
                    ],
                    "id": 567,
                    "name": "ExpressionStatement",
                    "src": "3128:12:4"
                  }
                ],
                "id": 568,
                "name": "Block",
                "src": "2984:163:4"
              }
            ],
            "id": 569,
            "name": "FunctionDefinition",
            "src": "2800:347:4"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "name": "updateVote",
              "payable": false,
              "scope": 614,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "voteId",
                      "scope": 613,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 570,
                        "name": "ElementaryTypeName",
                        "src": "3239:7:4"
                      }
                    ],
                    "id": 571,
                    "name": "VariableDeclaration",
                    "src": "3239:14:4"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "vote",
                      "scope": 613,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "string memory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "string",
                          "type": "string storage pointer"
                        },
                        "id": 572,
                        "name": "ElementaryTypeName",
                        "src": "3263:6:4"
                      }
                    ],
                    "id": 573,
                    "name": "VariableDeclaration",
                    "src": "3263:11:4"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "passphrase",
                      "scope": 613,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "string memory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "string",
                          "type": "string storage pointer"
                        },
                        "id": 574,
                        "name": "ElementaryTypeName",
                        "src": "3284:6:4"
                      }
                    ],
                    "id": 575,
                    "name": "VariableDeclaration",
                    "src": "3284:17:4"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "jti",
                      "scope": 613,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 576,
                        "name": "ElementaryTypeName",
                        "src": "3311:7:4"
                      }
                    ],
                    "id": 577,
                    "name": "VariableDeclaration",
                    "src": "3311:11:4"
                  }
                ],
                "id": 578,
                "name": "ParameterList",
                "src": "3229:94:4"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 588,
                "name": "ParameterList",
                "src": "3390:0:4"
              },
              {
                "attributes": {
                  "arguments": [
                    null
                  ]
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 2058,
                      "type": "modifier ()",
                      "value": "voting"
                    },
                    "id": 579,
                    "name": "Identifier",
                    "src": "3331:6:4"
                  }
                ],
                "id": 580,
                "name": "ModifierInvocation",
                "src": "3331:6:4"
              },
              {
                "attributes": {
                  "arguments": [
                    null
                  ]
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 455,
                      "type": "modifier ()",
                      "value": "onlyGateway"
                    },
                    "id": 581,
                    "name": "Identifier",
                    "src": "3338:11:4"
                  }
                ],
                "id": 582,
                "name": "ModifierInvocation",
                "src": "3338:11:4"
              },
              {
                "attributes": {
                  "arguments": [
                    null
                  ]
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 494,
                      "type": "modifier ()",
                      "value": "updatesAllowed"
                    },
                    "id": 583,
                    "name": "Identifier",
                    "src": "3350:14:4"
                  }
                ],
                "id": 584,
                "name": "ModifierInvocation",
                "src": "3350:14:4"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 468,
                      "type": "modifier (bytes32)",
                      "value": "notDuplicateJti"
                    },
                    "id": 585,
                    "name": "Identifier",
                    "src": "3365:15:4"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 577,
                      "type": "bytes32",
                      "value": "jti"
                    },
                    "id": 586,
                    "name": "Identifier",
                    "src": "3381:3:4"
                  }
                ],
                "id": 587,
                "name": "ModifierInvocation",
                "src": "3365:20:4"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3241,
                              "type": "function (bool) pure",
                              "value": "require"
                            },
                            "id": 589,
                            "name": "Identifier",
                            "src": "3400:7:4"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bool",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "contains",
                                  "referencedDeclaration": 1964,
                                  "type": "function (struct NoRemovalBytes32Set.SetData storage pointer,bytes32) view returns (bool)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 386,
                                      "type": "struct NoRemovalBytes32Set.SetData storage ref",
                                      "value": "voteIdSet"
                                    },
                                    "id": 590,
                                    "name": "Identifier",
                                    "src": "3408:9:4"
                                  }
                                ],
                                "id": 591,
                                "name": "MemberAccess",
                                "src": "3408:18:4"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 571,
                                  "type": "bytes32",
                                  "value": "voteId"
                                },
                                "id": 592,
                                "name": "Identifier",
                                "src": "3427:6:4"
                              }
                            ],
                            "id": 593,
                            "name": "FunctionCall",
                            "src": "3408:26:4"
                          }
                        ],
                        "id": 594,
                        "name": "FunctionCall",
                        "src": "3400:35:4"
                      }
                    ],
                    "id": 595,
                    "name": "ExpressionStatement",
                    "src": "3400:35:4"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 406,
                                  "type": "mapping(bytes32 => bool)",
                                  "value": "jtiMap"
                                },
                                "id": 596,
                                "name": "Identifier",
                                "src": "3445:6:4"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 577,
                                  "type": "bytes32",
                                  "value": "jti"
                                },
                                "id": 597,
                                "name": "Identifier",
                                "src": "3452:3:4"
                              }
                            ],
                            "id": 598,
                            "name": "IndexAccess",
                            "src": "3445:11:4"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "74727565",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "bool",
                              "type": "bool",
                              "value": "true"
                            },
                            "id": 599,
                            "name": "Literal",
                            "src": "3459:4:4"
                          }
                        ],
                        "id": 600,
                        "name": "Assignment",
                        "src": "3445:18:4"
                      }
                    ],
                    "id": 601,
                    "name": "ExpressionStatement",
                    "src": "3445:18:4"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "string storage ref"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "type": "string storage ref"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 402,
                                  "type": "mapping(bytes32 => string storage ref)",
                                  "value": "votes"
                                },
                                "id": 602,
                                "name": "Identifier",
                                "src": "3473:5:4"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 571,
                                  "type": "bytes32",
                                  "value": "voteId"
                                },
                                "id": 603,
                                "name": "Identifier",
                                "src": "3479:6:4"
                              }
                            ],
                            "id": 604,
                            "name": "IndexAccess",
                            "src": "3473:13:4"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 573,
                              "type": "string memory",
                              "value": "vote"
                            },
                            "id": 605,
                            "name": "Identifier",
                            "src": "3489:4:4"
                          }
                        ],
                        "id": 606,
                        "name": "Assignment",
                        "src": "3473:20:4"
                      }
                    ],
                    "id": 607,
                    "name": "ExpressionStatement",
                    "src": "3473:20:4"
                  },
                  {
                    "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"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 398,
                              "type": "function (bytes32)",
                              "value": "UpdateVote"
                            },
                            "id": 608,
                            "name": "Identifier",
                            "src": "3503:10:4"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 571,
                              "type": "bytes32",
                              "value": "voteId"
                            },
                            "id": 609,
                            "name": "Identifier",
                            "src": "3514:6:4"
                          }
                        ],
                        "id": 610,
                        "name": "FunctionCall",
                        "src": "3503:18:4"
                      }
                    ],
                    "id": 611,
                    "name": "ExpressionStatement",
                    "src": "3503:18:4"
                  }
                ],
                "id": 612,
                "name": "Block",
                "src": "3390:138:4"
              }
            ],
            "id": 613,
            "name": "FunctionDefinition",
            "src": "3210:318:4"
          }
        ],
        "id": 614,
        "name": "ContractDefinition",
        "src": "1215:2315:4"
      }
    ],
    "id": 615,
    "name": "SourceUnit",
    "src": "868:2662:4"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.18+commit.9cf6e910.Emscripten.clang"
  },
  "networks": {
    "3": {
      "events": {},
      "links": {
        "AddressSet": "0xab6f805fb7754d19f82eb8fce07cf70f10c7a620",
        "NoRemovalBytes32Set": "0x486f7a37b62c7247beabbc1f9d451da04a9c585a"
      }
    }
  },
  "schemaVersion": "1.0.1",
  "updatedAt": "2018-03-26T15:57:59.466Z"
}