{
  "contractName": "MockCoin",
  "abi": [
    {
      "inputs": [],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Approval",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        }
      ],
      "name": "allowance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "decimals",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "subtractedValue",
          "type": "uint256"
        }
      ],
      "name": "decreaseAllowance",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "addedValue",
          "type": "uint256"
        }
      ],
      "name": "increaseAllowance",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "symbol",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "transfer",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "mint",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is called. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for ``sender``'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/home/user/Projects/future-contracts/contracts/test/MockCoin.sol\":\"MockCoin\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"/home/user/Projects/future-contracts/contracts/test/MockCoin.sol\":{\"keccak256\":\"0x527b221c586ec4f4348be9f36b57fb29f1527d10f89cdf2857ef681b83c2de37\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://a9a55ceb78882e750f71c138fc0e29b45157cb206c22af06eff2cf1f3e49a4fd\",\"dweb:/ipfs/QmevXPHriaDSZeye7PS9XgZxb8pficFqZQ9jaqAhkJECeA\"]},\"@openzeppelin/contracts/GSN/Context.sol\":{\"keccak256\":\"0x8d3cb350f04ff49cfb10aef08d87f19dcbaecc8027b0bed12f3275cd12f38cf0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ded47ec7c96750f9bd04bbbc84f659992d4ba901cb7b532a52cd468272cf378f\",\"dweb:/ipfs/QmfBrGtQP7rZEqEg6Wz6jh2N2Kukpj1z5v3CGWmAqrzm96\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x3b21f2c8d626de3b9925ae33e972d8bf5c8b1bffb3f4ee94daeed7d0679036e6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7f8d45329fecbf0836ad7543330c3ecd0f8d0ffa42d4016278c3eb2215fdcdfe\",\"dweb:/ipfs/QmXWLT7GcnHtA5NiD6MFi2CV3EWJY4wv5mLNnypqYDrxL3\"]},\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xcbd85c86627a47fd939f1f4ee3ba626575ff2a182e1804b29f5136394449b538\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://53c6a80c519bb9356aad28efa9a1ec31603860eb759d2dc57f545fcae1dd1aca\",\"dweb:/ipfs/QmfRS6TtMNUHhvgLHXK21qKNnpn2S7g2Yd1fKaHKyFiJsR\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x5f02220344881ce43204ae4a6281145a67bc52c2bb1290a791857df3d19d78f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://24427744bd3e6cb73c17010119af12a318289c0253a4d9acb8576c9fb3797b08\",\"dweb:/ipfs/QmTLDqpKRBuxGxRAmjgXt9AkXyACW3MtKzi7PYjm5iMfGC\"]}},\"version\":1}",
  "bytecode": "0x608060405234801561001057600080fd5b50604051806040016040528060048152602001634d6f636b60e01b815250604051806040016040528060038152602001624d434b60e81b8152508160039080519060200190610060929190610089565b508051610074906004906020840190610089565b50506005805460ff191660121790555061012a565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826100bf5760008555610105565b82601f106100d857805160ff1916838001178555610105565b82800160010185558215610105579182015b828111156101055782518255916020019190600101906100ea565b50610111929150610115565b5090565b5b808211156101115760008155600101610116565b610d7c806101396000396000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c806340c10f1911610081578063a457c2d71161005b578063a457c2d7146102cb578063a9059cbb14610304578063dd62ed3e1461033d576100d4565b806340c10f191461025757806370a082311461029057806395d89b41146102c3576100d4565b806323b872dd116100b257806323b872dd146101bd578063313ce56714610200578063395093511461021e576100d4565b806306fdde03146100d9578063095ea7b31461015657806318160ddd146101a3575b600080fd5b6100e1610378565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561011b578181015183820152602001610103565b50505050905090810190601f1680156101485780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61018f6004803603604081101561016c57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561042c565b604080519115158252519081900360200190f35b6101ab610449565b60408051918252519081900360200190f35b61018f600480360360608110156101d357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135909116906040013561044f565b6102086104f0565b6040805160ff9092168252519081900360200190f35b61018f6004803603604081101561023457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356104f9565b61018f6004803603604081101561026d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610554565b6101ab600480360360208110156102a657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610560565b6100e1610588565b61018f600480360360408110156102e157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610607565b61018f6004803603604081101561031a57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561067c565b6101ab6004803603604081101561035357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610690565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104225780601f106103f757610100808354040283529160200191610422565b820191906000526020600020905b81548152906001019060200180831161040557829003601f168201915b5050505050905090565b60006104406104396106c8565b84846106cc565b50600192915050565b60025490565b600061045c848484610813565b6104e6846104686106c8565b6104e185604051806060016040528060288152602001610cb16028913973ffffffffffffffffffffffffffffffffffffffff8a166000908152600160205260408120906104b36106c8565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040016000205491906109e3565b6106cc565b5060019392505050565b60055460ff1690565b60006104406105066106c8565b846104e185600160006105176106c8565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918c168152925290205490610a94565b60006104408383610b0f565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104225780601f106103f757610100808354040283529160200191610422565b60006104406106146106c8565b846104e185604051806060016040528060258152602001610d22602591396001600061063e6106c8565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918d168152925290205491906109e3565b60006104406106896106c8565b8484610813565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b3390565b73ffffffffffffffffffffffffffffffffffffffff8316610738576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180610cfe6024913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166107a4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610c696022913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff831661087f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180610cd96025913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166108eb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180610c466023913960400191505060405180910390fd5b6108f6838383610c40565b61094081604051806060016040528060268152602001610c8b6026913973ffffffffffffffffffffffffffffffffffffffff861660009081526020819052604090205491906109e3565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220939093559084168152205461097c9082610a94565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008184841115610a8c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610a51578181015183820152602001610a39565b50505050905090810190601f168015610a7e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015610b0857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8216610b9157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b610b9d60008383610c40565b600254610baa9082610a94565b60025573ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054610bdd9082610a94565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212202ce3204610742ce2075895da6e95896ac1ec51d05afe174ad3c82e32f5b2b8d864736f6c63430007060033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100d45760003560e01c806340c10f1911610081578063a457c2d71161005b578063a457c2d7146102cb578063a9059cbb14610304578063dd62ed3e1461033d576100d4565b806340c10f191461025757806370a082311461029057806395d89b41146102c3576100d4565b806323b872dd116100b257806323b872dd146101bd578063313ce56714610200578063395093511461021e576100d4565b806306fdde03146100d9578063095ea7b31461015657806318160ddd146101a3575b600080fd5b6100e1610378565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561011b578181015183820152602001610103565b50505050905090810190601f1680156101485780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61018f6004803603604081101561016c57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561042c565b604080519115158252519081900360200190f35b6101ab610449565b60408051918252519081900360200190f35b61018f600480360360608110156101d357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135909116906040013561044f565b6102086104f0565b6040805160ff9092168252519081900360200190f35b61018f6004803603604081101561023457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356104f9565b61018f6004803603604081101561026d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610554565b6101ab600480360360208110156102a657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610560565b6100e1610588565b61018f600480360360408110156102e157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610607565b61018f6004803603604081101561031a57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561067c565b6101ab6004803603604081101561035357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610690565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104225780601f106103f757610100808354040283529160200191610422565b820191906000526020600020905b81548152906001019060200180831161040557829003601f168201915b5050505050905090565b60006104406104396106c8565b84846106cc565b50600192915050565b60025490565b600061045c848484610813565b6104e6846104686106c8565b6104e185604051806060016040528060288152602001610cb16028913973ffffffffffffffffffffffffffffffffffffffff8a166000908152600160205260408120906104b36106c8565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040016000205491906109e3565b6106cc565b5060019392505050565b60055460ff1690565b60006104406105066106c8565b846104e185600160006105176106c8565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918c168152925290205490610a94565b60006104408383610b0f565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104225780601f106103f757610100808354040283529160200191610422565b60006104406106146106c8565b846104e185604051806060016040528060258152602001610d22602591396001600061063e6106c8565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918d168152925290205491906109e3565b60006104406106896106c8565b8484610813565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b3390565b73ffffffffffffffffffffffffffffffffffffffff8316610738576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180610cfe6024913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166107a4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610c696022913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff831661087f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180610cd96025913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166108eb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180610c466023913960400191505060405180910390fd5b6108f6838383610c40565b61094081604051806060016040528060268152602001610c8b6026913973ffffffffffffffffffffffffffffffffffffffff861660009081526020819052604090205491906109e3565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220939093559084168152205461097c9082610a94565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008184841115610a8c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610a51578181015183820152602001610a39565b50505050905090810190601f168015610a7e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015610b0857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8216610b9157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b610b9d60008383610c40565b600254610baa9082610a94565b60025573ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054610bdd9082610a94565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212202ce3204610742ce2075895da6e95896ac1ec51d05afe174ad3c82e32f5b2b8d864736f6c63430007060033",
  "immutableReferences": {},
  "generatedSources": [],
  "deployedGeneratedSources": [],
  "sourceMap": "128:209:16:-:0;;;161:39;;;;;;;;;;1956:145:26;;;;;;;;;;;;;-1:-1:-1;;;1956:145:26;;;;;;;;;;;;;;;;-1:-1:-1;;;1956:145:26;;;2038:5;2030;:13;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2053:17:26;;;;:7;;:17;;;;;:::i;:::-;-1:-1:-1;;2080:9:26;:14;;-1:-1:-1;;2080:14:26;2092:2;2080:14;;;-1:-1:-1;128:209:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;128:209:16;;;-1:-1:-1;128:209:16;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;",
  "deployedSourceMap": "128:209:16:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2166:81:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4202:166;;;;;;;;;;;;;;;;-1:-1:-1;4202:166:26;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;3209:98;;;:::i;:::-;;;;;;;;;;;;;;;;4835:317;;;;;;;;;;;;;;;;-1:-1:-1;4835:317:26;;;;;;;;;;;;;;;;;;:::i;3068:81::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5547:215;;;;;;;;;;;;;;;;-1:-1:-1;5547:215:26;;;;;;;;;:::i;206:129:16:-;;;;;;;;;;;;;;;;-1:-1:-1;206:129:16;;;;;;;;;:::i;3365:117:26:-;;;;;;;;;;;;;;;;-1:-1:-1;3365:117:26;;;;:::i;2360:85::-;;;:::i;6249:266::-;;;;;;;;;;;;;;;;-1:-1:-1;6249:266:26;;;;;;;;;:::i;3685:172::-;;;;;;;;;;;;;;;;-1:-1:-1;3685:172:26;;;;;;;;;:::i;3915:149::-;;;;;;;;;;;;;;;;-1:-1:-1;3915:149:26;;;;;;;;;;;:::i;2166:81::-;2235:5;2228:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2203:13;;2228:12;;2235:5;;2228:12;;2235:5;2228:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2166:81;:::o;4202:166::-;4285:4;4301:39;4310:12;:10;:12::i;:::-;4324:7;4333:6;4301:8;:39::i;:::-;-1:-1:-1;4357:4:26;4202:166;;;;:::o;3209:98::-;3288:12;;3209:98;:::o;4835:317::-;4941:4;4957:36;4967:6;4975:9;4986:6;4957:9;:36::i;:::-;5003:121;5012:6;5020:12;:10;:12::i;:::-;5034:89;5072:6;5034:89;;;;;;;;;;;;;;;;;:19;;;;;;;:11;:19;;;;;;5054:12;:10;:12::i;:::-;5034:33;;;;;;;;;;;;;-1:-1:-1;5034:33:26;;;:89;:37;:89::i;:::-;5003:8;:121::i;:::-;-1:-1:-1;5141:4:26;4835:317;;;;;:::o;3068:81::-;3133:9;;;;3068:81;:::o;5547:215::-;5635:4;5651:83;5660:12;:10;:12::i;:::-;5674:7;5683:50;5722:10;5683:11;:25;5695:12;:10;:12::i;:::-;5683:25;;;;;;;;;;;;;;;;;;-1:-1:-1;5683:25:26;;;:34;;;;;;;;;;;:38;:50::i;206:129:16:-;269:4;285:22;291:7;300:6;285:5;:22::i;3365:117:26:-;3457:18;;3431:7;3457:18;;;;;;;;;;;;3365:117::o;2360:85::-;2431:7;2424:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2399:13;;2424:14;;2431:7;;2424:14;;2431:7;2424:14;;;;;;;;;;;;;;;;;;;;;;;;6249:266;6342:4;6358:129;6367:12;:10;:12::i;:::-;6381:7;6390:96;6429:15;6390:96;;;;;;;;;;;;;;;;;:11;:25;6402:12;:10;:12::i;:::-;6390:25;;;;;;;;;;;;;;;;;;-1:-1:-1;6390:25:26;;;:34;;;;;;;;;;;:96;:38;:96::i;3685:172::-;3771:4;3787:42;3797:12;:10;:12::i;:::-;3811:9;3822:6;3787:9;:42::i;3915:149::-;4030:18;;;;4004:7;4030:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3915:149::o;598:104:17:-;685:10;598:104;:::o;9313:340:26:-;9414:19;;;9406:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9492:21;;;9484:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9563:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9614:32;;;;;;;;;;;;;;;;;9313:340;;;:::o;6989:530::-;7094:20;;;7086:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7174:23;;;7166:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7248:47;7269:6;7277:9;7288:6;7248:20;:47::i;:::-;7326:71;7348:6;7326:71;;;;;;;;;;;;;;;;;:17;;;:9;:17;;;;;;;;;;;;:71;:21;:71::i;:::-;7306:17;;;;:9;:17;;;;;;;;;;;:91;;;;7430:20;;;;;;;:32;;7455:6;7430:24;:32::i;:::-;7407:20;;;;:9;:20;;;;;;;;;;;;:55;;;;7477:35;;;;;;;7407:20;;7477:35;;;;;;;;;;;;;6989:530;;;:::o;1754:187:20:-;1840:7;1875:12;1867:6;;;;1859:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1910:5:20;;;1754:187::o;882:176::-;940:7;971:5;;;994:6;;;;986:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1050:1;882:176;-1:-1:-1;;;882:176:20:o;7790:370:26:-;7873:21;;;7865:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7941:49;7970:1;7974:7;7983:6;7941:20;:49::i;:::-;8016:12;;:24;;8033:6;8016:16;:24::i;:::-;8001:12;:39;8071:18;;;:9;:18;;;;;;;;;;;:30;;8094:6;8071:22;:30::i;:::-;8050:18;;;:9;:18;;;;;;;;;;;:51;;;;8116:37;;;;;;;8050:18;;:9;;8116:37;;;;;;;;;;7790:370;;:::o;10651:92::-;;;;:::o",
  "source": "// SPDX-License-Identifier: LGPL-3.0-or-later\npragma solidity ^0.7.1;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\ncontract MockCoin is ERC20 {\n    constructor () ERC20(\"Mock\", \"MCK\") { }\n\n    function mint(address account, uint256 amount) public returns (bool) {\n        _mint(account, amount);\n        return true;\n    }\n}\n",
  "sourcePath": "/home/user/Projects/future-contracts/contracts/test/MockCoin.sol",
  "ast": {
    "absolutePath": "/home/user/Projects/future-contracts/contracts/test/MockCoin.sol",
    "exportedSymbols": {
      "Context": [
        4324
      ],
      "ERC20": [
        5349
      ],
      "IERC20": [
        5427
      ],
      "MockCoin": [
        4301
      ],
      "SafeMath": [
        4589
      ]
    },
    "id": 4302,
    "license": "LGPL-3.0-or-later",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 4272,
        "literals": [
          "solidity",
          "^",
          "0.7",
          ".1"
        ],
        "nodeType": "PragmaDirective",
        "src": "46:23:16"
      },
      {
        "absolutePath": "@openzeppelin/contracts/token/ERC20/ERC20.sol",
        "file": "@openzeppelin/contracts/token/ERC20/ERC20.sol",
        "id": 4273,
        "nodeType": "ImportDirective",
        "scope": 4302,
        "sourceUnit": 5350,
        "src": "71:55:16",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "baseName": {
              "id": 4274,
              "name": "ERC20",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 5349,
              "src": "149:5:16",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ERC20_$5349",
                "typeString": "contract ERC20"
              }
            },
            "id": 4275,
            "nodeType": "InheritanceSpecifier",
            "src": "149:5:16"
          }
        ],
        "contractDependencies": [
          4324,
          5349,
          5427
        ],
        "contractKind": "contract",
        "fullyImplemented": true,
        "id": 4301,
        "linearizedBaseContracts": [
          4301,
          5349,
          5427,
          4324
        ],
        "name": "MockCoin",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 4282,
              "nodeType": "Block",
              "src": "197:3:16",
              "statements": []
            },
            "id": 4283,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [
                  {
                    "hexValue": "4d6f636b",
                    "id": 4278,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "182:6:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_b6719659e1320df3593ef1d62831d5830f1fdce720f856f4e26e013032b7e58c",
                      "typeString": "literal_string \"Mock\""
                    },
                    "value": "Mock"
                  },
                  {
                    "hexValue": "4d434b",
                    "id": 4279,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "190:5:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_9c3aa7d11ecb9affb5001de98d930d23db7380c6f51732a92986229c98447bc4",
                      "typeString": "literal_string \"MCK\""
                    },
                    "value": "MCK"
                  }
                ],
                "id": 4280,
                "modifierName": {
                  "id": 4277,
                  "name": "ERC20",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 5349,
                  "src": "176:5:16",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_ERC20_$5349_$",
                    "typeString": "type(contract ERC20)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "176:20:16"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4276,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "173:2:16"
            },
            "returnParameters": {
              "id": 4281,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "197:0:16"
            },
            "scope": 4301,
            "src": "161:39:16",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4299,
              "nodeType": "Block",
              "src": "275:60:16",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 4293,
                        "name": "account",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4285,
                        "src": "291:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 4294,
                        "name": "amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4287,
                        "src": "300:6:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 4292,
                      "name": "_mint",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5225,
                      "src": "285:5:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 4295,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "285:22:16",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4296,
                  "nodeType": "ExpressionStatement",
                  "src": "285:22:16"
                },
                {
                  "expression": {
                    "hexValue": "74727565",
                    "id": 4297,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "324:4:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 4291,
                  "id": 4298,
                  "nodeType": "Return",
                  "src": "317:11:16"
                }
              ]
            },
            "functionSelector": "40c10f19",
            "id": 4300,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "mint",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4288,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4285,
                  "mutability": "mutable",
                  "name": "account",
                  "nodeType": "VariableDeclaration",
                  "scope": 4300,
                  "src": "220:15:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4284,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "220:7:16",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4287,
                  "mutability": "mutable",
                  "name": "amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 4300,
                  "src": "237:14:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4286,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "237:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "219:33:16"
            },
            "returnParameters": {
              "id": 4291,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4290,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 4300,
                  "src": "269:4:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 4289,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "269:4:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "268:6:16"
            },
            "scope": 4301,
            "src": "206:129:16",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          }
        ],
        "scope": 4302,
        "src": "128:209:16"
      }
    ],
    "src": "46:292:16"
  },
  "legacyAST": {
    "attributes": {
      "absolutePath": "/home/user/Projects/future-contracts/contracts/test/MockCoin.sol",
      "exportedSymbols": {
        "Context": [
          4324
        ],
        "ERC20": [
          5349
        ],
        "IERC20": [
          5427
        ],
        "MockCoin": [
          4301
        ],
        "SafeMath": [
          4589
        ]
      },
      "license": "LGPL-3.0-or-later"
    },
    "children": [
      {
        "attributes": {
          "literals": [
            "solidity",
            "^",
            "0.7",
            ".1"
          ]
        },
        "id": 4272,
        "name": "PragmaDirective",
        "src": "46:23:16"
      },
      {
        "attributes": {
          "SourceUnit": 5350,
          "absolutePath": "@openzeppelin/contracts/token/ERC20/ERC20.sol",
          "file": "@openzeppelin/contracts/token/ERC20/ERC20.sol",
          "scope": 4302,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 4273,
        "name": "ImportDirective",
        "src": "71:55:16"
      },
      {
        "attributes": {
          "abstract": false,
          "contractDependencies": [
            4324,
            5349,
            5427
          ],
          "contractKind": "contract",
          "fullyImplemented": true,
          "linearizedBaseContracts": [
            4301,
            5349,
            5427,
            4324
          ],
          "name": "MockCoin",
          "scope": 4302
        },
        "children": [
          {
            "attributes": {},
            "children": [
              {
                "attributes": {
                  "name": "ERC20",
                  "referencedDeclaration": 5349,
                  "type": "contract ERC20"
                },
                "id": 4274,
                "name": "UserDefinedTypeName",
                "src": "149:5:16"
              }
            ],
            "id": 4275,
            "name": "InheritanceSpecifier",
            "src": "149:5:16"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": true,
              "kind": "constructor",
              "name": "",
              "scope": 4301,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 4276,
                "name": "ParameterList",
                "src": "173:2:16"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 4281,
                "name": "ParameterList",
                "src": "197:0:16"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 5349,
                      "type": "type(contract ERC20)",
                      "value": "ERC20"
                    },
                    "id": 4277,
                    "name": "Identifier",
                    "src": "176:5:16"
                  },
                  {
                    "attributes": {
                      "hexvalue": "4d6f636b",
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "token": "string",
                      "type": "literal_string \"Mock\"",
                      "value": "Mock"
                    },
                    "id": 4278,
                    "name": "Literal",
                    "src": "182:6:16"
                  },
                  {
                    "attributes": {
                      "hexvalue": "4d434b",
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "token": "string",
                      "type": "literal_string \"MCK\"",
                      "value": "MCK"
                    },
                    "id": 4279,
                    "name": "Literal",
                    "src": "190:5:16"
                  }
                ],
                "id": 4280,
                "name": "ModifierInvocation",
                "src": "176:20:16"
              },
              {
                "attributes": {
                  "statements": [
                    null
                  ]
                },
                "children": [],
                "id": 4282,
                "name": "Block",
                "src": "197:3:16"
              }
            ],
            "id": 4283,
            "name": "FunctionDefinition",
            "src": "161:39:16"
          },
          {
            "attributes": {
              "functionSelector": "40c10f19",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "mint",
              "scope": 4301,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "account",
                      "scope": 4300,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 4284,
                        "name": "ElementaryTypeName",
                        "src": "220:7:16"
                      }
                    ],
                    "id": 4285,
                    "name": "VariableDeclaration",
                    "src": "220:15:16"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "amount",
                      "scope": 4300,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 4286,
                        "name": "ElementaryTypeName",
                        "src": "237:7:16"
                      }
                    ],
                    "id": 4287,
                    "name": "VariableDeclaration",
                    "src": "237:14:16"
                  }
                ],
                "id": 4288,
                "name": "ParameterList",
                "src": "219:33:16"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "scope": 4300,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 4289,
                        "name": "ElementaryTypeName",
                        "src": "269:4:16"
                      }
                    ],
                    "id": 4290,
                    "name": "VariableDeclaration",
                    "src": "269:4:16"
                  }
                ],
                "id": 4291,
                "name": "ParameterList",
                "src": "268:6:16"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 5225,
                              "type": "function (address,uint256)",
                              "value": "_mint"
                            },
                            "id": 4292,
                            "name": "Identifier",
                            "src": "285:5:16"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4285,
                              "type": "address",
                              "value": "account"
                            },
                            "id": 4293,
                            "name": "Identifier",
                            "src": "291:7:16"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4287,
                              "type": "uint256",
                              "value": "amount"
                            },
                            "id": 4294,
                            "name": "Identifier",
                            "src": "300:6:16"
                          }
                        ],
                        "id": 4295,
                        "name": "FunctionCall",
                        "src": "285:22:16"
                      }
                    ],
                    "id": 4296,
                    "name": "ExpressionStatement",
                    "src": "285:22:16"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 4291
                    },
                    "children": [
                      {
                        "attributes": {
                          "hexvalue": "74727565",
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "token": "bool",
                          "type": "bool",
                          "value": "true"
                        },
                        "id": 4297,
                        "name": "Literal",
                        "src": "324:4:16"
                      }
                    ],
                    "id": 4298,
                    "name": "Return",
                    "src": "317:11:16"
                  }
                ],
                "id": 4299,
                "name": "Block",
                "src": "275:60:16"
              }
            ],
            "id": 4300,
            "name": "FunctionDefinition",
            "src": "206:129:16"
          }
        ],
        "id": 4301,
        "name": "ContractDefinition",
        "src": "128:209:16"
      }
    ],
    "id": 4302,
    "name": "SourceUnit",
    "src": "46:292:16"
  },
  "compiler": {
    "name": "solc",
    "version": "0.7.6+commit.7338295f.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.4.1",
  "updatedAt": "2021-06-03T23:56:22.326Z",
  "devdoc": {
    "kind": "dev",
    "methods": {
      "allowance(address,address)": {
        "details": "See {IERC20-allowance}."
      },
      "approve(address,uint256)": {
        "details": "See {IERC20-approve}. Requirements: - `spender` cannot be the zero address."
      },
      "balanceOf(address)": {
        "details": "See {IERC20-balanceOf}."
      },
      "decimals()": {
        "details": "Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is called. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."
      },
      "decreaseAllowance(address,uint256)": {
        "details": "Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`."
      },
      "increaseAllowance(address,uint256)": {
        "details": "Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address."
      },
      "name()": {
        "details": "Returns the name of the token."
      },
      "symbol()": {
        "details": "Returns the symbol of the token, usually a shorter version of the name."
      },
      "totalSupply()": {
        "details": "See {IERC20-totalSupply}."
      },
      "transfer(address,uint256)": {
        "details": "See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`."
      },
      "transferFrom(address,address,uint256)": {
        "details": "See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for ``sender``'s tokens of at least `amount`."
      }
    },
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {},
    "version": 1
  }
}