{
  "contractName": "FathomToken",
  "abi": [
    {
      "constant": true,
      "inputs": [],
      "name": "minter",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_spender",
          "type": "address"
        },
        {
          "name": "_value",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "totalSupply",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_from",
          "type": "address"
        },
        {
          "name": "_to",
          "type": "address"
        },
        {
          "name": "_value",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "DECIMALS",
      "outputs": [
        {
          "name": "",
          "type": "uint8"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_spender",
          "type": "address"
        },
        {
          "name": "_subtractedValue",
          "type": "uint256"
        }
      ],
      "name": "decreaseApproval",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_owner",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "conceptRegistry",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "NAME",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_to",
          "type": "address"
        },
        {
          "name": "_value",
          "type": "uint256"
        }
      ],
      "name": "transfer",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_spender",
          "type": "address"
        },
        {
          "name": "_addedValue",
          "type": "uint256"
        }
      ],
      "name": "increaseApproval",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_owner",
          "type": "address"
        },
        {
          "name": "_spender",
          "type": "address"
        }
      ],
      "name": "allowance",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "SYMBOL",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "name": "_conceptRegistry",
          "type": "address"
        },
        {
          "name": "_initialUser",
          "type": "address"
        },
        {
          "name": "_initialBalance",
          "type": "uint256"
        },
        {
          "name": "_minter",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "user",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "assessment",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "topic",
          "type": "uint8"
        }
      ],
      "name": "Notification",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "spender",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Approval",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_user",
          "type": "address"
        },
        {
          "name": "_topic",
          "type": "uint8"
        }
      ],
      "name": "emitNotification",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_from",
          "type": "address"
        },
        {
          "name": "_to",
          "type": "address"
        },
        {
          "name": "_amount",
          "type": "uint256"
        },
        {
          "name": "_concept",
          "type": "address"
        }
      ],
      "name": "takeBalance",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_to",
          "type": "address"
        },
        {
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "mint",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_newMinter",
          "type": "address"
        }
      ],
      "name": "changeMinter",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "destroyTokens",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.5.0+commit.1d4f565a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[],\"name\":\"minter\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_spender\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_amount\",\"type\":\"uint256\"},{\"name\":\"_concept\",\"type\":\"address\"}],\"name\":\"takeBalance\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_newMinter\",\"type\":\"address\"}],\"name\":\"changeMinter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"DECIMALS\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_spender\",\"type\":\"address\"},{\"name\":\"_subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseApproval\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"destroyTokens\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"conceptRegistry\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_user\",\"type\":\"address\"},{\"name\":\"_topic\",\"type\":\"uint8\"}],\"name\":\"emitNotification\",\"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\":\"NAME\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_spender\",\"type\":\"address\"},{\"name\":\"_addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseApproval\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\"},{\"name\":\"_spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"SYMBOL\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"_conceptRegistry\",\"type\":\"address\"},{\"name\":\"_initialUser\",\"type\":\"address\"},{\"name\":\"_initialBalance\",\"type\":\"uint256\"},{\"name\":\"_minter\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"assessment\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"topic\",\"type\":\"uint8\"}],\"name\":\"Notification\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"}],\"devdoc\":{\"methods\":{\"allowance(address,address)\":{\"details\":\"Function to check the amount of tokens that an owner allowed to a spender.\",\"params\":{\"_owner\":\"address The address which owns the funds.\",\"_spender\":\"address The address which will spend the funds.\"},\"return\":\"A uint256 specifying the amount of tokens still available for the spender.\"},\"approve(address,uint256)\":{\"details\":\"Approve the passed address to spend the specified amount of tokens on behalf of msg.sender. Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\",\"params\":{\"_spender\":\"The address which will spend the funds.\",\"_value\":\"The amount of tokens to be spent.\"}},\"balanceOf(address)\":{\"details\":\"Gets the balance of the specified address.\",\"params\":{\"_owner\":\"The address to query the the balance of.\"},\"return\":\"An uint256 representing the amount owned by the passed address.\"},\"decreaseApproval(address,uint256)\":{\"details\":\"Decrease the amount of tokens that an owner allowed to a spender. approve should be called when allowed[_spender] == 0. To decrement allowed value is better to use this function to avoid 2 calls (and wait until the first transaction is mined) From MonolithDAO Token.sol\",\"params\":{\"_spender\":\"The address which will spend the funds.\",\"_subtractedValue\":\"The amount of tokens to decrease the allowance by.\"}},\"increaseApproval(address,uint256)\":{\"details\":\"Increase the amount of tokens that an owner allowed to a spender. approve should be called when allowed[_spender] == 0. To increment allowed value is better to use this function to avoid 2 calls (and wait until the first transaction is mined) From MonolithDAO Token.sol\",\"params\":{\"_addedValue\":\"The amount of tokens to increase the allowance by.\",\"_spender\":\"The address which will spend the funds.\"}},\"totalSupply()\":{\"details\":\"Total number of tokens in existence\"},\"transfer(address,uint256)\":{\"details\":\"Transfer token for a specified address\",\"params\":{\"_to\":\"The address to transfer to.\",\"_value\":\"The amount to be transferred.\"}},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfer tokens from one address to another\",\"params\":{\"_from\":\"address The address which you want to send tokens from\",\"_to\":\"address The address which you want to transfer to\",\"_value\":\"uint256 the amount of tokens to be transferred\"}}}},\"userdoc\":{\"methods\":{\"emitNotification(address,uint8)\":{\"notice\":\"Called by assessments to notify its participants\"},\"mint(address,uint256)\":{\"notice\":\"Called by the minter to create new tokens\"},\"takeBalance(address,address,uint256,address)\":{\"notice\":\"Called by assessments and concepts to withdraw tokens from assessment participants\"}}}},\"settings\":{\"compilationTarget\":{\"/builds/fathom/assess/contracts/contracts/FathomToken.sol\":\"FathomToken\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/builds/fathom/assess/contracts/contracts/Assessment.sol\":{\"keccak256\":\"0x38e344165281f6b705d538b5b1e36c9f2000896abb0e66a0e365009dfcb154ba\",\"urls\":[\"bzzr://6de365b6fcd48d7ecb26877ce7446f74c7116a66c79f97bad235c17324787cdf\"]},\"/builds/fathom/assess/contracts/contracts/AssessmentData.sol\":{\"keccak256\":\"0xda71f848916d4c5c519b9bb0cbd80fff3ebdf66d93205bbd47aa746fb7ea3149\",\"urls\":[\"bzzr://3f315e743c548f163c24067c7e11e1f9783123d02ae96390640b65bb6664443d\"]},\"/builds/fathom/assess/contracts/contracts/AssessmentProxy.sol\":{\"keccak256\":\"0x1ad6915fbc6c7ab4d0c5a3c9fddd262ff1899b80f812ef5ef1d774dfe26dfde2\",\"urls\":[\"bzzr://803ff846e154c773e8e8f0cd69cf7142b1b7d500553f6d1c253efde0d4c51297\"]},\"/builds/fathom/assess/contracts/contracts/Concept.sol\":{\"keccak256\":\"0x89c39768cf2aa6cd14f08b619c9981fbe6140d8ed926003fa72e9a07feb81533\",\"urls\":[\"bzzr://49884001aa3460e710b5d8704b055e282703516ae945469b161edea7a091415c\"]},\"/builds/fathom/assess/contracts/contracts/ConceptData.sol\":{\"keccak256\":\"0xba5f44d67c4d25679f7ce9ae139145bca84f85ea53405ae258d1f6c79f68aef9\",\"urls\":[\"bzzr://614dbf61f171bddf5d29eb27396e012d8dae15d22314652df38a92d1b5a43f5a\"]},\"/builds/fathom/assess/contracts/contracts/ConceptProxy.sol\":{\"keccak256\":\"0xed6cf5d2434e41b7c5feef082320abfc4725347802465516760b6e082bba2fb1\",\"urls\":[\"bzzr://5e9c8a3f8da6ec7ba5eac85b39942d590b69863029310ca8dbecfed477b57cc7\"]},\"/builds/fathom/assess/contracts/contracts/ConceptRegistry.sol\":{\"keccak256\":\"0x37b9ea893f2e3714ed9e386871f16aff98621f6aac2c99214cddf1ddb286462c\",\"urls\":[\"bzzr://fe2531b7de74f5795710a510315edd555d208c8e18c7efbb5c28256aa47386f4\"]},\"/builds/fathom/assess/contracts/contracts/FathomToken.sol\":{\"keccak256\":\"0xd70c8cc96ac35367bebb4ecca938968b4b585ce5ac344540b538b4e08480a4c4\",\"urls\":[\"bzzr://be7d78ab6ae00ed2e18e7df4344cb062c79566e4b94a90502fd567e97b3af9d3\"]},\"/builds/fathom/assess/contracts/contracts/Math.sol\":{\"keccak256\":\"0x0e89dc6b2d825d93107a5c9b32312b94e18cb8e693aa8e0332a8f17d118ba207\",\"urls\":[\"bzzr://2dc75be49f09ed441c84240522225c9ceccc7577d3fad4bb5d39b0666947227c\"]},\"/builds/fathom/assess/contracts/contracts/Minter.sol\":{\"keccak256\":\"0x5c6a9bbd37b0f935ee951bf87fb8f4494555e3e98c99049c51234b383dbcf3a0\",\"urls\":[\"bzzr://a4ef613b4eb19182a63b3375aaedc1a455ce290dc23406c998742f1467a6ce1f\"]},\"/builds/fathom/assess/contracts/contracts/Proxy.sol\":{\"keccak256\":\"0xca112dd4cad6b82624ac9899cbb869884c78cf0a1b08a3efc0767d93f06a1d7c\",\"urls\":[\"bzzr://b4087ee1320cc97a872fb849fd9c7f0b1c2faf43c6b681ddcd77ad705060fcd6\"]},\"/builds/fathom/assess/contracts/contracts/ProxyFactory.sol\":{\"keccak256\":\"0x19e6c1094d0556a918710647e757f878a02750ae61d182aeae8168e864f39725\",\"urls\":[\"bzzr://ec7eeaee9c749149f541e4f61421acb4bd969344a586508a3eee9da67492df06\"]},\"/builds/fathom/assess/contracts/contracts/lib/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x1aad84a4229d5da4b9ffb4433c58b2a91ba9ffbd7b11af0500f9a9795869d865\",\"urls\":[\"bzzr://b8e6b572cd2f7e04b58bf072ec24bbef7914c947e232a390cb8f07ffb1bc8157\"]},\"/builds/fathom/assess/contracts/contracts/lib/openzeppelin-solidity/contracts/token/ERC20/BasicToken.sol\":{\"keccak256\":\"0xc6f4c1d0822f8a8a78e0cb49fdb716acf26a7356109c4dcc6d5836b873e50b2d\",\"urls\":[\"bzzr://7f6656657ed55a5f0836a10b3e8517eddd25c0b9989c78b80a29075c304b20bd\"]},\"/builds/fathom/assess/contracts/contracts/lib/openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xe0490847690823c25e2e258c1f4689b54e6d051f784aca8ef2da8c0789f2be8a\",\"urls\":[\"bzzr://d324bd158255fbdb33d2294fd179a3b0456b72d31c2ba3212b428acfc18dcf88\"]},\"/builds/fathom/assess/contracts/contracts/lib/openzeppelin-solidity/contracts/token/ERC20/ERC20Basic.sol\":{\"keccak256\":\"0x225613675e94acc479c38897f053e94f287a57730bb8a56ccae598074dd4469b\",\"urls\":[\"bzzr://80293b34ebc97ac3a32572451170e70d31c93f896cbd85d249b13362978ea11f\"]},\"/builds/fathom/assess/contracts/contracts/lib/openzeppelin-solidity/contracts/token/ERC20/StandardToken.sol\":{\"keccak256\":\"0x275f9b31e4ad7f868d8bd4a8e85e2bb68d1bed3b28e919e95df08310ff4de93d\",\"urls\":[\"bzzr://4eb59cdd2161bd6e9a02c3f0e735e285723f14963cae565c3543c38ccc3bb47d\"]}},\"version\":1}",
  "bytecode": "0x608060405234801561001057600080fd5b506040516080806113a08339810180604052608081101561003057600080fd5b50805160208083015160408085015160609095015160058054600160a060020a0319908116331790915560038054600160a060020a0397881690831617905560048054928716929091169190911790556001859055921660009081529081905220556112ff806100a16000396000f3fe6080604052600436106101115763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663075461728114610116578063095ea7b31461014757806318160ddd1461019457806323b872dd146101bb57806327234ecc146101fe5780632c4d4d18146102475780632e0f26251461027c57806340c10f19146102a757806366188463146102e057806367fbd2891461031957806370a08231146103435780637654e921146103765780637bb6a0961461038b5780638da5cb5b146103c7578063a3f4df7e146103dc578063a9059cbb14610466578063d73dd6231461049f578063dd62ed3e146104d8578063f2fde38b14610513578063f76f8d7814610546575b600080fd5b34801561012257600080fd5b5061012b61055b565b60408051600160a060020a039092168252519081900360200190f35b34801561015357600080fd5b506101806004803603604081101561016a57600080fd5b50600160a060020a03813516906020013561056a565b604080519115158252519081900360200190f35b3480156101a057600080fd5b506101a96105d0565b60408051918252519081900360200190f35b3480156101c757600080fd5b50610180600480360360608110156101de57600080fd5b50600160a060020a038135811691602081013590911690604001356105d6565b34801561020a57600080fd5b506101806004803603608081101561022157600080fd5b50600160a060020a03813581169160208101358216916040820135916060013516610840565b34801561025357600080fd5b5061027a6004803603602081101561026a57600080fd5b5035600160a060020a0316610b5d565b005b34801561028857600080fd5b50610291610bee565b6040805160ff9092168252519081900360200190f35b3480156102b357600080fd5b50610180600480360360408110156102ca57600080fd5b50600160a060020a038135169060200135610bf3565b3480156102ec57600080fd5b506101806004803603604081101561030357600080fd5b50600160a060020a038135169060200135610d29565b34801561032557600080fd5b5061027a6004803603602081101561033c57600080fd5b5035610e18565b34801561034f57600080fd5b506101a96004803603602081101561036657600080fd5b5035600160a060020a0316610e89565b34801561038257600080fd5b5061012b610ea4565b34801561039757600080fd5b5061027a600480360360408110156103ae57600080fd5b508035600160a060020a0316906020013560ff16610eb3565b3480156103d357600080fd5b5061012b610ef9565b3480156103e857600080fd5b506103f1610f08565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561042b578181015183820152602001610413565b50505050905090810190601f1680156104585780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561047257600080fd5b506101806004803603604081101561048957600080fd5b50600160a060020a038135169060200135610f3f565b3480156104ab57600080fd5b50610180600480360360408110156104c257600080fd5b50600160a060020a0381351690602001356110c8565b3480156104e457600080fd5b506101a9600480360360408110156104fb57600080fd5b50600160a060020a0381358116916020013516611161565b34801561051f57600080fd5b5061027a6004803603602081101561053657600080fd5b5035600160a060020a031661118c565b34801561055257600080fd5b506103f1611257565b600454600160a060020a031681565b336000818152600260209081526040808320600160a060020a038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b60015490565b600160a060020a038316600090815260208190526040812054821115610646576040805160e560020a62461bcd02815260206004820152601560248201527f546f6b656e2062616c616e636520746f6f206c6f770000000000000000000000604482015290519081900360640190fd5b600160a060020a03841660009081526002602090815260408083203384529091529020548211156106c1576040805160e560020a62461bcd02815260206004820152601160248201527f416c6c6f77616e636520746f6f206c6f77000000000000000000000000000000604482015290519081900360640190fd5b600160a060020a0383161515610747576040805160e560020a62461bcd02815260206004820152602260248201527f526563697069656e742061646472657373206d757374206e6f74206265207a6560448201527f726f000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160a060020a038416600090815260208190526040902054610770908363ffffffff61128e16565b600160a060020a0380861660009081526020819052604080822093909355908516815220546107a5908363ffffffff6112a016565b600160a060020a038085166000908152602081815260408083209490945591871681526002825282812033825290915220546107e7908363ffffffff61128e16565b600160a060020a03808616600081815260026020908152604080832033845282529182902094909455805186815290519287169391926000805160206112b4833981519152929181900390910190a35060019392505050565b600354604080517fc18e4679000000000000000000000000000000000000000000000000000000008152600160a060020a0384811660048301529151600093929092169163c18e467991602480820192602092909190829003018186803b1580156108aa57600080fd5b505afa1580156108be573d6000803e3d6000fd5b505050506040513d60208110156108d457600080fd5b5051151561092c576040805160e560020a62461bcd02815260206004820152601660248201527f436f6e6365707420646f6573206e6f7420657869737400000000000000000000604482015290519081900360640190fd5b33600160a060020a03831614610a1d57604080517f21d39c2c0000000000000000000000000000000000000000000000000000000081523360048201529051600160a060020a038416916321d39c2c916024808301926020929190829003018186803b15801561099b57600080fd5b505afa1580156109af573d6000803e3d6000fd5b505050506040513d60208110156109c557600080fd5b50511515610a1d576040805160e560020a62461bcd02815260206004820152601660248201527f4173736573736d656e7420616363657373206f6e6c7900000000000000000000604482015290519081900360640190fd5b600160a060020a038516600090815260208190526040902054831115610a8d576040805160e560020a62461bcd02815260206004820152601560248201527f546f6b656e2062616c616e636520746f6f206c6f770000000000000000000000604482015290519081900360640190fd5b600160a060020a0384166000908152602081905260409020548381011015610aff576040805160e560020a62461bcd02815260206004820152600e60248201527f4f766572666c6f77206572726f72000000000000000000000000000000000000604482015290519081900360640190fd5b600160a060020a0380861660008181526020818152604080832080548990039055938816808352918490208054880190558351878152935191936000805160206112b4833981519152929081900390910190a3506001949350505050565b600554600160a060020a03163314610bbf576040805160e560020a62461bcd02815260206004820152601160248201527f4f776e657220616363657373206f6e6c79000000000000000000000000000000604482015290519081900360640190fd5b6004805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600981565b600454600090600160a060020a03163314610c58576040805160e560020a62461bcd02815260206004820152601260248201527f4d696e74657220616363657373206f6e6c790000000000000000000000000000604482015290519081900360640190fd5b60015482810111610cd9576040805160e560020a62461bcd02815260206004820152602c60248201527f4f766572666c6f77206572726f723a206d6178206e756d626572206f6620746f60448201527f6b656e7320726561636865640000000000000000000000000000000000000000606482015290519081900360840190fd5b6001805483019055600160a060020a038316600081815260208181526040808320805487019055805186815290516000805160206112b4833981519152929181900390910190a350600192915050565b336000908152600260209081526040808320600160a060020a0386168452909152812054808310610d7d57336000908152600260209081526040808320600160a060020a0388168452909152812055610db2565b610d8d818463ffffffff61128e16565b336000908152600260209081526040808320600160a060020a03891684529091529020555b336000818152600260209081526040808320600160a060020a0389168085529083529281902054815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b600154811115610e2757600080fd5b33600090815260208190526040902054811115610e4357600080fd5b6001805482900390553360008181526020818152604080832080548690039055805185815290519293926000805160206112b4833981519152929181900390910190a350565b600160a060020a031660009081526020819052604090205490565b600354600160a060020a031681565b806007811115610ebf57fe5b6040513390600160a060020a038516907f61be7a191fce9c12da97e5ba5978e5d31e3a8374012c731682182c5102faac9d90600090a45050565b600554600160a060020a031681565b60408051808201909152600381527f4168610000000000000000000000000000000000000000000000000000000000602082015281565b33600090815260208190526040812054821115610fa6576040805160e560020a62461bcd02815260206004820152601560248201527f546f6b656e2062616c616e636520746f6f206c6f770000000000000000000000604482015290519081900360640190fd5b600160a060020a038316151561102c576040805160e560020a62461bcd02815260206004820152602260248201527f526563697069656e742061646472657373206d757374206e6f74206265207a6560448201527f726f000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b3360009081526020819052604090205461104c908363ffffffff61128e16565b3360009081526020819052604080822092909255600160a060020a0385168152205461107e908363ffffffff6112a016565b600160a060020a038416600081815260208181526040918290209390935580518581529051919233926000805160206112b48339815191529281900390910190a350600192915050565b336000908152600260209081526040808320600160a060020a03861684529091528120546110fc908363ffffffff6112a016565b336000818152600260209081526040808320600160a060020a0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b600160a060020a03918216600090815260026020908152604080832093909416825291909152205490565b600554600160a060020a031633146111ee576040805160e560020a62461bcd02815260206004820152601160248201527f4f776e657220616363657373206f6e6c79000000000000000000000000000000604482015290519081900360640190fd5b600554604051600160a060020a038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36005805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60408051808201909152600381527f4148410000000000000000000000000000000000000000000000000000000000602082015281565b60008282111561129a57fe5b50900390565b818101828110156112ad57fe5b9291505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a72305820d106e99c0cbc66f35744395a3f63fecc418c53deba03090e20b226ed8bf8a46a0029",
  "deployedBytecode": "0x6080604052600436106101115763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663075461728114610116578063095ea7b31461014757806318160ddd1461019457806323b872dd146101bb57806327234ecc146101fe5780632c4d4d18146102475780632e0f26251461027c57806340c10f19146102a757806366188463146102e057806367fbd2891461031957806370a08231146103435780637654e921146103765780637bb6a0961461038b5780638da5cb5b146103c7578063a3f4df7e146103dc578063a9059cbb14610466578063d73dd6231461049f578063dd62ed3e146104d8578063f2fde38b14610513578063f76f8d7814610546575b600080fd5b34801561012257600080fd5b5061012b61055b565b60408051600160a060020a039092168252519081900360200190f35b34801561015357600080fd5b506101806004803603604081101561016a57600080fd5b50600160a060020a03813516906020013561056a565b604080519115158252519081900360200190f35b3480156101a057600080fd5b506101a96105d0565b60408051918252519081900360200190f35b3480156101c757600080fd5b50610180600480360360608110156101de57600080fd5b50600160a060020a038135811691602081013590911690604001356105d6565b34801561020a57600080fd5b506101806004803603608081101561022157600080fd5b50600160a060020a03813581169160208101358216916040820135916060013516610840565b34801561025357600080fd5b5061027a6004803603602081101561026a57600080fd5b5035600160a060020a0316610b5d565b005b34801561028857600080fd5b50610291610bee565b6040805160ff9092168252519081900360200190f35b3480156102b357600080fd5b50610180600480360360408110156102ca57600080fd5b50600160a060020a038135169060200135610bf3565b3480156102ec57600080fd5b506101806004803603604081101561030357600080fd5b50600160a060020a038135169060200135610d29565b34801561032557600080fd5b5061027a6004803603602081101561033c57600080fd5b5035610e18565b34801561034f57600080fd5b506101a96004803603602081101561036657600080fd5b5035600160a060020a0316610e89565b34801561038257600080fd5b5061012b610ea4565b34801561039757600080fd5b5061027a600480360360408110156103ae57600080fd5b508035600160a060020a0316906020013560ff16610eb3565b3480156103d357600080fd5b5061012b610ef9565b3480156103e857600080fd5b506103f1610f08565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561042b578181015183820152602001610413565b50505050905090810190601f1680156104585780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561047257600080fd5b506101806004803603604081101561048957600080fd5b50600160a060020a038135169060200135610f3f565b3480156104ab57600080fd5b50610180600480360360408110156104c257600080fd5b50600160a060020a0381351690602001356110c8565b3480156104e457600080fd5b506101a9600480360360408110156104fb57600080fd5b50600160a060020a0381358116916020013516611161565b34801561051f57600080fd5b5061027a6004803603602081101561053657600080fd5b5035600160a060020a031661118c565b34801561055257600080fd5b506103f1611257565b600454600160a060020a031681565b336000818152600260209081526040808320600160a060020a038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b60015490565b600160a060020a038316600090815260208190526040812054821115610646576040805160e560020a62461bcd02815260206004820152601560248201527f546f6b656e2062616c616e636520746f6f206c6f770000000000000000000000604482015290519081900360640190fd5b600160a060020a03841660009081526002602090815260408083203384529091529020548211156106c1576040805160e560020a62461bcd02815260206004820152601160248201527f416c6c6f77616e636520746f6f206c6f77000000000000000000000000000000604482015290519081900360640190fd5b600160a060020a0383161515610747576040805160e560020a62461bcd02815260206004820152602260248201527f526563697069656e742061646472657373206d757374206e6f74206265207a6560448201527f726f000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160a060020a038416600090815260208190526040902054610770908363ffffffff61128e16565b600160a060020a0380861660009081526020819052604080822093909355908516815220546107a5908363ffffffff6112a016565b600160a060020a038085166000908152602081815260408083209490945591871681526002825282812033825290915220546107e7908363ffffffff61128e16565b600160a060020a03808616600081815260026020908152604080832033845282529182902094909455805186815290519287169391926000805160206112b4833981519152929181900390910190a35060019392505050565b600354604080517fc18e4679000000000000000000000000000000000000000000000000000000008152600160a060020a0384811660048301529151600093929092169163c18e467991602480820192602092909190829003018186803b1580156108aa57600080fd5b505afa1580156108be573d6000803e3d6000fd5b505050506040513d60208110156108d457600080fd5b5051151561092c576040805160e560020a62461bcd02815260206004820152601660248201527f436f6e6365707420646f6573206e6f7420657869737400000000000000000000604482015290519081900360640190fd5b33600160a060020a03831614610a1d57604080517f21d39c2c0000000000000000000000000000000000000000000000000000000081523360048201529051600160a060020a038416916321d39c2c916024808301926020929190829003018186803b15801561099b57600080fd5b505afa1580156109af573d6000803e3d6000fd5b505050506040513d60208110156109c557600080fd5b50511515610a1d576040805160e560020a62461bcd02815260206004820152601660248201527f4173736573736d656e7420616363657373206f6e6c7900000000000000000000604482015290519081900360640190fd5b600160a060020a038516600090815260208190526040902054831115610a8d576040805160e560020a62461bcd02815260206004820152601560248201527f546f6b656e2062616c616e636520746f6f206c6f770000000000000000000000604482015290519081900360640190fd5b600160a060020a0384166000908152602081905260409020548381011015610aff576040805160e560020a62461bcd02815260206004820152600e60248201527f4f766572666c6f77206572726f72000000000000000000000000000000000000604482015290519081900360640190fd5b600160a060020a0380861660008181526020818152604080832080548990039055938816808352918490208054880190558351878152935191936000805160206112b4833981519152929081900390910190a3506001949350505050565b600554600160a060020a03163314610bbf576040805160e560020a62461bcd02815260206004820152601160248201527f4f776e657220616363657373206f6e6c79000000000000000000000000000000604482015290519081900360640190fd5b6004805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600981565b600454600090600160a060020a03163314610c58576040805160e560020a62461bcd02815260206004820152601260248201527f4d696e74657220616363657373206f6e6c790000000000000000000000000000604482015290519081900360640190fd5b60015482810111610cd9576040805160e560020a62461bcd02815260206004820152602c60248201527f4f766572666c6f77206572726f723a206d6178206e756d626572206f6620746f60448201527f6b656e7320726561636865640000000000000000000000000000000000000000606482015290519081900360840190fd5b6001805483019055600160a060020a038316600081815260208181526040808320805487019055805186815290516000805160206112b4833981519152929181900390910190a350600192915050565b336000908152600260209081526040808320600160a060020a0386168452909152812054808310610d7d57336000908152600260209081526040808320600160a060020a0388168452909152812055610db2565b610d8d818463ffffffff61128e16565b336000908152600260209081526040808320600160a060020a03891684529091529020555b336000818152600260209081526040808320600160a060020a0389168085529083529281902054815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b600154811115610e2757600080fd5b33600090815260208190526040902054811115610e4357600080fd5b6001805482900390553360008181526020818152604080832080548690039055805185815290519293926000805160206112b4833981519152929181900390910190a350565b600160a060020a031660009081526020819052604090205490565b600354600160a060020a031681565b806007811115610ebf57fe5b6040513390600160a060020a038516907f61be7a191fce9c12da97e5ba5978e5d31e3a8374012c731682182c5102faac9d90600090a45050565b600554600160a060020a031681565b60408051808201909152600381527f4168610000000000000000000000000000000000000000000000000000000000602082015281565b33600090815260208190526040812054821115610fa6576040805160e560020a62461bcd02815260206004820152601560248201527f546f6b656e2062616c616e636520746f6f206c6f770000000000000000000000604482015290519081900360640190fd5b600160a060020a038316151561102c576040805160e560020a62461bcd02815260206004820152602260248201527f526563697069656e742061646472657373206d757374206e6f74206265207a6560448201527f726f000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b3360009081526020819052604090205461104c908363ffffffff61128e16565b3360009081526020819052604080822092909255600160a060020a0385168152205461107e908363ffffffff6112a016565b600160a060020a038416600081815260208181526040918290209390935580518581529051919233926000805160206112b48339815191529281900390910190a350600192915050565b336000908152600260209081526040808320600160a060020a03861684529091528120546110fc908363ffffffff6112a016565b336000818152600260209081526040808320600160a060020a0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b600160a060020a03918216600090815260026020908152604080832093909416825291909152205490565b600554600160a060020a031633146111ee576040805160e560020a62461bcd02815260206004820152601160248201527f4f776e657220616363657373206f6e6c79000000000000000000000000000000604482015290519081900360640190fd5b600554604051600160a060020a038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36005805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60408051808201909152600381527f4148410000000000000000000000000000000000000000000000000000000000602082015281565b60008282111561129a57fe5b50900390565b818101828110156112ad57fe5b9291505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a72305820d106e99c0cbc66f35744395a3f63fecc418c53deba03090e20b226ed8bf8a46a0029",
  "sourceMap": "337:3197:8:-;;;1049:324;8:9:-1;5:2;;;30:1;27;20:12;5:2;1049:324:8;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;1049:324:8;;;;;;;;;;;;;;;;;1166:5;:18;;-1:-1:-1;;;;;;1166:18:8;;;1174:10;1166:18;;;;1195:15;:51;;-1:-1:-1;;;;;1195:51:8;;;;;;;;;1257:6;:16;;;;;;;;;;;;;;;1166:18;1284:30;;;1325:22;;1166:5;1325:22;;;;;;;;:40;337:3197;;;;;;",
  "deployedSourceMap": "337:3197:8:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;556:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;556:21:8;;;;;;;;-1:-1:-1;;;;;556:21:8;;;;;;;;;;;;;;1897:188:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1897:188:20;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1897:188:20;;;;;;;;;;;;;;;;;;;;;;;;;;;388:83:17;;8:9:-1;5:2;;;30:1;27;20:12;5:2;388:83:17;;;;;;;;;;;;;;;;;;;;725:554:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;725:554:20;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;725:554:20;;;;;;;;;;;;;;;;;;1679:631:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1679:631:8;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;1679:631:8;;;;;;;;;;;;;;;;;;;;;;;2894:147;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2894:147:8;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2894:147:8;-1:-1:-1;;;;;2894:147:8;;;;;513:34;;8:9:-1;5:2;;;30:1;27;20:12;5:2;513:34:8;;;;;;;;;;;;;;;;;;;;;;;2377:378;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2377:378:8;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2377:378:8;;;;;;;;;3762:432:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3762:432:20;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;3762:432:20;;;;;;;;;3049:271:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3049:271:8;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3049:271:8;;;1211:99:17;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1211:99:17;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1211:99:17;-1:-1:-1;;;;;1211:99:17;;;382:38:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;382:38:8;;;;1447:124;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1447:124:8;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1447:124:8;;-1:-1:-1;;;;;1447:124:8;;;;;;;;;584:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;584:20:8;;;;427:35;;8:9:-1;5:2;;;30:1;27;20:12;5:2;427:35:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;427:35:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;625:384:17;;8:9:-1;5:2;;;30:1;27;20:12;5:2;625:384:17;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;625:384:17;;;;;;;;;3009:296:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3009:296:20;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;3009:296:20;;;;;;;;;2404:153;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2404:153:20;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2404:153:20;;;;;;;;;;;3328:203:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3328:203:8;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3328:203:8;-1:-1:-1;;;;;3328:203:8;;;469:37;;8:9:-1;5:2;;;30:1;27;20:12;5:2;469:37:8;;;;556:21;;;-1:-1:-1;;;;;556:21:8;;:::o;1897:188:20:-;1984:10;1964:4;1976:19;;;:7;:19;;;;;;;;-1:-1:-1;;;;;1976:29:20;;;;;;;;;;;:38;;;2025;;;;;;;1964:4;;1976:29;;1984:10;;2025:38;;;;;;;;-1:-1:-1;2076:4:20;1897:188;;;;:::o;388:83:17:-;454:12;;388:83;:::o;725:554:20:-;-1:-1:-1;;;;;863:15:20;;831:4;863:15;;;;;;;;;;;853:25;;;845:59;;;;;-1:-1:-1;;;;;845:59:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;928:14:20;;;;;;:7;:14;;;;;;;;943:10;928:26;;;;;;;;918:36;;;910:66;;;;;-1:-1:-1;;;;;910:66:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;990:17:20;;;;982:64;;;;;-1:-1:-1;;;;;982:64:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1071:15:20;;:8;:15;;;;;;;;;;;:27;;1091:6;1071:27;:19;:27;:::i;:::-;-1:-1:-1;;;;;1053:15:20;;;:8;:15;;;;;;;;;;;:45;;;;1120:13;;;;;;;:25;;1138:6;1120:25;:17;:25;:::i;:::-;-1:-1:-1;;;;;1104:13:20;;;:8;:13;;;;;;;;;;;:41;;;;1180:14;;;;;:7;:14;;;;;1195:10;1180:26;;;;;;;:38;;1211:6;1180:38;:30;:38;:::i;:::-;-1:-1:-1;;;;;1151:14:20;;;;;;;:7;:14;;;;;;;;1166:10;1151:26;;;;;;;;:67;;;;1229:28;;;;;;;;;;;1151:14;;-1:-1:-1;;;;;;;;;;;1229:28:20;;;;;;;;;;-1:-1:-1;1270:4:20;725:554;;;;;:::o;1679:631:8:-;1800:15;;:39;;;;;;-1:-1:-1;;;;;1800:39:8;;;;;;;;;1775:4;;1800:15;;;;;:29;;:39;;;;;;;;;;;;;;;:15;:39;;;5:2:-1;;;;30:1;27;20:12;5:2;1800:39:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1800:39:8;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1800:39:8;1792:74;;;;;;;-1:-1:-1;;;;;1792:74:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;1881:10;-1:-1:-1;;;;;1881:22:8;;;1877:136;;1928:46;;;;;;1963:10;1928:46;;;;;;-1:-1:-1;;;;;1928:34:8;;;;;:46;;;;;;;;;;;;;;:34;:46;;;5:2:-1;;;;30:1;27;20:12;5:2;1928:46:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1928:46:8;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1928:46:8;1920:81;;;;;;;-1:-1:-1;;;;;1920:81:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2033:15:8;;:8;:15;;;;;;;;;;;:26;-1:-1:-1;2033:26:8;2025:60;;;;;-1:-1:-1;;;;;2025:60:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2131:13:8;;:8;:13;;;;;;;;;;;2104:23;;;:40;;2096:67;;;;;-1:-1:-1;;;;;2096:67:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2174:15:8;;;:8;:15;;;;;;;;;;;:26;;;;;;;2211:13;;;;;;;;;;:24;;;;;;2251:29;;;;;;;2211:13;;-1:-1:-1;;;;;;;;;;;2251:29:8;;;;;;;;;;-1:-1:-1;2298:4:8;1679:631;;;;;;:::o;2894:147::-;2976:5;;-1:-1:-1;;;;;2976:5:8;2962:10;:19;2954:49;;;;;-1:-1:-1;;;;;2954:49:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;3014:6;:19;;-1:-1:-1;;3014:19:8;-1:-1:-1;;;;;3014:19:8;;;;;;;;;;2894:147::o;513:34::-;546:1;513:34;:::o;2377:378::-;2472:6;;2433:4;;-1:-1:-1;;;;;2472:6:8;2458:10;:20;2450:51;;;;;-1:-1:-1;;;;;2450:51:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;2545:12;;2520:22;;;:37;2512:94;;;;;-1:-1:-1;;;;;2512:94:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2617:12;:23;;;;;;-1:-1:-1;;;;;2651:13:8;;2617:12;2651:13;;;;;;;;;;;:24;;;;;;2691:34;;;;;;;-1:-1:-1;;;;;;;;;;;2691:34:8;;;;;;;;;;-1:-1:-1;2743:4:8;2377:378;;;;:::o;3762:432:20:-;3909:10;3868:4;3901:19;;;:7;:19;;;;;;;;-1:-1:-1;;;;;3901:29:20;;;;;;;;;;3940:28;;;3936:165;;3986:10;4010:1;3978:19;;;:7;:19;;;;;;;;-1:-1:-1;;;;;3978:29:20;;;;;;;;;:33;3936:165;;;4064:30;:8;4077:16;4064:30;:12;:30;:::i;:::-;4040:10;4032:19;;;;:7;:19;;;;;;;;-1:-1:-1;;;;;4032:29:20;;;;;;;;;:62;3936:165;4120:10;4142:19;;;;:7;:19;;;;;;;;-1:-1:-1;;;;;4111:61:20;;4142:29;;;;;;;;;;;4111:61;;;;;;;;;4120:10;4111:61;;;;;;;;;;;-1:-1:-1;4185:4:20;;3762:432;-1:-1:-1;;;3762:432:20:o;3049:271:8:-;3110:12;;:23;-1:-1:-1;3110:23:8;3102:32;;;;;;3160:10;3151:8;:20;;;;;;;;;;;:31;-1:-1:-1;3151:31:8;3143:40;;;;;;3192:12;:23;;;;;;;3233:10;3192:12;3224:20;;;;;;;;;;;:31;;;;;;;3269:43;;;;;;;3192:12;;3233:10;-1:-1:-1;;;;;;;;;;;3269:43:8;;;;;;;;;;3049:271;:::o;1211:99:17:-;-1:-1:-1;;;;;1289:16:17;1267:7;1289:16;;;;;;;;;;;;1211:99::o;382:38:8:-;;;-1:-1:-1;;;;;382:38:8;;:::o;1447:124::-;1556:6;1524:39;;;;;;;;;;1544:10;;-1:-1:-1;;;;;1524:39:8;;;;;;;;1447:124;;:::o;584:20::-;;;-1:-1:-1;;;;;584:20:8;;:::o;427:35::-;;;;;;;;;;;;;;;;;;;:::o;625:384:17:-;727:10;688:4;718:20;;;;;;;;;;;708:30;;;700:64;;;;;-1:-1:-1;;;;;700:64:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;778:17:17;;;;770:64;;;;;-1:-1:-1;;;;;770:64:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;873:10;864:8;:20;;;;;;;;;;;:32;;889:6;864:32;:24;:32;:::i;:::-;850:10;841:8;:20;;;;;;;;;;;:55;;;;-1:-1:-1;;;;;918:13:17;;;;;;:25;;936:6;918:25;:17;:25;:::i;:::-;-1:-1:-1;;;;;902:13:17;;:8;:13;;;;;;;;;;;;:41;;;;954:33;;;;;;;902:13;;963:10;;-1:-1:-1;;;;;;;;;;;954:33:17;;;;;;;;;-1:-1:-1;1000:4:17;625:384;;;;:::o;3009:296:20:-;3172:10;3110:4;3164:19;;;:7;:19;;;;;;;;-1:-1:-1;;;;;3164:29:20;;;;;;;;;;:46;;3198:11;3164:46;:33;:46;:::i;:::-;3132:10;3124:19;;;;:7;:19;;;;;;;;-1:-1:-1;;;;;3124:29:20;;;;;;;;;;;;:87;;;3222:61;;;;;;3124:29;;3222:61;;;;;;;;;;;-1:-1:-1;3296:4:20;3009:296;;;;:::o;2404:153::-;-1:-1:-1;;;;;2527:15:20;;;2503:7;2527:15;;;:7;:15;;;;;;;;:25;;;;;;;;;;;;;2404:153::o;3328:203:8:-;3414:5;;-1:-1:-1;;;;;3414:5:8;3400:10;:19;3392:49;;;;;-1:-1:-1;;;;;3392:49:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;3478:5;;3457:38;;-1:-1:-1;;;;;3457:38:8;;;;3478:5;;3457:38;;3478:5;;3457:38;3506:5;:17;;-1:-1:-1;;3506:17:8;-1:-1:-1;;;;;3506:17:8;;;;;;;;;;3328:203::o;469:37::-;;;;;;;;;;;;;;;;;;;:::o;1059:116:16:-;1119:7;1141:8;;;;1134:16;;;;-1:-1:-1;1163:7:16;;;1059:116::o;1237:128::-;1318:7;;;1338;;;;1331:15;;;;1237:128;;;;:::o",
  "source": "pragma solidity ^0.5.0;\r\n\r\nimport \"./Concept.sol\";\r\nimport \"./ConceptRegistry.sol\";\r\nimport \"./lib/openzeppelin-solidity/contracts/token/ERC20/StandardToken.sol\";\r\nimport \"./Minter.sol\";\r\n\r\n\r\n/*\r\n  @notice Network token used to create assessments and stake in them\r\n  @dev Also used to send notifications to assessment participants\r\n*/\r\ncontract FathomToken is StandardToken {\r\n    ConceptRegistry public conceptRegistry;\r\n    string public constant NAME = \"Aha\";\r\n    string public constant SYMBOL = \"AHA\";\r\n    uint8 public constant DECIMALS = 9;\r\n\r\n    address public minter;\r\n    address public owner;\r\n\r\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\r\n    event Notification(address indexed user, address indexed assessment, Note indexed topic);\r\n\r\n    enum Note {\r\n        StartedAnAssessment,\r\n        CalledAsAssessor,\r\n        ConfirmedAsAssessor,\r\n        AssessmentCancelled,\r\n        AssessmentHasBegun,\r\n        RevealScore,\r\n        ConsensusReached,\r\n        AssessmentFinished\r\n    }\r\n\r\n    constructor(address _conceptRegistry, address _initialUser, uint _initialBalance, address _minter) public {\r\n        owner = msg.sender;\r\n        conceptRegistry = ConceptRegistry(_conceptRegistry);\r\n        minter = _minter;\r\n        totalSupply_ = _initialBalance;\r\n        balances[_initialUser] = _initialBalance;\r\n    }\r\n\r\n    /// @notice Called by assessments to notify its participants\r\n    function emitNotification(address _user, Note _topic) public {\r\n        emit Notification(_user, msg.sender, _topic);\r\n    }\r\n\r\n    /// @notice Called by assessments and concepts to withdraw tokens from assessment participants\r\n    function takeBalance(address _from, address _to, uint _amount, address _concept) public returns(bool) {\r\n        require(conceptRegistry.conceptExists(_concept), \"Concept does not exist\");\r\n        if (msg.sender != _concept) {\r\n            require(Concept(_concept).assessmentExists(msg.sender), \"Assessment access only\");\r\n        }\r\n\r\n        require(balances[_from] >= _amount, \"Token balance too low\");\r\n        require(balances[_to] + _amount >= balances[_to], \"Overflow error\");\r\n        balances[_from] -= _amount;\r\n        balances[_to] += _amount;\r\n        emit Transfer(_from, _to, _amount);\r\n        return true;\r\n    }\r\n\r\n    /// @notice Called by the minter to create new tokens\r\n    function mint(address _to, uint _amount) public returns(bool) {\r\n        require(msg.sender == minter, \"Minter access only\");\r\n        require(totalSupply_ + _amount > totalSupply_, \"Overflow error: max number of tokens reached\");\r\n        totalSupply_ += _amount;\r\n        balances[_to] += _amount;\r\n        emit Transfer(address(0), _to, _amount);\r\n        return true;\r\n    }\r\n\r\n    // ********************************************\r\n    // SETTER FUNCTIONS\r\n    // ********************************************\r\n    function changeMinter(address _newMinter) public {\r\n        require(msg.sender == owner, \"Owner access only\");\r\n        minter = _newMinter;\r\n    }\r\n\r\n    function destroyTokens(uint _amount) public {\r\n      require(totalSupply_ >= _amount);\r\n      require(balances[msg.sender] >= _amount);\r\n      totalSupply_ -= _amount;\r\n      balances[msg.sender] -= _amount;\r\n      emit Transfer(msg.sender, address(0x0), _amount);\r\n    }\r\n\r\n    function transferOwnership(address _newOwner) public {\r\n        require(msg.sender == owner, \"Owner access only\");\r\n        emit OwnershipTransferred(owner, _newOwner);\r\n        owner = _newOwner;\r\n    }\r\n}\r\n",
  "sourcePath": "/builds/fathom/assess/contracts/contracts/FathomToken.sol",
  "ast": {
    "absolutePath": "/builds/fathom/assess/contracts/contracts/FathomToken.sol",
    "exportedSymbols": {
      "FathomToken": [
        3062
      ]
    },
    "id": 3063,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 2755,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:8"
      },
      {
        "absolutePath": "/builds/fathom/assess/contracts/contracts/Concept.sol",
        "file": "./Concept.sol",
        "id": 2756,
        "nodeType": "ImportDirective",
        "scope": 3063,
        "sourceUnit": 2248,
        "src": "27:23:8",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/builds/fathom/assess/contracts/contracts/ConceptRegistry.sol",
        "file": "./ConceptRegistry.sol",
        "id": 2757,
        "nodeType": "ImportDirective",
        "scope": 3063,
        "sourceUnit": 2683,
        "src": "52:31:8",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/builds/fathom/assess/contracts/contracts/lib/openzeppelin-solidity/contracts/token/ERC20/StandardToken.sol",
        "file": "./lib/openzeppelin-solidity/contracts/token/ERC20/StandardToken.sol",
        "id": 2758,
        "nodeType": "ImportDirective",
        "scope": 3063,
        "sourceUnit": 5908,
        "src": "85:77:8",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/builds/fathom/assess/contracts/contracts/Minter.sol",
        "file": "./Minter.sol",
        "id": 2759,
        "nodeType": "ImportDirective",
        "scope": 3063,
        "sourceUnit": 3810,
        "src": "164:22:8",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 2760,
              "name": "StandardToken",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 5907,
              "src": "361:13:8",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_StandardToken_$5907",
                "typeString": "contract StandardToken"
              }
            },
            "id": 2761,
            "nodeType": "InheritanceSpecifier",
            "src": "361:13:8"
          }
        ],
        "contractDependencies": [
          5582,
          5625,
          5657,
          5907
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 3062,
        "linearizedBaseContracts": [
          3062,
          5907,
          5582,
          5625,
          5657
        ],
        "name": "FathomToken",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 2763,
            "name": "conceptRegistry",
            "nodeType": "VariableDeclaration",
            "scope": 3062,
            "src": "382:38:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_ConceptRegistry_$2682",
              "typeString": "contract ConceptRegistry"
            },
            "typeName": {
              "contractScope": null,
              "id": 2762,
              "name": "ConceptRegistry",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 2682,
              "src": "382:15:8",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ConceptRegistry_$2682",
                "typeString": "contract ConceptRegistry"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 2766,
            "name": "NAME",
            "nodeType": "VariableDeclaration",
            "scope": 3062,
            "src": "427:35:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 2764,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "427:6:8",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "416861",
              "id": 2765,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "457:5:8",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_a783d935d83b7e3a590ceaa0f0cc8547781a22414ed187211929bd418953423a",
                "typeString": "literal_string \"Aha\""
              },
              "value": "Aha"
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 2769,
            "name": "SYMBOL",
            "nodeType": "VariableDeclaration",
            "scope": 3062,
            "src": "469:37:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 2767,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "469:6:8",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "414841",
              "id": 2768,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "501:5:8",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_e04f31be3c03dde2c3618319c35b90f57fcf49449af47e8f31a4a73a57aa0a1f",
                "typeString": "literal_string \"AHA\""
              },
              "value": "AHA"
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 2772,
            "name": "DECIMALS",
            "nodeType": "VariableDeclaration",
            "scope": 3062,
            "src": "513:34:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint8",
              "typeString": "uint8"
            },
            "typeName": {
              "id": 2770,
              "name": "uint8",
              "nodeType": "ElementaryTypeName",
              "src": "513:5:8",
              "typeDescriptions": {
                "typeIdentifier": "t_uint8",
                "typeString": "uint8"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "39",
              "id": 2771,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "546:1:8",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_9_by_1",
                "typeString": "int_const 9"
              },
              "value": "9"
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2774,
            "name": "minter",
            "nodeType": "VariableDeclaration",
            "scope": 3062,
            "src": "556:21:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 2773,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "556:7:8",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2776,
            "name": "owner",
            "nodeType": "VariableDeclaration",
            "scope": 3062,
            "src": "584:20:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 2775,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "584:7:8",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 2782,
            "name": "OwnershipTransferred",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2781,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2778,
                  "indexed": true,
                  "name": "previousOwner",
                  "nodeType": "VariableDeclaration",
                  "scope": 2782,
                  "src": "640:29:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2777,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "640:7:8",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2780,
                  "indexed": true,
                  "name": "newOwner",
                  "nodeType": "VariableDeclaration",
                  "scope": 2782,
                  "src": "671:24:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2779,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "671:7:8",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "639:57:8"
            },
            "src": "613:84:8"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 2790,
            "name": "Notification",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2789,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2784,
                  "indexed": true,
                  "name": "user",
                  "nodeType": "VariableDeclaration",
                  "scope": 2790,
                  "src": "722:20:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2783,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "722:7:8",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2786,
                  "indexed": true,
                  "name": "assessment",
                  "nodeType": "VariableDeclaration",
                  "scope": 2790,
                  "src": "744:26:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2785,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "744:7:8",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2788,
                  "indexed": true,
                  "name": "topic",
                  "nodeType": "VariableDeclaration",
                  "scope": 2790,
                  "src": "772:18:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_Note_$2799",
                    "typeString": "enum FathomToken.Note"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2787,
                    "name": "Note",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2799,
                    "src": "772:4:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_Note_$2799",
                      "typeString": "enum FathomToken.Note"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "721:70:8"
            },
            "src": "703:89:8"
          },
          {
            "canonicalName": "FathomToken.Note",
            "id": 2799,
            "members": [
              {
                "id": 2791,
                "name": "StartedAnAssessment",
                "nodeType": "EnumValue",
                "src": "821:19:8"
              },
              {
                "id": 2792,
                "name": "CalledAsAssessor",
                "nodeType": "EnumValue",
                "src": "851:16:8"
              },
              {
                "id": 2793,
                "name": "ConfirmedAsAssessor",
                "nodeType": "EnumValue",
                "src": "878:19:8"
              },
              {
                "id": 2794,
                "name": "AssessmentCancelled",
                "nodeType": "EnumValue",
                "src": "908:19:8"
              },
              {
                "id": 2795,
                "name": "AssessmentHasBegun",
                "nodeType": "EnumValue",
                "src": "938:18:8"
              },
              {
                "id": 2796,
                "name": "RevealScore",
                "nodeType": "EnumValue",
                "src": "967:11:8"
              },
              {
                "id": 2797,
                "name": "ConsensusReached",
                "nodeType": "EnumValue",
                "src": "989:16:8"
              },
              {
                "id": 2798,
                "name": "AssessmentFinished",
                "nodeType": "EnumValue",
                "src": "1016:18:8"
              }
            ],
            "name": "Note",
            "nodeType": "EnumDefinition",
            "src": "800:241:8"
          },
          {
            "body": {
              "id": 2835,
              "nodeType": "Block",
              "src": "1155:218:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2813,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2810,
                      "name": "owner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2776,
                      "src": "1166:5:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2811,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5967,
                        "src": "1174:3:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 2812,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "1174:10:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "1166:18:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 2814,
                  "nodeType": "ExpressionStatement",
                  "src": "1166:18:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2819,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2815,
                      "name": "conceptRegistry",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2763,
                      "src": "1195:15:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ConceptRegistry_$2682",
                        "typeString": "contract ConceptRegistry"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 2817,
                          "name": "_conceptRegistry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2801,
                          "src": "1229:16:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 2816,
                        "name": "ConceptRegistry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2682,
                        "src": "1213:15:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_ConceptRegistry_$2682_$",
                          "typeString": "type(contract ConceptRegistry)"
                        }
                      },
                      "id": 2818,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1213:33:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ConceptRegistry_$2682",
                        "typeString": "contract ConceptRegistry"
                      }
                    },
                    "src": "1195:51:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ConceptRegistry_$2682",
                      "typeString": "contract ConceptRegistry"
                    }
                  },
                  "id": 2820,
                  "nodeType": "ExpressionStatement",
                  "src": "1195:51:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2823,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2821,
                      "name": "minter",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2774,
                      "src": "1257:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2822,
                      "name": "_minter",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2807,
                      "src": "1266:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "1257:16:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 2824,
                  "nodeType": "ExpressionStatement",
                  "src": "1257:16:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2827,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2825,
                      "name": "totalSupply_",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5499,
                      "src": "1284:12:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2826,
                      "name": "_initialBalance",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2805,
                      "src": "1299:15:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1284:30:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2828,
                  "nodeType": "ExpressionStatement",
                  "src": "1284:30:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2833,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2829,
                        "name": "balances",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5497,
                        "src": "1325:8:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 2831,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2830,
                        "name": "_initialUser",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2803,
                        "src": "1334:12:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "1325:22:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2832,
                      "name": "_initialBalance",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2805,
                      "src": "1350:15:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1325:40:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2834,
                  "nodeType": "ExpressionStatement",
                  "src": "1325:40:8"
                }
              ]
            },
            "documentation": null,
            "id": 2836,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2808,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2801,
                  "name": "_conceptRegistry",
                  "nodeType": "VariableDeclaration",
                  "scope": 2836,
                  "src": "1061:24:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2800,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1061:7:8",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2803,
                  "name": "_initialUser",
                  "nodeType": "VariableDeclaration",
                  "scope": 2836,
                  "src": "1087:20:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2802,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1087:7:8",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2805,
                  "name": "_initialBalance",
                  "nodeType": "VariableDeclaration",
                  "scope": 2836,
                  "src": "1109:20:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2804,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1109:4:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2807,
                  "name": "_minter",
                  "nodeType": "VariableDeclaration",
                  "scope": 2836,
                  "src": "1131:15:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2806,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1131:7:8",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1060:87:8"
            },
            "returnParameters": {
              "id": 2809,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1155:0:8"
            },
            "scope": 3062,
            "src": "1049:324:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2850,
              "nodeType": "Block",
              "src": "1508:63:8",
              "statements": [
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2844,
                        "name": "_user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2838,
                        "src": "1537:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2845,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5967,
                          "src": "1544:3:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 2846,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "1544:10:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2847,
                        "name": "_topic",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2840,
                        "src": "1556:6:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_Note_$2799",
                          "typeString": "enum FathomToken.Note"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_enum$_Note_$2799",
                          "typeString": "enum FathomToken.Note"
                        }
                      ],
                      "id": 2843,
                      "name": "Notification",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2790,
                      "src": "1524:12:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_enum$_Note_$2799_$returns$__$",
                        "typeString": "function (address,address,enum FathomToken.Note)"
                      }
                    },
                    "id": 2848,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1524:39:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2849,
                  "nodeType": "EmitStatement",
                  "src": "1519:44:8"
                }
              ]
            },
            "documentation": "@notice Called by assessments to notify its participants",
            "id": 2851,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "emitNotification",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2841,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2838,
                  "name": "_user",
                  "nodeType": "VariableDeclaration",
                  "scope": 2851,
                  "src": "1473:13:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2837,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1473:7:8",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2840,
                  "name": "_topic",
                  "nodeType": "VariableDeclaration",
                  "scope": 2851,
                  "src": "1488:11:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_Note_$2799",
                    "typeString": "enum FathomToken.Note"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2839,
                    "name": "Note",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2799,
                    "src": "1488:4:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_Note_$2799",
                      "typeString": "enum FathomToken.Note"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1472:28:8"
            },
            "returnParameters": {
              "id": 2842,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1508:0:8"
            },
            "scope": 3062,
            "src": "1447:124:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2931,
              "nodeType": "Block",
              "src": "1781:529:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2867,
                            "name": "_concept",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2859,
                            "src": "1830:8:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2865,
                            "name": "conceptRegistry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2763,
                            "src": "1800:15:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ConceptRegistry_$2682",
                              "typeString": "contract ConceptRegistry"
                            }
                          },
                          "id": 2866,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "conceptExists",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2537,
                          "src": "1800:29:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$",
                            "typeString": "function (address) view external returns (bool)"
                          }
                        },
                        "id": 2868,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1800:39:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "436f6e6365707420646f6573206e6f74206578697374",
                        "id": 2869,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1841:24:8",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_472f82b6e3cba1eec8d1b46705500af9c3b2261200ee7020985d2711e071cbd5",
                          "typeString": "literal_string \"Concept does not exist\""
                        },
                        "value": "Concept does not exist"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_472f82b6e3cba1eec8d1b46705500af9c3b2261200ee7020985d2711e071cbd5",
                          "typeString": "literal_string \"Concept does not exist\""
                        }
                      ],
                      "id": 2864,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        5970,
                        5971
                      ],
                      "referencedDeclaration": 5971,
                      "src": "1792:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2870,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1792:74:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2871,
                  "nodeType": "ExpressionStatement",
                  "src": "1792:74:8"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 2875,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2872,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5967,
                        "src": "1881:3:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 2873,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "1881:10:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 2874,
                      "name": "_concept",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2859,
                      "src": "1895:8:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "1881:22:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2888,
                  "nodeType": "IfStatement",
                  "src": "1877:136:8",
                  "trueBody": {
                    "id": 2887,
                    "nodeType": "Block",
                    "src": "1905:108:8",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2881,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5967,
                                    "src": "1963:3:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 2882,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "1963:10:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 2878,
                                      "name": "_concept",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2859,
                                      "src": "1936:8:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 2877,
                                    "name": "Concept",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2247,
                                    "src": "1928:7:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_Concept_$2247_$",
                                      "typeString": "type(contract Concept)"
                                    }
                                  },
                                  "id": 2879,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1928:17:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_Concept_$2247",
                                    "typeString": "contract Concept"
                                  }
                                },
                                "id": 2880,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "assessmentExists",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2289,
                                "src": "1928:34:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$",
                                  "typeString": "function (address) view external returns (bool)"
                                }
                              },
                              "id": 2883,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1928:46:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4173736573736d656e7420616363657373206f6e6c79",
                              "id": 2884,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1976:24:8",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_b68bd715d86d8fc72bcff3e99e594c7eab7d1b06c0fe0ede5322b180f5ec6a31",
                                "typeString": "literal_string \"Assessment access only\""
                              },
                              "value": "Assessment access only"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_b68bd715d86d8fc72bcff3e99e594c7eab7d1b06c0fe0ede5322b180f5ec6a31",
                                "typeString": "literal_string \"Assessment access only\""
                              }
                            ],
                            "id": 2876,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              5970,
                              5971
                            ],
                            "referencedDeclaration": 5971,
                            "src": "1920:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2885,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1920:81:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2886,
                        "nodeType": "ExpressionStatement",
                        "src": "1920:81:8"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2894,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2890,
                            "name": "balances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5497,
                            "src": "2033:8:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 2892,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2891,
                            "name": "_from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2853,
                            "src": "2042:5:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "2033:15:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 2893,
                          "name": "_amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2857,
                          "src": "2052:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2033:26:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "546f6b656e2062616c616e636520746f6f206c6f77",
                        "id": 2895,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2061:23:8",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_6db77ed080137442e8c2bf08f3fb90516ab2b33bdd1e6aab1e5703ba9057e3d1",
                          "typeString": "literal_string \"Token balance too low\""
                        },
                        "value": "Token balance too low"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_6db77ed080137442e8c2bf08f3fb90516ab2b33bdd1e6aab1e5703ba9057e3d1",
                          "typeString": "literal_string \"Token balance too low\""
                        }
                      ],
                      "id": 2889,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        5970,
                        5971
                      ],
                      "referencedDeclaration": 5971,
                      "src": "2025:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2896,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2025:60:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2897,
                  "nodeType": "ExpressionStatement",
                  "src": "2025:60:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2907,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2903,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2899,
                              "name": "balances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5497,
                              "src": "2104:8:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 2901,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2900,
                              "name": "_to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2855,
                              "src": "2113:3:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "2104:13:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 2902,
                            "name": "_amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2857,
                            "src": "2120:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2104:23:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2904,
                            "name": "balances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5497,
                            "src": "2131:8:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 2906,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2905,
                            "name": "_to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2855,
                            "src": "2140:3:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "2131:13:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2104:40:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4f766572666c6f77206572726f72",
                        "id": 2908,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2146:16:8",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_ec1d7157e2e1a718575a8424f4e908cc19c82aecab8698584db66966aa0af09b",
                          "typeString": "literal_string \"Overflow error\""
                        },
                        "value": "Overflow error"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_ec1d7157e2e1a718575a8424f4e908cc19c82aecab8698584db66966aa0af09b",
                          "typeString": "literal_string \"Overflow error\""
                        }
                      ],
                      "id": 2898,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        5970,
                        5971
                      ],
                      "referencedDeclaration": 5971,
                      "src": "2096:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2909,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2096:67:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2910,
                  "nodeType": "ExpressionStatement",
                  "src": "2096:67:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2915,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2911,
                        "name": "balances",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5497,
                        "src": "2174:8:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 2913,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2912,
                        "name": "_from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2853,
                        "src": "2183:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2174:15:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "-=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2914,
                      "name": "_amount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2857,
                      "src": "2193:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2174:26:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2916,
                  "nodeType": "ExpressionStatement",
                  "src": "2174:26:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2921,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2917,
                        "name": "balances",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5497,
                        "src": "2211:8:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 2919,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2918,
                        "name": "_to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2855,
                        "src": "2220:3:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2211:13:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "+=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2920,
                      "name": "_amount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2857,
                      "src": "2228:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2211:24:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2922,
                  "nodeType": "ExpressionStatement",
                  "src": "2211:24:8"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2924,
                        "name": "_from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2853,
                        "src": "2260:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2925,
                        "name": "_to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2855,
                        "src": "2267:3:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2926,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2857,
                        "src": "2272:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2923,
                      "name": "Transfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5656,
                      "src": "2251:8:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 2927,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2251:29:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2928,
                  "nodeType": "EmitStatement",
                  "src": "2246:34:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "74727565",
                    "id": 2929,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2298:4:8",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 2863,
                  "id": 2930,
                  "nodeType": "Return",
                  "src": "2291:11:8"
                }
              ]
            },
            "documentation": "@notice Called by assessments and concepts to withdraw tokens from assessment participants",
            "id": 2932,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "takeBalance",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2860,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2853,
                  "name": "_from",
                  "nodeType": "VariableDeclaration",
                  "scope": 2932,
                  "src": "1700:13:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2852,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1700:7:8",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2855,
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "scope": 2932,
                  "src": "1715:11:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2854,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1715:7:8",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2857,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 2932,
                  "src": "1728:12:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2856,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1728:4:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2859,
                  "name": "_concept",
                  "nodeType": "VariableDeclaration",
                  "scope": 2932,
                  "src": "1742:16:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2858,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1742:7:8",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1699:60:8"
            },
            "returnParameters": {
              "id": 2863,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2862,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2932,
                  "src": "1775:4:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2861,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1775:4:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1774:6:8"
            },
            "scope": 3062,
            "src": "1679:631:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2978,
              "nodeType": "Block",
              "src": "2439:316:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 2945,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2942,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5967,
                            "src": "2458:3:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 2943,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "2458:10:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 2944,
                          "name": "minter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2774,
                          "src": "2472:6:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "2458:20:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4d696e74657220616363657373206f6e6c79",
                        "id": 2946,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2480:20:8",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_1c8e3024824a0d46453da179fa152e20cfb832ec145b07ecb021f3efb0e07071",
                          "typeString": "literal_string \"Minter access only\""
                        },
                        "value": "Minter access only"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_1c8e3024824a0d46453da179fa152e20cfb832ec145b07ecb021f3efb0e07071",
                          "typeString": "literal_string \"Minter access only\""
                        }
                      ],
                      "id": 2941,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        5970,
                        5971
                      ],
                      "referencedDeclaration": 5971,
                      "src": "2450:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2947,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2450:51:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2948,
                  "nodeType": "ExpressionStatement",
                  "src": "2450:51:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2954,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2952,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 2950,
                            "name": "totalSupply_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5499,
                            "src": "2520:12:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 2951,
                            "name": "_amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2936,
                            "src": "2535:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2520:22:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 2953,
                          "name": "totalSupply_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5499,
                          "src": "2545:12:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2520:37:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4f766572666c6f77206572726f723a206d6178206e756d626572206f6620746f6b656e732072656163686564",
                        "id": 2955,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2559:46:8",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_e6a70a105a56fbd4bf1784ed250014e20b4be2a71595aeee8c209113307f881c",
                          "typeString": "literal_string \"Overflow error: max number of tokens reached\""
                        },
                        "value": "Overflow error: max number of tokens reached"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_e6a70a105a56fbd4bf1784ed250014e20b4be2a71595aeee8c209113307f881c",
                          "typeString": "literal_string \"Overflow error: max number of tokens reached\""
                        }
                      ],
                      "id": 2949,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        5970,
                        5971
                      ],
                      "referencedDeclaration": 5971,
                      "src": "2512:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2956,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2512:94:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2957,
                  "nodeType": "ExpressionStatement",
                  "src": "2512:94:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2960,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2958,
                      "name": "totalSupply_",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5499,
                      "src": "2617:12:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "+=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2959,
                      "name": "_amount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2936,
                      "src": "2633:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2617:23:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2961,
                  "nodeType": "ExpressionStatement",
                  "src": "2617:23:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2966,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2962,
                        "name": "balances",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5497,
                        "src": "2651:8:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 2964,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2963,
                        "name": "_to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2934,
                        "src": "2660:3:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2651:13:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "+=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2965,
                      "name": "_amount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2936,
                      "src": "2668:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2651:24:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2967,
                  "nodeType": "ExpressionStatement",
                  "src": "2651:24:8"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2970,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2708:1:8",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 2969,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2700:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 2971,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2700:10:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2972,
                        "name": "_to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2934,
                        "src": "2712:3:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2973,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2936,
                        "src": "2717:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2968,
                      "name": "Transfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5656,
                      "src": "2691:8:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 2974,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2691:34:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2975,
                  "nodeType": "EmitStatement",
                  "src": "2686:39:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "74727565",
                    "id": 2976,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2743:4:8",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 2940,
                  "id": 2977,
                  "nodeType": "Return",
                  "src": "2736:11:8"
                }
              ]
            },
            "documentation": "@notice Called by the minter to create new tokens",
            "id": 2979,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "mint",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2937,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2934,
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "scope": 2979,
                  "src": "2391:11:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2933,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2391:7:8",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2936,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 2979,
                  "src": "2404:12:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2935,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2404:4:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2390:27:8"
            },
            "returnParameters": {
              "id": 2940,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2939,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2979,
                  "src": "2433:4:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2938,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2433:4:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2432:6:8"
            },
            "scope": 3062,
            "src": "2377:378:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2996,
              "nodeType": "Block",
              "src": "2943:98:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 2988,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2985,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5967,
                            "src": "2962:3:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 2986,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "2962:10:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 2987,
                          "name": "owner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2776,
                          "src": "2976:5:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "2962:19:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4f776e657220616363657373206f6e6c79",
                        "id": 2989,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2983:19:8",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_cbb7cbf9a2b22f5a3e435e50b81af3232ae86a517b686cbee2d424fa6ae6bcc9",
                          "typeString": "literal_string \"Owner access only\""
                        },
                        "value": "Owner access only"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_cbb7cbf9a2b22f5a3e435e50b81af3232ae86a517b686cbee2d424fa6ae6bcc9",
                          "typeString": "literal_string \"Owner access only\""
                        }
                      ],
                      "id": 2984,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        5970,
                        5971
                      ],
                      "referencedDeclaration": 5971,
                      "src": "2954:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2990,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2954:49:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2991,
                  "nodeType": "ExpressionStatement",
                  "src": "2954:49:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2994,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2992,
                      "name": "minter",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2774,
                      "src": "3014:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2993,
                      "name": "_newMinter",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2981,
                      "src": "3023:10:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "3014:19:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 2995,
                  "nodeType": "ExpressionStatement",
                  "src": "3014:19:8"
                }
              ]
            },
            "documentation": null,
            "id": 2997,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "changeMinter",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2982,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2981,
                  "name": "_newMinter",
                  "nodeType": "VariableDeclaration",
                  "scope": 2997,
                  "src": "2916:18:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2980,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2916:7:8",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2915:20:8"
            },
            "returnParameters": {
              "id": 2983,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2943:0:8"
            },
            "scope": 3062,
            "src": "2894:147:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3037,
              "nodeType": "Block",
              "src": "3093:227:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3005,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 3003,
                          "name": "totalSupply_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5499,
                          "src": "3110:12:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 3004,
                          "name": "_amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2999,
                          "src": "3126:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "3110:23:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 3002,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        5970,
                        5971
                      ],
                      "referencedDeclaration": 5970,
                      "src": "3102:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 3006,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3102:32:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3007,
                  "nodeType": "ExpressionStatement",
                  "src": "3102:32:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3014,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 3009,
                            "name": "balances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5497,
                            "src": "3151:8:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 3012,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3010,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5967,
                              "src": "3160:3:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 3011,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "3160:10:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "3151:20:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 3013,
                          "name": "_amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2999,
                          "src": "3175:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "3151:31:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 3008,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        5970,
                        5971
                      ],
                      "referencedDeclaration": 5970,
                      "src": "3143:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 3015,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3143:40:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3016,
                  "nodeType": "ExpressionStatement",
                  "src": "3143:40:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3019,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3017,
                      "name": "totalSupply_",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5499,
                      "src": "3192:12:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "-=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 3018,
                      "name": "_amount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2999,
                      "src": "3208:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3192:23:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3020,
                  "nodeType": "ExpressionStatement",
                  "src": "3192:23:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3026,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 3021,
                        "name": "balances",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5497,
                        "src": "3224:8:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 3024,
                      "indexExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3022,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5967,
                          "src": "3233:3:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 3023,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "3233:10:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "3224:20:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "-=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 3025,
                      "name": "_amount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2999,
                      "src": "3248:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3224:31:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3027,
                  "nodeType": "ExpressionStatement",
                  "src": "3224:31:8"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3029,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5967,
                          "src": "3278:3:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 3030,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "3278:10:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "307830",
                            "id": 3032,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3298:3:8",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0x0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 3031,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "3290:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 3033,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3290:12:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3034,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2999,
                        "src": "3304:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 3028,
                      "name": "Transfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5656,
                      "src": "3269:8:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 3035,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3269:43:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3036,
                  "nodeType": "EmitStatement",
                  "src": "3264:48:8"
                }
              ]
            },
            "documentation": null,
            "id": 3038,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "destroyTokens",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3000,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2999,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 3038,
                  "src": "3072:12:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2998,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "3072:4:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3071:14:8"
            },
            "returnParameters": {
              "id": 3001,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3093:0:8"
            },
            "scope": 3062,
            "src": "3049:271:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3060,
              "nodeType": "Block",
              "src": "3381:150:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 3047,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3044,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5967,
                            "src": "3400:3:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 3045,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "3400:10:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 3046,
                          "name": "owner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2776,
                          "src": "3414:5:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "3400:19:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4f776e657220616363657373206f6e6c79",
                        "id": 3048,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3421:19:8",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_cbb7cbf9a2b22f5a3e435e50b81af3232ae86a517b686cbee2d424fa6ae6bcc9",
                          "typeString": "literal_string \"Owner access only\""
                        },
                        "value": "Owner access only"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_cbb7cbf9a2b22f5a3e435e50b81af3232ae86a517b686cbee2d424fa6ae6bcc9",
                          "typeString": "literal_string \"Owner access only\""
                        }
                      ],
                      "id": 3043,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        5970,
                        5971
                      ],
                      "referencedDeclaration": 5971,
                      "src": "3392:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3049,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3392:49:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3050,
                  "nodeType": "ExpressionStatement",
                  "src": "3392:49:8"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3052,
                        "name": "owner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2776,
                        "src": "3478:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3053,
                        "name": "_newOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3040,
                        "src": "3485:9:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 3051,
                      "name": "OwnershipTransferred",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2782,
                      "src": "3457:20:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                        "typeString": "function (address,address)"
                      }
                    },
                    "id": 3054,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3457:38:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3055,
                  "nodeType": "EmitStatement",
                  "src": "3452:43:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3058,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3056,
                      "name": "owner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2776,
                      "src": "3506:5:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 3057,
                      "name": "_newOwner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3040,
                      "src": "3514:9:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "3506:17:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 3059,
                  "nodeType": "ExpressionStatement",
                  "src": "3506:17:8"
                }
              ]
            },
            "documentation": null,
            "id": 3061,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "transferOwnership",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3041,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3040,
                  "name": "_newOwner",
                  "nodeType": "VariableDeclaration",
                  "scope": 3061,
                  "src": "3355:17:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3039,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3355:7:8",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3354:19:8"
            },
            "returnParameters": {
              "id": 3042,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3381:0:8"
            },
            "scope": 3062,
            "src": "3328:203:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 3063,
        "src": "337:3197:8"
      }
    ],
    "src": "0:3536:8"
  },
  "legacyAST": {
    "absolutePath": "/builds/fathom/assess/contracts/contracts/FathomToken.sol",
    "exportedSymbols": {
      "FathomToken": [
        3062
      ]
    },
    "id": 3063,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 2755,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:8"
      },
      {
        "absolutePath": "/builds/fathom/assess/contracts/contracts/Concept.sol",
        "file": "./Concept.sol",
        "id": 2756,
        "nodeType": "ImportDirective",
        "scope": 3063,
        "sourceUnit": 2248,
        "src": "27:23:8",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/builds/fathom/assess/contracts/contracts/ConceptRegistry.sol",
        "file": "./ConceptRegistry.sol",
        "id": 2757,
        "nodeType": "ImportDirective",
        "scope": 3063,
        "sourceUnit": 2683,
        "src": "52:31:8",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/builds/fathom/assess/contracts/contracts/lib/openzeppelin-solidity/contracts/token/ERC20/StandardToken.sol",
        "file": "./lib/openzeppelin-solidity/contracts/token/ERC20/StandardToken.sol",
        "id": 2758,
        "nodeType": "ImportDirective",
        "scope": 3063,
        "sourceUnit": 5908,
        "src": "85:77:8",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/builds/fathom/assess/contracts/contracts/Minter.sol",
        "file": "./Minter.sol",
        "id": 2759,
        "nodeType": "ImportDirective",
        "scope": 3063,
        "sourceUnit": 3810,
        "src": "164:22:8",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 2760,
              "name": "StandardToken",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 5907,
              "src": "361:13:8",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_StandardToken_$5907",
                "typeString": "contract StandardToken"
              }
            },
            "id": 2761,
            "nodeType": "InheritanceSpecifier",
            "src": "361:13:8"
          }
        ],
        "contractDependencies": [
          5582,
          5625,
          5657,
          5907
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 3062,
        "linearizedBaseContracts": [
          3062,
          5907,
          5582,
          5625,
          5657
        ],
        "name": "FathomToken",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 2763,
            "name": "conceptRegistry",
            "nodeType": "VariableDeclaration",
            "scope": 3062,
            "src": "382:38:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_ConceptRegistry_$2682",
              "typeString": "contract ConceptRegistry"
            },
            "typeName": {
              "contractScope": null,
              "id": 2762,
              "name": "ConceptRegistry",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 2682,
              "src": "382:15:8",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ConceptRegistry_$2682",
                "typeString": "contract ConceptRegistry"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 2766,
            "name": "NAME",
            "nodeType": "VariableDeclaration",
            "scope": 3062,
            "src": "427:35:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 2764,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "427:6:8",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "416861",
              "id": 2765,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "457:5:8",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_a783d935d83b7e3a590ceaa0f0cc8547781a22414ed187211929bd418953423a",
                "typeString": "literal_string \"Aha\""
              },
              "value": "Aha"
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 2769,
            "name": "SYMBOL",
            "nodeType": "VariableDeclaration",
            "scope": 3062,
            "src": "469:37:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 2767,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "469:6:8",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "414841",
              "id": 2768,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "501:5:8",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_e04f31be3c03dde2c3618319c35b90f57fcf49449af47e8f31a4a73a57aa0a1f",
                "typeString": "literal_string \"AHA\""
              },
              "value": "AHA"
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 2772,
            "name": "DECIMALS",
            "nodeType": "VariableDeclaration",
            "scope": 3062,
            "src": "513:34:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint8",
              "typeString": "uint8"
            },
            "typeName": {
              "id": 2770,
              "name": "uint8",
              "nodeType": "ElementaryTypeName",
              "src": "513:5:8",
              "typeDescriptions": {
                "typeIdentifier": "t_uint8",
                "typeString": "uint8"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "39",
              "id": 2771,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "546:1:8",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_9_by_1",
                "typeString": "int_const 9"
              },
              "value": "9"
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2774,
            "name": "minter",
            "nodeType": "VariableDeclaration",
            "scope": 3062,
            "src": "556:21:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 2773,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "556:7:8",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2776,
            "name": "owner",
            "nodeType": "VariableDeclaration",
            "scope": 3062,
            "src": "584:20:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 2775,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "584:7:8",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 2782,
            "name": "OwnershipTransferred",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2781,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2778,
                  "indexed": true,
                  "name": "previousOwner",
                  "nodeType": "VariableDeclaration",
                  "scope": 2782,
                  "src": "640:29:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2777,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "640:7:8",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2780,
                  "indexed": true,
                  "name": "newOwner",
                  "nodeType": "VariableDeclaration",
                  "scope": 2782,
                  "src": "671:24:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2779,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "671:7:8",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "639:57:8"
            },
            "src": "613:84:8"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 2790,
            "name": "Notification",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2789,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2784,
                  "indexed": true,
                  "name": "user",
                  "nodeType": "VariableDeclaration",
                  "scope": 2790,
                  "src": "722:20:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2783,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "722:7:8",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2786,
                  "indexed": true,
                  "name": "assessment",
                  "nodeType": "VariableDeclaration",
                  "scope": 2790,
                  "src": "744:26:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2785,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "744:7:8",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2788,
                  "indexed": true,
                  "name": "topic",
                  "nodeType": "VariableDeclaration",
                  "scope": 2790,
                  "src": "772:18:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_Note_$2799",
                    "typeString": "enum FathomToken.Note"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2787,
                    "name": "Note",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2799,
                    "src": "772:4:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_Note_$2799",
                      "typeString": "enum FathomToken.Note"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "721:70:8"
            },
            "src": "703:89:8"
          },
          {
            "canonicalName": "FathomToken.Note",
            "id": 2799,
            "members": [
              {
                "id": 2791,
                "name": "StartedAnAssessment",
                "nodeType": "EnumValue",
                "src": "821:19:8"
              },
              {
                "id": 2792,
                "name": "CalledAsAssessor",
                "nodeType": "EnumValue",
                "src": "851:16:8"
              },
              {
                "id": 2793,
                "name": "ConfirmedAsAssessor",
                "nodeType": "EnumValue",
                "src": "878:19:8"
              },
              {
                "id": 2794,
                "name": "AssessmentCancelled",
                "nodeType": "EnumValue",
                "src": "908:19:8"
              },
              {
                "id": 2795,
                "name": "AssessmentHasBegun",
                "nodeType": "EnumValue",
                "src": "938:18:8"
              },
              {
                "id": 2796,
                "name": "RevealScore",
                "nodeType": "EnumValue",
                "src": "967:11:8"
              },
              {
                "id": 2797,
                "name": "ConsensusReached",
                "nodeType": "EnumValue",
                "src": "989:16:8"
              },
              {
                "id": 2798,
                "name": "AssessmentFinished",
                "nodeType": "EnumValue",
                "src": "1016:18:8"
              }
            ],
            "name": "Note",
            "nodeType": "EnumDefinition",
            "src": "800:241:8"
          },
          {
            "body": {
              "id": 2835,
              "nodeType": "Block",
              "src": "1155:218:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2813,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2810,
                      "name": "owner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2776,
                      "src": "1166:5:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2811,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5967,
                        "src": "1174:3:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 2812,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "1174:10:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "1166:18:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 2814,
                  "nodeType": "ExpressionStatement",
                  "src": "1166:18:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2819,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2815,
                      "name": "conceptRegistry",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2763,
                      "src": "1195:15:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ConceptRegistry_$2682",
                        "typeString": "contract ConceptRegistry"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 2817,
                          "name": "_conceptRegistry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2801,
                          "src": "1229:16:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 2816,
                        "name": "ConceptRegistry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2682,
                        "src": "1213:15:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_ConceptRegistry_$2682_$",
                          "typeString": "type(contract ConceptRegistry)"
                        }
                      },
                      "id": 2818,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1213:33:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ConceptRegistry_$2682",
                        "typeString": "contract ConceptRegistry"
                      }
                    },
                    "src": "1195:51:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ConceptRegistry_$2682",
                      "typeString": "contract ConceptRegistry"
                    }
                  },
                  "id": 2820,
                  "nodeType": "ExpressionStatement",
                  "src": "1195:51:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2823,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2821,
                      "name": "minter",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2774,
                      "src": "1257:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2822,
                      "name": "_minter",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2807,
                      "src": "1266:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "1257:16:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 2824,
                  "nodeType": "ExpressionStatement",
                  "src": "1257:16:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2827,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2825,
                      "name": "totalSupply_",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5499,
                      "src": "1284:12:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2826,
                      "name": "_initialBalance",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2805,
                      "src": "1299:15:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1284:30:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2828,
                  "nodeType": "ExpressionStatement",
                  "src": "1284:30:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2833,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2829,
                        "name": "balances",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5497,
                        "src": "1325:8:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 2831,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2830,
                        "name": "_initialUser",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2803,
                        "src": "1334:12:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "1325:22:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2832,
                      "name": "_initialBalance",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2805,
                      "src": "1350:15:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1325:40:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2834,
                  "nodeType": "ExpressionStatement",
                  "src": "1325:40:8"
                }
              ]
            },
            "documentation": null,
            "id": 2836,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2808,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2801,
                  "name": "_conceptRegistry",
                  "nodeType": "VariableDeclaration",
                  "scope": 2836,
                  "src": "1061:24:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2800,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1061:7:8",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2803,
                  "name": "_initialUser",
                  "nodeType": "VariableDeclaration",
                  "scope": 2836,
                  "src": "1087:20:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2802,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1087:7:8",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2805,
                  "name": "_initialBalance",
                  "nodeType": "VariableDeclaration",
                  "scope": 2836,
                  "src": "1109:20:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2804,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1109:4:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2807,
                  "name": "_minter",
                  "nodeType": "VariableDeclaration",
                  "scope": 2836,
                  "src": "1131:15:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2806,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1131:7:8",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1060:87:8"
            },
            "returnParameters": {
              "id": 2809,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1155:0:8"
            },
            "scope": 3062,
            "src": "1049:324:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2850,
              "nodeType": "Block",
              "src": "1508:63:8",
              "statements": [
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2844,
                        "name": "_user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2838,
                        "src": "1537:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2845,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5967,
                          "src": "1544:3:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 2846,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "1544:10:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2847,
                        "name": "_topic",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2840,
                        "src": "1556:6:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_Note_$2799",
                          "typeString": "enum FathomToken.Note"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_enum$_Note_$2799",
                          "typeString": "enum FathomToken.Note"
                        }
                      ],
                      "id": 2843,
                      "name": "Notification",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2790,
                      "src": "1524:12:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_enum$_Note_$2799_$returns$__$",
                        "typeString": "function (address,address,enum FathomToken.Note)"
                      }
                    },
                    "id": 2848,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1524:39:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2849,
                  "nodeType": "EmitStatement",
                  "src": "1519:44:8"
                }
              ]
            },
            "documentation": "@notice Called by assessments to notify its participants",
            "id": 2851,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "emitNotification",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2841,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2838,
                  "name": "_user",
                  "nodeType": "VariableDeclaration",
                  "scope": 2851,
                  "src": "1473:13:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2837,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1473:7:8",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2840,
                  "name": "_topic",
                  "nodeType": "VariableDeclaration",
                  "scope": 2851,
                  "src": "1488:11:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_Note_$2799",
                    "typeString": "enum FathomToken.Note"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2839,
                    "name": "Note",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2799,
                    "src": "1488:4:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_Note_$2799",
                      "typeString": "enum FathomToken.Note"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1472:28:8"
            },
            "returnParameters": {
              "id": 2842,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1508:0:8"
            },
            "scope": 3062,
            "src": "1447:124:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2931,
              "nodeType": "Block",
              "src": "1781:529:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2867,
                            "name": "_concept",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2859,
                            "src": "1830:8:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2865,
                            "name": "conceptRegistry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2763,
                            "src": "1800:15:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ConceptRegistry_$2682",
                              "typeString": "contract ConceptRegistry"
                            }
                          },
                          "id": 2866,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "conceptExists",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2537,
                          "src": "1800:29:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$",
                            "typeString": "function (address) view external returns (bool)"
                          }
                        },
                        "id": 2868,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1800:39:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "436f6e6365707420646f6573206e6f74206578697374",
                        "id": 2869,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1841:24:8",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_472f82b6e3cba1eec8d1b46705500af9c3b2261200ee7020985d2711e071cbd5",
                          "typeString": "literal_string \"Concept does not exist\""
                        },
                        "value": "Concept does not exist"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_472f82b6e3cba1eec8d1b46705500af9c3b2261200ee7020985d2711e071cbd5",
                          "typeString": "literal_string \"Concept does not exist\""
                        }
                      ],
                      "id": 2864,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        5970,
                        5971
                      ],
                      "referencedDeclaration": 5971,
                      "src": "1792:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2870,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1792:74:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2871,
                  "nodeType": "ExpressionStatement",
                  "src": "1792:74:8"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 2875,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2872,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5967,
                        "src": "1881:3:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 2873,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "1881:10:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 2874,
                      "name": "_concept",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2859,
                      "src": "1895:8:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "1881:22:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2888,
                  "nodeType": "IfStatement",
                  "src": "1877:136:8",
                  "trueBody": {
                    "id": 2887,
                    "nodeType": "Block",
                    "src": "1905:108:8",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2881,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5967,
                                    "src": "1963:3:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 2882,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "1963:10:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 2878,
                                      "name": "_concept",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2859,
                                      "src": "1936:8:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 2877,
                                    "name": "Concept",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2247,
                                    "src": "1928:7:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_Concept_$2247_$",
                                      "typeString": "type(contract Concept)"
                                    }
                                  },
                                  "id": 2879,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1928:17:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_Concept_$2247",
                                    "typeString": "contract Concept"
                                  }
                                },
                                "id": 2880,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "assessmentExists",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2289,
                                "src": "1928:34:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$",
                                  "typeString": "function (address) view external returns (bool)"
                                }
                              },
                              "id": 2883,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1928:46:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4173736573736d656e7420616363657373206f6e6c79",
                              "id": 2884,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1976:24:8",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_b68bd715d86d8fc72bcff3e99e594c7eab7d1b06c0fe0ede5322b180f5ec6a31",
                                "typeString": "literal_string \"Assessment access only\""
                              },
                              "value": "Assessment access only"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_b68bd715d86d8fc72bcff3e99e594c7eab7d1b06c0fe0ede5322b180f5ec6a31",
                                "typeString": "literal_string \"Assessment access only\""
                              }
                            ],
                            "id": 2876,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              5970,
                              5971
                            ],
                            "referencedDeclaration": 5971,
                            "src": "1920:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2885,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1920:81:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2886,
                        "nodeType": "ExpressionStatement",
                        "src": "1920:81:8"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2894,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2890,
                            "name": "balances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5497,
                            "src": "2033:8:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 2892,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2891,
                            "name": "_from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2853,
                            "src": "2042:5:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "2033:15:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 2893,
                          "name": "_amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2857,
                          "src": "2052:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2033:26:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "546f6b656e2062616c616e636520746f6f206c6f77",
                        "id": 2895,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2061:23:8",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_6db77ed080137442e8c2bf08f3fb90516ab2b33bdd1e6aab1e5703ba9057e3d1",
                          "typeString": "literal_string \"Token balance too low\""
                        },
                        "value": "Token balance too low"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_6db77ed080137442e8c2bf08f3fb90516ab2b33bdd1e6aab1e5703ba9057e3d1",
                          "typeString": "literal_string \"Token balance too low\""
                        }
                      ],
                      "id": 2889,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        5970,
                        5971
                      ],
                      "referencedDeclaration": 5971,
                      "src": "2025:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2896,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2025:60:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2897,
                  "nodeType": "ExpressionStatement",
                  "src": "2025:60:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2907,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2903,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2899,
                              "name": "balances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5497,
                              "src": "2104:8:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 2901,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2900,
                              "name": "_to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2855,
                              "src": "2113:3:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "2104:13:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 2902,
                            "name": "_amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2857,
                            "src": "2120:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2104:23:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2904,
                            "name": "balances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5497,
                            "src": "2131:8:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 2906,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2905,
                            "name": "_to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2855,
                            "src": "2140:3:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "2131:13:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2104:40:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4f766572666c6f77206572726f72",
                        "id": 2908,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2146:16:8",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_ec1d7157e2e1a718575a8424f4e908cc19c82aecab8698584db66966aa0af09b",
                          "typeString": "literal_string \"Overflow error\""
                        },
                        "value": "Overflow error"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_ec1d7157e2e1a718575a8424f4e908cc19c82aecab8698584db66966aa0af09b",
                          "typeString": "literal_string \"Overflow error\""
                        }
                      ],
                      "id": 2898,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        5970,
                        5971
                      ],
                      "referencedDeclaration": 5971,
                      "src": "2096:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2909,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2096:67:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2910,
                  "nodeType": "ExpressionStatement",
                  "src": "2096:67:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2915,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2911,
                        "name": "balances",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5497,
                        "src": "2174:8:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 2913,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2912,
                        "name": "_from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2853,
                        "src": "2183:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2174:15:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "-=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2914,
                      "name": "_amount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2857,
                      "src": "2193:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2174:26:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2916,
                  "nodeType": "ExpressionStatement",
                  "src": "2174:26:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2921,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2917,
                        "name": "balances",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5497,
                        "src": "2211:8:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 2919,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2918,
                        "name": "_to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2855,
                        "src": "2220:3:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2211:13:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "+=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2920,
                      "name": "_amount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2857,
                      "src": "2228:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2211:24:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2922,
                  "nodeType": "ExpressionStatement",
                  "src": "2211:24:8"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2924,
                        "name": "_from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2853,
                        "src": "2260:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2925,
                        "name": "_to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2855,
                        "src": "2267:3:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2926,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2857,
                        "src": "2272:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2923,
                      "name": "Transfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5656,
                      "src": "2251:8:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 2927,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2251:29:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2928,
                  "nodeType": "EmitStatement",
                  "src": "2246:34:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "74727565",
                    "id": 2929,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2298:4:8",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 2863,
                  "id": 2930,
                  "nodeType": "Return",
                  "src": "2291:11:8"
                }
              ]
            },
            "documentation": "@notice Called by assessments and concepts to withdraw tokens from assessment participants",
            "id": 2932,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "takeBalance",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2860,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2853,
                  "name": "_from",
                  "nodeType": "VariableDeclaration",
                  "scope": 2932,
                  "src": "1700:13:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2852,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1700:7:8",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2855,
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "scope": 2932,
                  "src": "1715:11:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2854,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1715:7:8",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2857,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 2932,
                  "src": "1728:12:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2856,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1728:4:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2859,
                  "name": "_concept",
                  "nodeType": "VariableDeclaration",
                  "scope": 2932,
                  "src": "1742:16:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2858,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1742:7:8",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1699:60:8"
            },
            "returnParameters": {
              "id": 2863,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2862,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2932,
                  "src": "1775:4:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2861,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1775:4:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1774:6:8"
            },
            "scope": 3062,
            "src": "1679:631:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2978,
              "nodeType": "Block",
              "src": "2439:316:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 2945,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2942,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5967,
                            "src": "2458:3:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 2943,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "2458:10:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 2944,
                          "name": "minter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2774,
                          "src": "2472:6:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "2458:20:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4d696e74657220616363657373206f6e6c79",
                        "id": 2946,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2480:20:8",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_1c8e3024824a0d46453da179fa152e20cfb832ec145b07ecb021f3efb0e07071",
                          "typeString": "literal_string \"Minter access only\""
                        },
                        "value": "Minter access only"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_1c8e3024824a0d46453da179fa152e20cfb832ec145b07ecb021f3efb0e07071",
                          "typeString": "literal_string \"Minter access only\""
                        }
                      ],
                      "id": 2941,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        5970,
                        5971
                      ],
                      "referencedDeclaration": 5971,
                      "src": "2450:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2947,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2450:51:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2948,
                  "nodeType": "ExpressionStatement",
                  "src": "2450:51:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2954,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2952,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 2950,
                            "name": "totalSupply_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5499,
                            "src": "2520:12:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 2951,
                            "name": "_amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2936,
                            "src": "2535:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2520:22:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 2953,
                          "name": "totalSupply_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5499,
                          "src": "2545:12:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2520:37:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4f766572666c6f77206572726f723a206d6178206e756d626572206f6620746f6b656e732072656163686564",
                        "id": 2955,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2559:46:8",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_e6a70a105a56fbd4bf1784ed250014e20b4be2a71595aeee8c209113307f881c",
                          "typeString": "literal_string \"Overflow error: max number of tokens reached\""
                        },
                        "value": "Overflow error: max number of tokens reached"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_e6a70a105a56fbd4bf1784ed250014e20b4be2a71595aeee8c209113307f881c",
                          "typeString": "literal_string \"Overflow error: max number of tokens reached\""
                        }
                      ],
                      "id": 2949,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        5970,
                        5971
                      ],
                      "referencedDeclaration": 5971,
                      "src": "2512:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2956,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2512:94:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2957,
                  "nodeType": "ExpressionStatement",
                  "src": "2512:94:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2960,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2958,
                      "name": "totalSupply_",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5499,
                      "src": "2617:12:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "+=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2959,
                      "name": "_amount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2936,
                      "src": "2633:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2617:23:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2961,
                  "nodeType": "ExpressionStatement",
                  "src": "2617:23:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2966,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2962,
                        "name": "balances",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5497,
                        "src": "2651:8:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 2964,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2963,
                        "name": "_to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2934,
                        "src": "2660:3:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2651:13:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "+=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2965,
                      "name": "_amount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2936,
                      "src": "2668:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2651:24:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2967,
                  "nodeType": "ExpressionStatement",
                  "src": "2651:24:8"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2970,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2708:1:8",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 2969,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2700:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 2971,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2700:10:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2972,
                        "name": "_to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2934,
                        "src": "2712:3:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2973,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2936,
                        "src": "2717:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2968,
                      "name": "Transfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5656,
                      "src": "2691:8:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 2974,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2691:34:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2975,
                  "nodeType": "EmitStatement",
                  "src": "2686:39:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "74727565",
                    "id": 2976,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2743:4:8",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 2940,
                  "id": 2977,
                  "nodeType": "Return",
                  "src": "2736:11:8"
                }
              ]
            },
            "documentation": "@notice Called by the minter to create new tokens",
            "id": 2979,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "mint",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2937,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2934,
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "scope": 2979,
                  "src": "2391:11:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2933,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2391:7:8",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2936,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 2979,
                  "src": "2404:12:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2935,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2404:4:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2390:27:8"
            },
            "returnParameters": {
              "id": 2940,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2939,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2979,
                  "src": "2433:4:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2938,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2433:4:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2432:6:8"
            },
            "scope": 3062,
            "src": "2377:378:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2996,
              "nodeType": "Block",
              "src": "2943:98:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 2988,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2985,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5967,
                            "src": "2962:3:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 2986,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "2962:10:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 2987,
                          "name": "owner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2776,
                          "src": "2976:5:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "2962:19:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4f776e657220616363657373206f6e6c79",
                        "id": 2989,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2983:19:8",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_cbb7cbf9a2b22f5a3e435e50b81af3232ae86a517b686cbee2d424fa6ae6bcc9",
                          "typeString": "literal_string \"Owner access only\""
                        },
                        "value": "Owner access only"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_cbb7cbf9a2b22f5a3e435e50b81af3232ae86a517b686cbee2d424fa6ae6bcc9",
                          "typeString": "literal_string \"Owner access only\""
                        }
                      ],
                      "id": 2984,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        5970,
                        5971
                      ],
                      "referencedDeclaration": 5971,
                      "src": "2954:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2990,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2954:49:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2991,
                  "nodeType": "ExpressionStatement",
                  "src": "2954:49:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2994,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2992,
                      "name": "minter",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2774,
                      "src": "3014:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2993,
                      "name": "_newMinter",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2981,
                      "src": "3023:10:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "3014:19:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 2995,
                  "nodeType": "ExpressionStatement",
                  "src": "3014:19:8"
                }
              ]
            },
            "documentation": null,
            "id": 2997,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "changeMinter",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2982,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2981,
                  "name": "_newMinter",
                  "nodeType": "VariableDeclaration",
                  "scope": 2997,
                  "src": "2916:18:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2980,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2916:7:8",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2915:20:8"
            },
            "returnParameters": {
              "id": 2983,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2943:0:8"
            },
            "scope": 3062,
            "src": "2894:147:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3037,
              "nodeType": "Block",
              "src": "3093:227:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3005,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 3003,
                          "name": "totalSupply_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5499,
                          "src": "3110:12:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 3004,
                          "name": "_amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2999,
                          "src": "3126:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "3110:23:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 3002,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        5970,
                        5971
                      ],
                      "referencedDeclaration": 5970,
                      "src": "3102:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 3006,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3102:32:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3007,
                  "nodeType": "ExpressionStatement",
                  "src": "3102:32:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3014,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 3009,
                            "name": "balances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5497,
                            "src": "3151:8:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 3012,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3010,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5967,
                              "src": "3160:3:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 3011,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "3160:10:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "3151:20:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 3013,
                          "name": "_amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2999,
                          "src": "3175:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "3151:31:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 3008,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        5970,
                        5971
                      ],
                      "referencedDeclaration": 5970,
                      "src": "3143:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 3015,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3143:40:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3016,
                  "nodeType": "ExpressionStatement",
                  "src": "3143:40:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3019,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3017,
                      "name": "totalSupply_",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5499,
                      "src": "3192:12:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "-=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 3018,
                      "name": "_amount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2999,
                      "src": "3208:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3192:23:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3020,
                  "nodeType": "ExpressionStatement",
                  "src": "3192:23:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3026,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 3021,
                        "name": "balances",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5497,
                        "src": "3224:8:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 3024,
                      "indexExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3022,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5967,
                          "src": "3233:3:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 3023,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "3233:10:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "3224:20:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "-=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 3025,
                      "name": "_amount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2999,
                      "src": "3248:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3224:31:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3027,
                  "nodeType": "ExpressionStatement",
                  "src": "3224:31:8"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3029,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5967,
                          "src": "3278:3:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 3030,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "3278:10:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "307830",
                            "id": 3032,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3298:3:8",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0x0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 3031,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "3290:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 3033,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3290:12:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3034,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2999,
                        "src": "3304:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 3028,
                      "name": "Transfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5656,
                      "src": "3269:8:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 3035,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3269:43:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3036,
                  "nodeType": "EmitStatement",
                  "src": "3264:48:8"
                }
              ]
            },
            "documentation": null,
            "id": 3038,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "destroyTokens",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3000,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2999,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 3038,
                  "src": "3072:12:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2998,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "3072:4:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3071:14:8"
            },
            "returnParameters": {
              "id": 3001,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3093:0:8"
            },
            "scope": 3062,
            "src": "3049:271:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3060,
              "nodeType": "Block",
              "src": "3381:150:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 3047,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3044,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5967,
                            "src": "3400:3:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 3045,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "3400:10:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 3046,
                          "name": "owner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2776,
                          "src": "3414:5:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "3400:19:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4f776e657220616363657373206f6e6c79",
                        "id": 3048,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3421:19:8",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_cbb7cbf9a2b22f5a3e435e50b81af3232ae86a517b686cbee2d424fa6ae6bcc9",
                          "typeString": "literal_string \"Owner access only\""
                        },
                        "value": "Owner access only"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_cbb7cbf9a2b22f5a3e435e50b81af3232ae86a517b686cbee2d424fa6ae6bcc9",
                          "typeString": "literal_string \"Owner access only\""
                        }
                      ],
                      "id": 3043,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        5970,
                        5971
                      ],
                      "referencedDeclaration": 5971,
                      "src": "3392:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3049,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3392:49:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3050,
                  "nodeType": "ExpressionStatement",
                  "src": "3392:49:8"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3052,
                        "name": "owner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2776,
                        "src": "3478:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3053,
                        "name": "_newOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3040,
                        "src": "3485:9:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 3051,
                      "name": "OwnershipTransferred",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2782,
                      "src": "3457:20:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                        "typeString": "function (address,address)"
                      }
                    },
                    "id": 3054,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3457:38:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3055,
                  "nodeType": "EmitStatement",
                  "src": "3452:43:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3058,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3056,
                      "name": "owner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2776,
                      "src": "3506:5:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 3057,
                      "name": "_newOwner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3040,
                      "src": "3514:9:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "3506:17:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 3059,
                  "nodeType": "ExpressionStatement",
                  "src": "3506:17:8"
                }
              ]
            },
            "documentation": null,
            "id": 3061,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "transferOwnership",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3041,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3040,
                  "name": "_newOwner",
                  "nodeType": "VariableDeclaration",
                  "scope": 3061,
                  "src": "3355:17:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3039,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3355:7:8",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3354:19:8"
            },
            "returnParameters": {
              "id": 3042,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3381:0:8"
            },
            "scope": 3062,
            "src": "3328:203:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 3063,
        "src": "337:3197:8"
      }
    ],
    "src": "0:3536:8"
  },
  "compiler": {
    "name": "solc",
    "version": "0.5.0+commit.1d4f565a.Emscripten.clang"
  },
  "networks": {
    "42": {
      "events": {
        "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "name": "previousOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "OwnershipTransferred",
          "type": "event",
          "signature": "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0"
        },
        "0x61be7a191fce9c12da97e5ba5978e5d31e3a8374012c731682182c5102faac9d": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "name": "user",
              "type": "address"
            },
            {
              "indexed": true,
              "name": "assessment",
              "type": "address"
            },
            {
              "indexed": true,
              "name": "topic",
              "type": "uint8"
            }
          ],
          "name": "Notification",
          "type": "event",
          "signature": "0x61be7a191fce9c12da97e5ba5978e5d31e3a8374012c731682182c5102faac9d"
        },
        "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": true,
              "name": "spender",
              "type": "address"
            },
            {
              "indexed": false,
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Approval",
          "type": "event",
          "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925"
        },
        "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "name": "from",
              "type": "address"
            },
            {
              "indexed": true,
              "name": "to",
              "type": "address"
            },
            {
              "indexed": false,
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Transfer",
          "type": "event",
          "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
        }
      },
      "links": {},
      "address": "0x361ba5a7b6d70Fc22db053eb746DdD11e6261380",
      "transactionHash": "0x5730261ff4b02c7c54a4e12ca3d2d9df1bf561414a939e9fb2293da1e8fdc962"
    }
  },
  "schemaVersion": "3.0.9",
  "updatedAt": "2019-06-21T15:41:37.110Z",
  "devdoc": {
    "methods": {
      "allowance(address,address)": {
        "details": "Function to check the amount of tokens that an owner allowed to a spender.",
        "params": {
          "_owner": "address The address which owns the funds.",
          "_spender": "address The address which will spend the funds."
        },
        "return": "A uint256 specifying the amount of tokens still available for the spender."
      },
      "approve(address,uint256)": {
        "details": "Approve the passed address to spend the specified amount of tokens on behalf of msg.sender. Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729",
        "params": {
          "_spender": "The address which will spend the funds.",
          "_value": "The amount of tokens to be spent."
        }
      },
      "balanceOf(address)": {
        "details": "Gets the balance of the specified address.",
        "params": {
          "_owner": "The address to query the the balance of."
        },
        "return": "An uint256 representing the amount owned by the passed address."
      },
      "decreaseApproval(address,uint256)": {
        "details": "Decrease the amount of tokens that an owner allowed to a spender. approve should be called when allowed[_spender] == 0. To decrement allowed value is better to use this function to avoid 2 calls (and wait until the first transaction is mined) From MonolithDAO Token.sol",
        "params": {
          "_spender": "The address which will spend the funds.",
          "_subtractedValue": "The amount of tokens to decrease the allowance by."
        }
      },
      "increaseApproval(address,uint256)": {
        "details": "Increase the amount of tokens that an owner allowed to a spender. approve should be called when allowed[_spender] == 0. To increment allowed value is better to use this function to avoid 2 calls (and wait until the first transaction is mined) From MonolithDAO Token.sol",
        "params": {
          "_addedValue": "The amount of tokens to increase the allowance by.",
          "_spender": "The address which will spend the funds."
        }
      },
      "totalSupply()": {
        "details": "Total number of tokens in existence"
      },
      "transfer(address,uint256)": {
        "details": "Transfer token for a specified address",
        "params": {
          "_to": "The address to transfer to.",
          "_value": "The amount to be transferred."
        }
      },
      "transferFrom(address,address,uint256)": {
        "details": "Transfer tokens from one address to another",
        "params": {
          "_from": "address The address which you want to send tokens from",
          "_to": "address The address which you want to transfer to",
          "_value": "uint256 the amount of tokens to be transferred"
        }
      }
    }
  },
  "userdoc": {
    "methods": {
      "emitNotification(address,uint8)": {
        "notice": "Called by assessments to notify its participants"
      },
      "mint(address,uint256)": {
        "notice": "Called by the minter to create new tokens"
      },
      "takeBalance(address,address,uint256,address)": {
        "notice": "Called by assessments and concepts to withdraw tokens from assessment participants"
      }
    }
  }
}