{
  "contractName": "BallotRegistry",
  "abi": [
    {
      "constant": false,
      "inputs": [],
      "name": "activate",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "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": false,
      "inputs": [],
      "name": "abort",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "close",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "removeSelf",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "addr",
          "type": "address"
        }
      ],
      "name": "addAdmin",
      "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": "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": "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": "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"
    },
    {
      "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": "0x60606040526002805461ffff1916905560008054600160a060020a03191633600160a060020a0316178155610ad490819061003a90396000f3006060604052600436106101035763ffffffff60e060020a6000350416630f15f4c08114610108578063138b1fa01461011d5780631785f53c1461015057806324d7806c1461016f578063265050b61461018e57806335a063b4146101c557806343d726d6146101d85780635e898dac146101eb57806370480275146101fe5780638da5cb5b1461021d578063a4e2d6341461024c578063a69df4b51461025f578063b474149514610272578063c2b6b58c14610297578063d71c6772146102aa578063db30eafb146102c9578063f098fe47146102e8578063f2fde38b146102fb578063f83d08ba1461031a578063f8c74afa1461032d578063f9d5ee751461034c575b600080fd5b341561011357600080fd5b61011b610362565b005b341561012857600080fd5b61013c600160a060020a03600435166103fb565b604051901515815260200160405180910390f35b341561015b57600080fd5b61011b600160a060020a0360043516610484565b341561017a57600080fd5b61013c600160a060020a03600435166104c0565b341561019957600080fd5b6101a161050f565b604051808260038111156101b157fe5b60ff16815260200191505060405180910390f35b34156101d057600080fd5b61011b61051d565b34156101e357600080fd5b61011b61056e565b34156101f657600080fd5b61011b6105f4565b341561020957600080fd5b61011b600160a060020a036004351661062a565b341561022857600080fd5b61023061066c565b604051600160a060020a03909116815260200160405180910390f35b341561025757600080fd5b61013c61067b565b341561026a57600080fd5b61011b610684565b341561027d57600080fd5b6102856106e1565b60405190815260200160405180910390f35b34156102a257600080fd5b61013c61075a565b34156102b557600080fd5b61011b600160a060020a0360043516610779565b34156102d457600080fd5b610285600160a060020a0360043516610838565b34156102f357600080fd5b61013c6108a1565b341561030657600080fd5b61011b600160a060020a03600435166108a6565b341561032557600080fd5b61011b610941565b341561033857600080fd5b61011b600160a060020a03600435166109a0565b341561035757600080fd5b610230600435610a48565b61036a61067b565b15801561038c57506000600254610100900460ff16600381111561038a57fe5b145b151561039757600080fd5b6103a0336104c0565b15156103ab57600080fd5b6103b36108a1565b15156103be57600080fd5b6002805461ff0019166101001790557fed1cd0670ee0c0017f550451a038818c696d0b6a9d6ce5b369e44275573cf9b060405160405180910390a1565b600073__AddressSet____________________________63758241e0600384846040516020015260405160e060020a63ffffffff85160281526004810192909252600160a060020a0316602482015260440160206040518083038186803b151561046457600080fd5b6102c65a03f4151561047557600080fd5b50505060405180519392505050565b60005433600160a060020a0390811691161461049f57600080fd5b600160a060020a03166000908152600160205260409020805460ff19169055565b6000600160a060020a038216158015906105095750600054600160a060020a03838116911614806105095750600160a060020a03821660009081526001602052604090205460ff165b92915050565b600254610100900460ff1681565b610526336104c0565b151561053157600080fd5b6002805461ff0019166103001790557f72c874aeff0b183a56e2b79c71b46e1aed4dee5e09862134b8821ba2fddbf8bf60405160405180910390a1565b61057661067b565b15801561059857506001600254610100900460ff16600381111561059657fe5b145b15156105a357600080fd5b6105ac336104c0565b15156105b757600080fd5b6002805461ff0019166102001790557f1cdde67b72a90f19919ac732a437ac2f7a10fc128d28c2a6e525d89ce5cd9d3a60405160405180910390a1565b6105fd336104c0565b151561060857600080fd5b600160a060020a0333166000908152600160205260409020805460ff19169055565b60005433600160a060020a0390811691161461064557600080fd5b600160a060020a03166000908152600160208190526040909120805460ff19169091179055565b600054600160a060020a031681565b60025460ff1690565b61068d336104c0565b151561069857600080fd5b60025460ff1615156106a957600080fd5b6002805460ff191690557f19aad37188a1d3921e29eb3c66acf43d81975e107cb650d58cca878627955fd660405160405180910390a1565b600073__AddressSet____________________________63913aa6cd6003836040516020015260405160e060020a63ffffffff8416028152600481019190915260240160206040518083038186803b151561073b57600080fd5b6102c65a03f4151561074c57600080fd5b505050604051805191505090565b600060028054610100900460ff16600381111561077357fe5b14905090565b61078161067b565b1580156107a357506000600254610100900460ff1660038111156107a157fe5b145b15156107ae57600080fd5b6107b7336104c0565b15156107c257600080fd5b73__AddressSet____________________________63e134066a60038360405160e060020a63ffffffff85160281526004810192909252600160a060020a0316602482015260440160006040518083038186803b151561082157600080fd5b6102c65a03f4151561083257600080fd5b50505050565b600073__AddressSet____________________________6318c40249600384846040516020015260405160e060020a63ffffffff85160281526004810192909252600160a060020a0316602482015260440160206040518083038186803b151561046457600080fd5b600190565b60005433600160a060020a039081169116146108c157600080fd5b600160a060020a03811615156108d657600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b61094a336104c0565b151561095557600080fd5b60025460ff161561096557600080fd5b6002805460ff191660011790557f0f2e5b6c72c6a4491efd919a9f9a409f324ef0708c11ee57d410c2cb06c0992b60405160405180910390a1565b6109a861067b565b1580156109ca57506000600254610100900460ff1660038111156109c857fe5b145b15156109d557600080fd5b6109de336104c0565b15156109e957600080fd5b73__AddressSet____________________________63f9802f8560038360405160e060020a63ffffffff85160281526004810192909252600160a060020a0316602482015260440160006040518083038186803b151561082157600080fd5b600073__AddressSet____________________________635c2125a7600384846040516020015260405160e060020a63ffffffff85160281526004810192909252602482015260440160206040518083038186803b151561046457600080fd00a165627a7a72305820515dc97e0920e5e29b28f92977afc5a43c2bb38253609f9cd91619446b1cfbbf0029",
  "deployedBytecode": "0x6060604052600436106101035763ffffffff60e060020a6000350416630f15f4c08114610108578063138b1fa01461011d5780631785f53c1461015057806324d7806c1461016f578063265050b61461018e57806335a063b4146101c557806343d726d6146101d85780635e898dac146101eb57806370480275146101fe5780638da5cb5b1461021d578063a4e2d6341461024c578063a69df4b51461025f578063b474149514610272578063c2b6b58c14610297578063d71c6772146102aa578063db30eafb146102c9578063f098fe47146102e8578063f2fde38b146102fb578063f83d08ba1461031a578063f8c74afa1461032d578063f9d5ee751461034c575b600080fd5b341561011357600080fd5b61011b610362565b005b341561012857600080fd5b61013c600160a060020a03600435166103fb565b604051901515815260200160405180910390f35b341561015b57600080fd5b61011b600160a060020a0360043516610484565b341561017a57600080fd5b61013c600160a060020a03600435166104c0565b341561019957600080fd5b6101a161050f565b604051808260038111156101b157fe5b60ff16815260200191505060405180910390f35b34156101d057600080fd5b61011b61051d565b34156101e357600080fd5b61011b61056e565b34156101f657600080fd5b61011b6105f4565b341561020957600080fd5b61011b600160a060020a036004351661062a565b341561022857600080fd5b61023061066c565b604051600160a060020a03909116815260200160405180910390f35b341561025757600080fd5b61013c61067b565b341561026a57600080fd5b61011b610684565b341561027d57600080fd5b6102856106e1565b60405190815260200160405180910390f35b34156102a257600080fd5b61013c61075a565b34156102b557600080fd5b61011b600160a060020a0360043516610779565b34156102d457600080fd5b610285600160a060020a0360043516610838565b34156102f357600080fd5b61013c6108a1565b341561030657600080fd5b61011b600160a060020a03600435166108a6565b341561032557600080fd5b61011b610941565b341561033857600080fd5b61011b600160a060020a03600435166109a0565b341561035757600080fd5b610230600435610a48565b61036a61067b565b15801561038c57506000600254610100900460ff16600381111561038a57fe5b145b151561039757600080fd5b6103a0336104c0565b15156103ab57600080fd5b6103b36108a1565b15156103be57600080fd5b6002805461ff0019166101001790557fed1cd0670ee0c0017f550451a038818c696d0b6a9d6ce5b369e44275573cf9b060405160405180910390a1565b600073__AddressSet____________________________63758241e0600384846040516020015260405160e060020a63ffffffff85160281526004810192909252600160a060020a0316602482015260440160206040518083038186803b151561046457600080fd5b6102c65a03f4151561047557600080fd5b50505060405180519392505050565b60005433600160a060020a0390811691161461049f57600080fd5b600160a060020a03166000908152600160205260409020805460ff19169055565b6000600160a060020a038216158015906105095750600054600160a060020a03838116911614806105095750600160a060020a03821660009081526001602052604090205460ff165b92915050565b600254610100900460ff1681565b610526336104c0565b151561053157600080fd5b6002805461ff0019166103001790557f72c874aeff0b183a56e2b79c71b46e1aed4dee5e09862134b8821ba2fddbf8bf60405160405180910390a1565b61057661067b565b15801561059857506001600254610100900460ff16600381111561059657fe5b145b15156105a357600080fd5b6105ac336104c0565b15156105b757600080fd5b6002805461ff0019166102001790557f1cdde67b72a90f19919ac732a437ac2f7a10fc128d28c2a6e525d89ce5cd9d3a60405160405180910390a1565b6105fd336104c0565b151561060857600080fd5b600160a060020a0333166000908152600160205260409020805460ff19169055565b60005433600160a060020a0390811691161461064557600080fd5b600160a060020a03166000908152600160208190526040909120805460ff19169091179055565b600054600160a060020a031681565b60025460ff1690565b61068d336104c0565b151561069857600080fd5b60025460ff1615156106a957600080fd5b6002805460ff191690557f19aad37188a1d3921e29eb3c66acf43d81975e107cb650d58cca878627955fd660405160405180910390a1565b600073__AddressSet____________________________63913aa6cd6003836040516020015260405160e060020a63ffffffff8416028152600481019190915260240160206040518083038186803b151561073b57600080fd5b6102c65a03f4151561074c57600080fd5b505050604051805191505090565b600060028054610100900460ff16600381111561077357fe5b14905090565b61078161067b565b1580156107a357506000600254610100900460ff1660038111156107a157fe5b145b15156107ae57600080fd5b6107b7336104c0565b15156107c257600080fd5b73__AddressSet____________________________63e134066a60038360405160e060020a63ffffffff85160281526004810192909252600160a060020a0316602482015260440160006040518083038186803b151561082157600080fd5b6102c65a03f4151561083257600080fd5b50505050565b600073__AddressSet____________________________6318c40249600384846040516020015260405160e060020a63ffffffff85160281526004810192909252600160a060020a0316602482015260440160206040518083038186803b151561046457600080fd5b600190565b60005433600160a060020a039081169116146108c157600080fd5b600160a060020a03811615156108d657600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b61094a336104c0565b151561095557600080fd5b60025460ff161561096557600080fd5b6002805460ff191660011790557f0f2e5b6c72c6a4491efd919a9f9a409f324ef0708c11ee57d410c2cb06c0992b60405160405180910390a1565b6109a861067b565b1580156109ca57506000600254610100900460ff1660038111156109c857fe5b145b15156109d557600080fd5b6109de336104c0565b15156109e957600080fd5b73__AddressSet____________________________63f9802f8560038360405160e060020a63ffffffff85160281526004810192909252600160a060020a0316602482015260440160006040518083038186803b151561082157600080fd5b600073__AddressSet____________________________635c2125a7600384846040516020015260405160e060020a63ffffffff85160281526004810192909252602482015260440160206040518083038186803b151561046457600080fd00a165627a7a72305820515dc97e0920e5e29b28f92977afc5a43c2bb38253609f9cd91619446b1cfbbf0029",
  "sourceMap": "1172:775:5:-;;;1183:22:16;;;-1:-1:-1;;1326:59:15;;;-1:-1:-1;494:18:21;;-1:-1:-1;;;;;;494:18:21;502:10;-1:-1:-1;;;;;494:18:21;;;;1172:775:5;;;;;;;;",
  "deployedSourceMap": "1172:775:5:-;;;;;;;;;-1:-1:-1;;;1172:775:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2006:148:15;;;;;;;;;;;;;;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2274:103;;;;;;;;;;;;2160:108;;;;;;;;;;;;1561:84:0;;;;;;;;;;;;1363:91;;;;;;;;;;-1:-1:-1;;;;;1363:91:0;;;;;238:20:21;;;;;;;;;;;;;;;-1:-1:-1;;;;;238:20:21;;;;;;;;;;;;;;1355:84:16;;;;;;;;;;;;1540:92;;;;;;;;;;;;1542:100:5;;;;;;;;;;;;;;;;;;;;;;;;;;;1720:112:15;;;;;;;;;;;;1739:91:5;;;;;;;;;;-1:-1:-1;;;;;1739:91:5;;;;;1304:113;;;;;;;;;;-1:-1:-1;;;;;1304:113:5;;;;;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;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;2274:103::-;1168:19:0;1176:10;1168:7;:19::i;:::-;1160:28;;;;;;;;2314:13:15;:37;;-1:-1:-1;;2314:37:15;;;;;2361:9;;;;;;;;;;2274:103::o;2160:108::-;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;;;;;;;;2223:20:15;2207:36;;-1:-1:-1;;2207:36:15;;;;;2253:8;;;;;;;;;;2160:108::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;1363:91::-;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;238:20:21:-;;;-1:-1:-1;;;;;238:20:21;;:::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;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;;;;;;;;;;;;;;;;;;;;;;;;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;",
  "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 \"../../state/ElectionPhaseable.sol\";\nimport \"../../lib/AddressSet.sol\";\n\n\n/**\n * @title BallotRegistry\n * @dev Hooks for iterating over a list of ballots.  This uses an AddressSet\n * which prevents duplicates and allows for removal.\n * Note: Order is not guaranteed.\n */\ncontract BallotRegistry is ElectionPhaseable {\n    using AddressSet for AddressSet.SetData;\n\n    AddressSet.SetData ballotSet;\n\n    function getBallotIndex(address b) public constant returns (uint256) {\n        return ballotSet.indexOf(b);\n    }\n\n    function getBallot(uint256 index) public constant returns(address) {\n        return ballotSet.getAt(index);\n    }\n\n    function getBallotCount() public constant returns (uint256) {\n        return ballotSet.size();\n    }\n\n    function addBallot(address b) public building admin {\n        ballotSet.put(b);\n    }\n\n    function removeBallot(address b) public building admin {\n        ballotSet.remove(b);\n    }\n\n    function ballotExists(address b) public constant returns (bool) {\n        return ballotSet.contains(b);\n    }\n}",
  "sourcePath": "/Users/slanders/netvote/elections-solidity/contracts/elections/links/BallotRegistry.sol",
  "ast": {
    "attributes": {
      "absolutePath": "/Users/slanders/netvote/elections-solidity/contracts/elections/links/BallotRegistry.sol",
      "exportedSymbols": {
        "BallotRegistry": [
          707
        ]
      }
    },
    "children": [
      {
        "attributes": {
          "literals": [
            "solidity",
            "^",
            "0.4",
            ".17"
          ]
        },
        "id": 616,
        "name": "PragmaDirective",
        "src": "868:24:5"
      },
      {
        "attributes": {
          "SourceUnit": 2130,
          "absolutePath": "/Users/slanders/netvote/elections-solidity/contracts/state/ElectionPhaseable.sol",
          "file": "../../state/ElectionPhaseable.sol",
          "scope": 708,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 617,
        "name": "ImportDirective",
        "src": "894:43:5"
      },
      {
        "attributes": {
          "SourceUnit": 1734,
          "absolutePath": "/Users/slanders/netvote/elections-solidity/contracts/lib/AddressSet.sol",
          "file": "../../lib/AddressSet.sol",
          "scope": 708,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 618,
        "name": "ImportDirective",
        "src": "938:34:5"
      },
      {
        "attributes": {
          "contractDependencies": [
            84,
            2129,
            2197,
            2703
          ],
          "contractKind": "contract",
          "documentation": "@title BallotRegistry\n@dev Hooks for iterating over a list of ballots.  This uses an AddressSet\nwhich prevents duplicates and allows for removal.\nNote: Order is not guaranteed.",
          "fullyImplemented": true,
          "linearizedBaseContracts": [
            707,
            2129,
            2197,
            84,
            2703
          ],
          "name": "BallotRegistry",
          "scope": 708
        },
        "children": [
          {
            "attributes": {
              "arguments": [
                null
              ]
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "ElectionPhaseable",
                  "referencedDeclaration": 2129,
                  "type": "contract ElectionPhaseable"
                },
                "id": 619,
                "name": "UserDefinedTypeName",
                "src": "1199:17:5"
              }
            ],
            "id": 620,
            "name": "InheritanceSpecifier",
            "src": "1199:17:5"
          },
          {
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "AddressSet",
                  "referencedDeclaration": 1733,
                  "type": "library AddressSet"
                },
                "id": 621,
                "name": "UserDefinedTypeName",
                "src": "1229:10:5"
              },
              {
                "attributes": {
                  "contractScope": null,
                  "name": "AddressSet.SetData",
                  "referencedDeclaration": 1556,
                  "type": "struct AddressSet.SetData storage pointer"
                },
                "id": 622,
                "name": "UserDefinedTypeName",
                "src": "1244:18:5"
              }
            ],
            "id": 623,
            "name": "UsingForDirective",
            "src": "1223:40:5"
          },
          {
            "attributes": {
              "constant": false,
              "name": "ballotSet",
              "scope": 707,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "struct AddressSet.SetData storage ref",
              "value": null,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "AddressSet.SetData",
                  "referencedDeclaration": 1556,
                  "type": "struct AddressSet.SetData storage pointer"
                },
                "id": 624,
                "name": "UserDefinedTypeName",
                "src": "1269:18:5"
              }
            ],
            "id": 625,
            "name": "VariableDeclaration",
            "src": "1269:28:5"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "getBallotIndex",
              "payable": false,
              "scope": 707,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "b",
                      "scope": 638,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 626,
                        "name": "ElementaryTypeName",
                        "src": "1328:7:5"
                      }
                    ],
                    "id": 627,
                    "name": "VariableDeclaration",
                    "src": "1328:9:5"
                  }
                ],
                "id": 628,
                "name": "ParameterList",
                "src": "1327:11:5"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 638,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 629,
                        "name": "ElementaryTypeName",
                        "src": "1364:7:5"
                      }
                    ],
                    "id": 630,
                    "name": "VariableDeclaration",
                    "src": "1364:7:5"
                  }
                ],
                "id": 631,
                "name": "ParameterList",
                "src": "1363:9:5"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 631
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "uint256",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "indexOf",
                              "referencedDeclaration": 1571,
                              "type": "function (struct AddressSet.SetData storage pointer,address) view returns (uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 625,
                                  "type": "struct AddressSet.SetData storage ref",
                                  "value": "ballotSet"
                                },
                                "id": 632,
                                "name": "Identifier",
                                "src": "1390:9:5"
                              }
                            ],
                            "id": 633,
                            "name": "MemberAccess",
                            "src": "1390:17:5"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 627,
                              "type": "address",
                              "value": "b"
                            },
                            "id": 634,
                            "name": "Identifier",
                            "src": "1408:1:5"
                          }
                        ],
                        "id": 635,
                        "name": "FunctionCall",
                        "src": "1390:20:5"
                      }
                    ],
                    "id": 636,
                    "name": "Return",
                    "src": "1383:27:5"
                  }
                ],
                "id": 637,
                "name": "Block",
                "src": "1373:44:5"
              }
            ],
            "id": 638,
            "name": "FunctionDefinition",
            "src": "1304:113:5"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "getBallot",
              "payable": false,
              "scope": 707,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "index",
                      "scope": 651,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 639,
                        "name": "ElementaryTypeName",
                        "src": "1442:7:5"
                      }
                    ],
                    "id": 640,
                    "name": "VariableDeclaration",
                    "src": "1442:13:5"
                  }
                ],
                "id": 641,
                "name": "ParameterList",
                "src": "1441:15:5"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 651,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 642,
                        "name": "ElementaryTypeName",
                        "src": "1481:7:5"
                      }
                    ],
                    "id": 643,
                    "name": "VariableDeclaration",
                    "src": "1481:7:5"
                  }
                ],
                "id": 644,
                "name": "ParameterList",
                "src": "1480:9:5"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 644
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "address",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "getAt",
                              "referencedDeclaration": 1586,
                              "type": "function (struct AddressSet.SetData storage pointer,uint256) view returns (address)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 625,
                                  "type": "struct AddressSet.SetData storage ref",
                                  "value": "ballotSet"
                                },
                                "id": 645,
                                "name": "Identifier",
                                "src": "1507:9:5"
                              }
                            ],
                            "id": 646,
                            "name": "MemberAccess",
                            "src": "1507:15:5"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 640,
                              "type": "uint256",
                              "value": "index"
                            },
                            "id": 647,
                            "name": "Identifier",
                            "src": "1523:5:5"
                          }
                        ],
                        "id": 648,
                        "name": "FunctionCall",
                        "src": "1507:22:5"
                      }
                    ],
                    "id": 649,
                    "name": "Return",
                    "src": "1500:29:5"
                  }
                ],
                "id": 650,
                "name": "Block",
                "src": "1490:46:5"
              }
            ],
            "id": 651,
            "name": "FunctionDefinition",
            "src": "1423:113:5"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "getBallotCount",
              "payable": false,
              "scope": 707,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 652,
                "name": "ParameterList",
                "src": "1565:2:5"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 661,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 653,
                        "name": "ElementaryTypeName",
                        "src": "1593:7:5"
                      }
                    ],
                    "id": 654,
                    "name": "VariableDeclaration",
                    "src": "1593:7:5"
                  }
                ],
                "id": 655,
                "name": "ParameterList",
                "src": "1592:9:5"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 655
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "uint256",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "size",
                              "referencedDeclaration": 1613,
                              "type": "function (struct AddressSet.SetData storage pointer) view returns (uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 625,
                                  "type": "struct AddressSet.SetData storage ref",
                                  "value": "ballotSet"
                                },
                                "id": 656,
                                "name": "Identifier",
                                "src": "1619:9:5"
                              }
                            ],
                            "id": 657,
                            "name": "MemberAccess",
                            "src": "1619:14:5"
                          }
                        ],
                        "id": 658,
                        "name": "FunctionCall",
                        "src": "1619:16:5"
                      }
                    ],
                    "id": 659,
                    "name": "Return",
                    "src": "1612:23:5"
                  }
                ],
                "id": 660,
                "name": "Block",
                "src": "1602:40:5"
              }
            ],
            "id": 661,
            "name": "FunctionDefinition",
            "src": "1542:100:5"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "name": "addBallot",
              "payable": false,
              "scope": 707,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "b",
                      "scope": 677,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 662,
                        "name": "ElementaryTypeName",
                        "src": "1667:7:5"
                      }
                    ],
                    "id": 663,
                    "name": "VariableDeclaration",
                    "src": "1667:9:5"
                  }
                ],
                "id": 664,
                "name": "ParameterList",
                "src": "1666:11:5"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 669,
                "name": "ParameterList",
                "src": "1700:0:5"
              },
              {
                "attributes": {
                  "arguments": [
                    null
                  ]
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 2043,
                      "type": "modifier ()",
                      "value": "building"
                    },
                    "id": 665,
                    "name": "Identifier",
                    "src": "1685:8:5"
                  }
                ],
                "id": 666,
                "name": "ModifierInvocation",
                "src": "1685:8:5"
              },
              {
                "attributes": {
                  "arguments": [
                    null
                  ]
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 19,
                      "type": "modifier ()",
                      "value": "admin"
                    },
                    "id": 667,
                    "name": "Identifier",
                    "src": "1694:5:5"
                  }
                ],
                "id": 668,
                "name": "ModifierInvocation",
                "src": "1694:5:5"
              },
              {
                "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_address",
                                  "typeString": "address"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "put",
                              "referencedDeclaration": 1656,
                              "type": "function (struct AddressSet.SetData storage pointer,address)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 625,
                                  "type": "struct AddressSet.SetData storage ref",
                                  "value": "ballotSet"
                                },
                                "id": 670,
                                "name": "Identifier",
                                "src": "1710:9:5"
                              }
                            ],
                            "id": 672,
                            "name": "MemberAccess",
                            "src": "1710:13:5"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 663,
                              "type": "address",
                              "value": "b"
                            },
                            "id": 673,
                            "name": "Identifier",
                            "src": "1724:1:5"
                          }
                        ],
                        "id": 674,
                        "name": "FunctionCall",
                        "src": "1710:16:5"
                      }
                    ],
                    "id": 675,
                    "name": "ExpressionStatement",
                    "src": "1710:16:5"
                  }
                ],
                "id": 676,
                "name": "Block",
                "src": "1700:33:5"
              }
            ],
            "id": 677,
            "name": "FunctionDefinition",
            "src": "1648:85:5"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "name": "removeBallot",
              "payable": false,
              "scope": 707,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "b",
                      "scope": 693,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 678,
                        "name": "ElementaryTypeName",
                        "src": "1761:7:5"
                      }
                    ],
                    "id": 679,
                    "name": "VariableDeclaration",
                    "src": "1761:9:5"
                  }
                ],
                "id": 680,
                "name": "ParameterList",
                "src": "1760:11:5"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 685,
                "name": "ParameterList",
                "src": "1794:0:5"
              },
              {
                "attributes": {
                  "arguments": [
                    null
                  ]
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 2043,
                      "type": "modifier ()",
                      "value": "building"
                    },
                    "id": 681,
                    "name": "Identifier",
                    "src": "1779:8:5"
                  }
                ],
                "id": 682,
                "name": "ModifierInvocation",
                "src": "1779:8:5"
              },
              {
                "attributes": {
                  "arguments": [
                    null
                  ]
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 19,
                      "type": "modifier ()",
                      "value": "admin"
                    },
                    "id": 683,
                    "name": "Identifier",
                    "src": "1788:5:5"
                  }
                ],
                "id": 684,
                "name": "ModifierInvocation",
                "src": "1788:5:5"
              },
              {
                "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_address",
                                  "typeString": "address"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "remove",
                              "referencedDeclaration": 1732,
                              "type": "function (struct AddressSet.SetData storage pointer,address)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 625,
                                  "type": "struct AddressSet.SetData storage ref",
                                  "value": "ballotSet"
                                },
                                "id": 686,
                                "name": "Identifier",
                                "src": "1804:9:5"
                              }
                            ],
                            "id": 688,
                            "name": "MemberAccess",
                            "src": "1804:16:5"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 679,
                              "type": "address",
                              "value": "b"
                            },
                            "id": 689,
                            "name": "Identifier",
                            "src": "1821:1:5"
                          }
                        ],
                        "id": 690,
                        "name": "FunctionCall",
                        "src": "1804:19:5"
                      }
                    ],
                    "id": 691,
                    "name": "ExpressionStatement",
                    "src": "1804:19:5"
                  }
                ],
                "id": 692,
                "name": "Block",
                "src": "1794:36:5"
              }
            ],
            "id": 693,
            "name": "FunctionDefinition",
            "src": "1739:91:5"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "ballotExists",
              "payable": false,
              "scope": 707,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "b",
                      "scope": 706,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 694,
                        "name": "ElementaryTypeName",
                        "src": "1858:7:5"
                      }
                    ],
                    "id": 695,
                    "name": "VariableDeclaration",
                    "src": "1858:9:5"
                  }
                ],
                "id": 696,
                "name": "ParameterList",
                "src": "1857:11:5"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 706,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 697,
                        "name": "ElementaryTypeName",
                        "src": "1894:4:5"
                      }
                    ],
                    "id": 698,
                    "name": "VariableDeclaration",
                    "src": "1894:4:5"
                  }
                ],
                "id": 699,
                "name": "ParameterList",
                "src": "1893:6:5"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 699
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bool",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "contains",
                              "referencedDeclaration": 1601,
                              "type": "function (struct AddressSet.SetData storage pointer,address) view returns (bool)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 625,
                                  "type": "struct AddressSet.SetData storage ref",
                                  "value": "ballotSet"
                                },
                                "id": 700,
                                "name": "Identifier",
                                "src": "1917:9:5"
                              }
                            ],
                            "id": 701,
                            "name": "MemberAccess",
                            "src": "1917:18:5"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 695,
                              "type": "address",
                              "value": "b"
                            },
                            "id": 702,
                            "name": "Identifier",
                            "src": "1936:1:5"
                          }
                        ],
                        "id": 703,
                        "name": "FunctionCall",
                        "src": "1917:21:5"
                      }
                    ],
                    "id": 704,
                    "name": "Return",
                    "src": "1910:28:5"
                  }
                ],
                "id": 705,
                "name": "Block",
                "src": "1900:45:5"
              }
            ],
            "id": 706,
            "name": "FunctionDefinition",
            "src": "1836:109:5"
          }
        ],
        "id": 707,
        "name": "ContractDefinition",
        "src": "1172:775:5"
      }
    ],
    "id": 708,
    "name": "SourceUnit",
    "src": "868:1079:5"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.18+commit.9cf6e910.Emscripten.clang"
  },
  "networks": {
    "3": {
      "events": {},
      "links": {
        "AddressSet": "0xab6f805fb7754d19f82eb8fce07cf70f10c7a620"
      }
    }
  },
  "schemaVersion": "1.0.1",
  "updatedAt": "2018-03-26T15:57:59.456Z"
}