{
  "contractName": "EER2B",
  "abi": [
    {
      "constant": true,
      "inputs": [
        {
          "name": "_owner",
          "type": "address"
        },
        {
          "name": "_typeID",
          "type": "uint256"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "metalinks",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "maxIndex",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_from",
          "type": "address"
        },
        {
          "name": "_to",
          "type": "address"
        },
        {
          "name": "_typeIDs",
          "type": "uint256[]"
        },
        {
          "name": "_values",
          "type": "uint256[]"
        },
        {
          "name": "_data",
          "type": "bytes"
        }
      ],
      "name": "safeBatchTransferFrom",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_typeID",
          "type": "uint256"
        }
      ],
      "name": "metaLink",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_owners",
          "type": "address[]"
        },
        {
          "name": "_typeIDs",
          "type": "uint256[]"
        }
      ],
      "name": "balanceOfBatch",
      "outputs": [
        {
          "name": "",
          "type": "uint256[]"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "itemID",
          "type": "uint256"
        }
      ],
      "name": "isNonFungibleItem",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_itemID",
          "type": "uint256"
        }
      ],
      "name": "ownerOf",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_itemID",
          "type": "uint256"
        }
      ],
      "name": "getNonFungibleBaseType",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_typeID",
          "type": "uint256"
        }
      ],
      "name": "isNonFungibleBaseType",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "minters",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_itemID",
          "type": "uint256"
        }
      ],
      "name": "getNonFungibleIndex",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_operator",
          "type": "address"
        },
        {
          "name": "_approved",
          "type": "bool"
        }
      ],
      "name": "setApprovalForAll",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_typeID",
          "type": "uint256"
        }
      ],
      "name": "isFungible",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "totalSupplies",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_typeID",
          "type": "uint256"
        }
      ],
      "name": "isNonFungible",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_owner",
          "type": "address"
        },
        {
          "name": "_operator",
          "type": "address"
        }
      ],
      "name": "isApprovedForAll",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_from",
          "type": "address"
        },
        {
          "name": "_to",
          "type": "address"
        },
        {
          "name": "_typeID",
          "type": "uint256"
        },
        {
          "name": "_value",
          "type": "uint256"
        },
        {
          "name": "_data",
          "type": "bytes"
        }
      ],
      "name": "safeTransferFrom",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_froms",
          "type": "address[]"
        },
        {
          "name": "_tos",
          "type": "address[]"
        },
        {
          "name": "_typeIDs",
          "type": "uint256[]"
        },
        {
          "name": "_values",
          "type": "uint256[]"
        },
        {
          "name": "_data",
          "type": "bytes"
        }
      ],
      "name": "safeFullBatchTransferFrom",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "_owner",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "_operator",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "_approved",
          "type": "bool"
        }
      ],
      "name": "ApprovalForAll",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "_operator",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "_from",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "_to",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "_typeID",
          "type": "uint256"
        },
        {
          "indexed": false,
          "name": "_value",
          "type": "uint256"
        }
      ],
      "name": "TransferSingle",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "_operator",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "_from",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "_to",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "_typeIDs",
          "type": "uint256[]"
        },
        {
          "indexed": false,
          "name": "_values",
          "type": "uint256[]"
        }
      ],
      "name": "TransferBatch",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "_operator",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "_froms",
          "type": "address[]"
        },
        {
          "indexed": false,
          "name": "_tos",
          "type": "address[]"
        },
        {
          "indexed": false,
          "name": "_typeIDs",
          "type": "uint256[]"
        },
        {
          "indexed": false,
          "name": "_values",
          "type": "uint256[]"
        },
        {
          "indexed": true,
          "name": "_key",
          "type": "bytes"
        }
      ],
      "name": "TransferFullBatch",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "name": "_value",
          "type": "string"
        },
        {
          "indexed": true,
          "name": "_typeID",
          "type": "uint256"
        }
      ],
      "name": "URI",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "_typeID",
          "type": "uint256"
        },
        {
          "indexed": false,
          "name": "_minter",
          "type": "address"
        }
      ],
      "name": "SetMinter",
      "type": "event"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_metaLink",
          "type": "string"
        },
        {
          "name": "_isNF",
          "type": "bool"
        }
      ],
      "name": "create",
      "outputs": [
        {
          "name": "_typeID",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_typeID",
          "type": "uint256"
        }
      ],
      "name": "totalSupply",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_typeID",
          "type": "uint256"
        },
        {
          "name": "_tos",
          "type": "address[]"
        }
      ],
      "name": "mintNonFungible",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_typeID",
          "type": "uint256"
        },
        {
          "name": "_tos",
          "type": "address[]"
        },
        {
          "name": "_values",
          "type": "uint256[]"
        }
      ],
      "name": "mintFungible",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_itemID",
          "type": "uint256"
        },
        {
          "name": "_from",
          "type": "address"
        }
      ],
      "name": "burnNonFungible",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_typeID",
          "type": "uint256"
        },
        {
          "name": "_from",
          "type": "address"
        },
        {
          "name": "_value",
          "type": "uint256"
        }
      ],
      "name": "burnFungible",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_typeID",
          "type": "uint256"
        },
        {
          "name": "_to",
          "type": "address"
        }
      ],
      "name": "setMinter",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.5.0+commit.1d4f565a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\"},{\"name\":\"_typeID\",\"type\":\"uint256\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"metalinks\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"maxIndex\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_typeIDs\",\"type\":\"uint256[]\"},{\"name\":\"_values\",\"type\":\"uint256[]\"},{\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"safeBatchTransferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_typeID\",\"type\":\"uint256\"}],\"name\":\"metaLink\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_owners\",\"type\":\"address[]\"},{\"name\":\"_typeIDs\",\"type\":\"uint256[]\"}],\"name\":\"balanceOfBatch\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"itemID\",\"type\":\"uint256\"}],\"name\":\"isNonFungibleItem\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_itemID\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_itemID\",\"type\":\"uint256\"}],\"name\":\"getNonFungibleBaseType\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_typeID\",\"type\":\"uint256\"}],\"name\":\"isNonFungibleBaseType\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_typeID\",\"type\":\"uint256\"},{\"name\":\"_tos\",\"type\":\"address[]\"},{\"name\":\"_values\",\"type\":\"uint256[]\"}],\"name\":\"mintFungible\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"minters\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_itemID\",\"type\":\"uint256\"}],\"name\":\"getNonFungibleIndex\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_typeID\",\"type\":\"uint256\"},{\"name\":\"_to\",\"type\":\"address\"}],\"name\":\"setMinter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_operator\",\"type\":\"address\"},{\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_typeID\",\"type\":\"uint256\"}],\"name\":\"isFungible\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"totalSupplies\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_typeID\",\"type\":\"uint256\"}],\"name\":\"totalSupply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_typeID\",\"type\":\"uint256\"},{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"burnFungible\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_metaLink\",\"type\":\"string\"},{\"name\":\"_isNF\",\"type\":\"bool\"}],\"name\":\"create\",\"outputs\":[{\"name\":\"_typeID\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_typeID\",\"type\":\"uint256\"}],\"name\":\"isNonFungible\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\"},{\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_typeID\",\"type\":\"uint256\"},{\"name\":\"_value\",\"type\":\"uint256\"},{\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_froms\",\"type\":\"address[]\"},{\"name\":\"_tos\",\"type\":\"address[]\"},{\"name\":\"_typeIDs\",\"type\":\"uint256[]\"},{\"name\":\"_values\",\"type\":\"uint256[]\"},{\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"safeFullBatchTransferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_itemID\",\"type\":\"uint256\"},{\"name\":\"_from\",\"type\":\"address\"}],\"name\":\"burnNonFungible\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_typeID\",\"type\":\"uint256\"},{\"name\":\"_tos\",\"type\":\"address[]\"}],\"name\":\"mintNonFungible\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"_operator\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_operator\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"_typeID\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"TransferSingle\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_operator\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"_typeIDs\",\"type\":\"uint256[]\"},{\"indexed\":false,\"name\":\"_values\",\"type\":\"uint256[]\"}],\"name\":\"TransferBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_operator\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"_froms\",\"type\":\"address[]\"},{\"indexed\":false,\"name\":\"_tos\",\"type\":\"address[]\"},{\"indexed\":false,\"name\":\"_typeIDs\",\"type\":\"uint256[]\"},{\"indexed\":false,\"name\":\"_values\",\"type\":\"uint256[]\"},{\"indexed\":true,\"name\":\"_key\",\"type\":\"bytes\"}],\"name\":\"TransferFullBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_value\",\"type\":\"string\"},{\"indexed\":true,\"name\":\"_typeID\",\"type\":\"uint256\"}],\"name\":\"URI\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_typeID\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"_minter\",\"type\":\"address\"}],\"name\":\"SetMinter\",\"type\":\"event\"}],\"devdoc\":{\"methods\":{\"balanceOf(address,uint256)\":{\"details\":\"EER2 balanceOf function\",\"params\":{\"_owner\":\"The address of the token holder\",\"_typeID\":\"ID of the Token\"},\"return\":\"The _owner's balance of the Token type requested\"},\"balanceOfBatch(address[],uint256[])\":{\"details\":\"EER2 balanceOfBatch function\",\"params\":{\"_owners\":\"The addresses of the token holders\",\"_typeIDs\":\"ID of the Tokens\"},\"return\":\"The _owner's balance of the Token types requested (i.e. balance for each (owner, typeID) pair)\"},\"burnFungible(uint256,address,uint256)\":{\"params\":{\"_from\":\"Source address\",\"_typeID\":\"Credit type\",\"_value\":\"Burn Credit quantities\"}},\"burnNonFungible(uint256,address)\":{\"params\":{\"_from\":\"Source address\",\"_itemID\":\"Item of non-fungible credit type\"}},\"isApprovedForAll(address,address)\":{\"params\":{\"_operator\":\"Address of authorized operator\",\"_owner\":\"The owner of the Tokens\"},\"return\":\"True if the operator is approved, false if not\"},\"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)\":{\"details\":\"Caller must be approved to manage the tokens being transferred out of the `_from` account. MUST revert if `_to` is the zero address. MUST revert if length of `_typeIDs` is not the same as length of `_values`. MUST revert if any of the balance(s) of the holder(s) for token(s) in `_typeIDs` is lower than the respective amount(s) in `_values` sent to the recipient. MUST revert on any other error. MUST emit `TransferSingle` or `TransferBatch` event(s).\",\"params\":{\"_data\":\"Data sending to event logs\",\"_from\":\"Source address\",\"_to\":\"Target address\",\"_typeIDs\":\"IDs of each token type (order and length must match _values array)\",\"_values\":\"Transfer amounts per token type (order and length must match _typeIDs array)\"}},\"safeFullBatchTransferFrom(address[],address[],uint256[],uint256[],bytes)\":{\"details\":\"Caller must be approved or be an owner of the credit being transferred. MUST be revert if the `_typeID` is invalid. MUST be revert if no authorized to transfer. MUST be revert if `_from`'s `_typeID` balance less than `_value`. MUST be revert if `_from` or `_to` is the zero address. MUST be revert if `_to` is a smart contract but does not implement EER2TokenReceiver. MUST be revert if number of `_froms` `_tos` `_typeIDs` and `_values` does not eqaul. MUST emit TransferFullBatch event.\",\"params\":{\"_data\":\"Data sending to event logs\",\"_froms\":\"List of Source addresses\",\"_tos\":\"List of Target addresses\",\"_typeIDs\":\"List of ID of the credit types\",\"_values\":\"List of Transfer amounts\"}},\"safeTransferFrom(address,address,uint256,uint256,bytes)\":{\"details\":\"Caller must be approved to manage the tokens being transferred out of the `_from` account. MUST revert if `_to` is the zero address. MUST revert if balance of holder for token `_typeID` is lower than the `_value` sent. MUST revert on any other error. MUST emit the `TransferSingle` event. \",\"params\":{\"_data\":\"Data sending to event logs\",\"_from\":\"Source address\",\"_to\":\"Target address\",\"_typeID\":\"ID of the token type\",\"_value\":\"Transfer amount\"}},\"setApprovalForAll(address,bool)\":{\"details\":\"MUST emit the ApprovalForAll event on success.\",\"params\":{\"_approved\":\"True if the operator is approved, false to revoke approval\",\"_operator\":\"Address to add to the set of authorized operators\"}},\"setMinter(uint256,address)\":{\"params\":{\"_to\":\"New minter, in case of address 0 the authorized will be locked forever\",\"_typeID\":\"Credit _typeID (when credit is fungible) or _type (when credit is non-fungible)\"}},\"totalSupply(uint256)\":{\"params\":{\"_typeID\":\"ID of the Credit type\"},\"return\":\"The total supply of the Token type requested\"}}},\"userdoc\":{\"methods\":{\"balanceOf(address,uint256)\":{\"notice\":\"Get the balance of an account's Tokens.\"},\"balanceOfBatch(address[],uint256[])\":{\"notice\":\"Get the balance of multiple account/token pairs (override)\"},\"burnFungible(uint256,address,uint256)\":{\"notice\":\"Delete `_value` of Credit `_typeID` from the world.\"},\"burnNonFungible(uint256,address)\":{\"notice\":\"Delete `_value` of Credit `_itemID` from the world.\"},\"isApprovedForAll(address,address)\":{\"notice\":\"Queries the approval status of an operator for a given owner.\"},\"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)\":{\"notice\":\"Transfers `_values` amount(s) of `_typeIDs` from the `_from` address to the `_to` address specified (with safety call).\"},\"safeFullBatchTransferFrom(address[],address[],uint256[],uint256[],bytes)\":{\"notice\":\"Multiple transfer with [multi-sender] [multi-receiver] and [muti-]credit type.\"},\"safeTransferFrom(address,address,uint256,uint256,bytes)\":{\"notice\":\"Transfers `_value` amount of an `_typeID` from the `_from` address to the `_to` address specified (with safety call).\"},\"setApprovalForAll(address,bool)\":{\"notice\":\"Enable or disable approval for a third party (\\\"operator\\\") to manage all of the caller's tokens.\"},\"setMinter(uint256,address)\":{\"notice\":\"give `_type` creator authorized to `_minter`.\"},\"totalSupply(uint256)\":{\"notice\":\"Get the total supply of a Credit.\"}}}},\"settings\":{\"compilationTarget\":{\"@Evrynetlabs/credit-contract/contracts/EER2B.sol\":\"EER2B\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@Evrynetlabs/credit-contract/contracts/EER2A.sol\":{\"keccak256\":\"0xf587547e337ca82e02112b697f9f6575fa2b216b1bdf99bc8f31301e37c9040f\",\"urls\":[\"bzzr://98cea014b451ffecaffd9067997955f5aa82e230c2147dbe8cad4fe1fe45b15a\"]},\"@Evrynetlabs/credit-contract/contracts/EER2B.sol\":{\"keccak256\":\"0xd8be5ffa39877c2bb907033c961a3cd297aeb9401bb4b11cdd7816427a85a2f5\",\"urls\":[\"bzzr://1b66a991c02ecd4a20a923dc05fc5560a27c37f20d9941d73ea3d4a6449f3764\"]},\"@Evrynetlabs/credit-contract/contracts/IEER2A.sol\":{\"keccak256\":\"0xa966511cbbb94eb21ae8b492f5189deb44d05827b73432bf46dd9e1a5260b4dc\",\"urls\":[\"bzzr://c878777f49799664ac6e583aacde59ea97e894f6a57c3822615f5f7ed8ee26d5\"]},\"@Evrynetlabs/credit-contract/contracts/IEER2B.sol\":{\"keccak256\":\"0xfea74ab98ddc2254ae89edd408586a0e8d855cef9ca46f116862ce85f069e214\",\"urls\":[\"bzzr://eac5d51e127ff328ef72b817b946202843d282c36ec49696fb24168d95ea08f3\"]},\"@Evrynetlabs/credit-contract/contracts/IEER2TokenReceiver.sol\":{\"keccak256\":\"0x788e5351918d81c8afe4465fcf2624947e7b2261d85f2f539fea413d85c9128e\",\"urls\":[\"bzzr://df72bbeb95755ea0298775633a45d7e78fffe3c619b2e168309f47d4cc8e07db\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xd1804d04fb39689453f673601429a99a0c68c422a981fc338773df9a59180fe9\",\"urls\":[\"bzzr://a7dfb6fc259d0074da840a848461487567e2a6309105dd5c050a4e025f0fa7cb\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xf3358e5819ca73357abd6c90bdfffd0474af54364897f6b3e3234c4b71fbe9a1\",\"urls\":[\"bzzr://f7f6da60a184233fd666ac44e6fb2bd51ca6ebdc4867a310d368049aa4e62786\"]}},\"version\":1}",
  "bytecode": "0x608060405234801561001057600080fd5b50612e89806100206000396000f3fe6080604052600436106101365760003560e01c63ffffffff168062fdd58e1461013b57806301c376a01461018657806308d7d469146102255780632eb2c2d61461024f57806346cb2f1b1461038b5780634e1273f4146103b55780635e81b958146104d45780636352211e146105125780636f969c2d146105585780637269a3271461058257806378b27221146105ac5780638623ec7b146106825780639cca1c64146106ac578063a048046b146106d6578063a22cb4651461070f578063adebf6f21461074a578063b54fa47414610774578063bd85b0391461079e578063beafd19f146107c8578063cc10e40114610807578063e44591f014610886578063e985e9c5146108b0578063f242432a146108eb578063f4b781cb1461098d578063f5e9942114610b52578063f941908814610b8b575b600080fd5b34801561014757600080fd5b506101746004803603604081101561015e57600080fd5b50600160a060020a038135169060200135610c0f565b60408051918252519081900360200190f35b34801561019257600080fd5b506101b0600480360360208110156101a957600080fd5b5035610c7f565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101ea5781810151838201526020016101d2565b50505050905090810190601f1680156102175780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561023157600080fd5b506101746004803603602081101561024857600080fd5b5035610d1a565b34801561025b57600080fd5b50610389600480360360a081101561027257600080fd5b600160a060020a0382358116926020810135909116918101906060810160408201356401000000008111156102a657600080fd5b8201836020820111156102b857600080fd5b803590602001918460208302840111640100000000831117156102da57600080fd5b9193909290916020810190356401000000008111156102f857600080fd5b82018360208201111561030a57600080fd5b8035906020019184602083028401116401000000008311171561032c57600080fd5b91939092909160208101903564010000000081111561034a57600080fd5b82018360208201111561035c57600080fd5b8035906020019184600183028401116401000000008311171561037e57600080fd5b509092509050610d2c565b005b34801561039757600080fd5b506101b0600480360360208110156103ae57600080fd5b5035611291565b3480156103c157600080fd5b50610484600480360360408110156103d857600080fd5b8101906020810181356401000000008111156103f357600080fd5b82018360208201111561040557600080fd5b8035906020019184602083028401116401000000008311171561042757600080fd5b91939092909160208101903564010000000081111561044557600080fd5b82018360208201111561045757600080fd5b8035906020019184602083028401116401000000008311171561047957600080fd5b509092509050611332565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156104c05781810151838201526020016104a8565b505050509050019250505060405180910390f35b3480156104e057600080fd5b506104fe600480360360208110156104f757600080fd5b5035611428565b604080519115158252519081900360200190f35b34801561051e57600080fd5b5061053c6004803603602081101561053557600080fd5b5035611452565b60408051600160a060020a039092168252519081900360200190f35b34801561056457600080fd5b506101746004803603602081101561057b57600080fd5b503561146d565b34801561058e57600080fd5b506104fe600480360360208110156105a557600080fd5b5035611483565b3480156105b857600080fd5b50610389600480360360608110156105cf57600080fd5b813591908101906040810160208201356401000000008111156105f157600080fd5b82018360208201111561060357600080fd5b8035906020019184602083028401116401000000008311171561062557600080fd5b91939092909160208101903564010000000081111561064357600080fd5b82018360208201111561065557600080fd5b8035906020019184602083028401116401000000008311171561067757600080fd5b5090925090506114a5565b34801561068e57600080fd5b5061053c600480360360208110156106a557600080fd5b503561167d565b3480156106b857600080fd5b50610174600480360360208110156106cf57600080fd5b5035611698565b3480156106e257600080fd5b50610389600480360360408110156106f957600080fd5b5080359060200135600160a060020a03166116ad565b34801561071b57600080fd5b506103896004803603604081101561073257600080fd5b50600160a060020a03813516906020013515156117cf565b34801561075657600080fd5b506104fe6004803603602081101561076d57600080fd5b503561183d565b34801561078057600080fd5b506101746004803603602081101561079757600080fd5b5035611847565b3480156107aa57600080fd5b50610174600480360360208110156107c157600080fd5b5035611859565b3480156107d457600080fd5b50610389600480360360608110156107eb57600080fd5b50803590600160a060020a03602082013516906040013561186b565b34801561081357600080fd5b506101746004803603604081101561082a57600080fd5b81019060208101813564010000000081111561084557600080fd5b82018360208201111561085757600080fd5b8035906020019184600183028401116401000000008311171561087957600080fd5b91935091503515156119d5565b34801561089257600080fd5b506104fe600480360360208110156108a957600080fd5b5035611ac7565b3480156108bc57600080fd5b506104fe600480360360408110156108d357600080fd5b50600160a060020a0381358116916020013516611ad3565b3480156108f757600080fd5b50610389600480360360a081101561090e57600080fd5b600160a060020a03823581169260208101359091169160408201359160608101359181019060a08101608082013564010000000081111561094e57600080fd5b82018360208201111561096057600080fd5b8035906020019184600183028401116401000000008311171561098257600080fd5b509092509050611b01565b34801561099957600080fd5b50610389600480360360a08110156109b057600080fd5b8101906020810181356401000000008111156109cb57600080fd5b8201836020820111156109dd57600080fd5b803590602001918460208302840111640100000000831117156109ff57600080fd5b919390929091602081019035640100000000811115610a1d57600080fd5b820183602082011115610a2f57600080fd5b80359060200191846020830284011164010000000083111715610a5157600080fd5b919390929091602081019035640100000000811115610a6f57600080fd5b820183602082011115610a8157600080fd5b80359060200191846020830284011164010000000083111715610aa357600080fd5b919390929091602081019035640100000000811115610ac157600080fd5b820183602082011115610ad357600080fd5b80359060200191846020830284011164010000000083111715610af557600080fd5b919390929091602081019035640100000000811115610b1357600080fd5b820183602082011115610b2557600080fd5b80359060200191846001830284011164010000000083111715610b4757600080fd5b509092509050611e54565b348015610b5e57600080fd5b5061038960048036036040811015610b7557600080fd5b5080359060200135600160a060020a0316612375565b348015610b9757600080fd5b5061038960048036036040811015610bae57600080fd5b81359190810190604081016020820135640100000000811115610bd057600080fd5b820183602082011115610be257600080fd5b80359060200191846020830284011164010000000083111715610c0457600080fd5b509092509050612690565b6000610c1a82611428565b15610c5457600082815260026020526040902054600160a060020a03848116911614610c47576000610c4a565b60015b60ff169050610c79565b506000818152600660209081526040808320600160a060020a03861684529091529020545b92915050565b60036020908152600091825260409182902080548351601f600260001961010060018616150201909316929092049182018490048402810184019094528084529091830182828015610d125780601f10610ce757610100808354040283529160200191610d12565b820191906000526020600020905b815481529060010190602001808311610cf557829003601f168201915b505050505081565b60046020526000908152604090205481565b600160a060020a0387161515610d8c576040805160e560020a62461bcd02815260206004820152601b60248201527f63616e6e6f742073656e6420746f207a65726f20616464726573730000000000604482015290519081900360640190fd5b848314610de3576040805160e560020a62461bcd02815260206004820152601760248201527f4172726179206c656e677468206d757374206d61746368000000000000000000604482015290519081900360640190fd5b600160a060020a038816331480610e225750600160a060020a038816600090815260076020908152604080832033845290915290205460ff1615156001145b1515610e9e576040805160e560020a62461bcd02815260206004820152602f60248201527f4e656564206f70657261746f7220617070726f76616c20666f7220337264207060448201527f61727479207472616e73666572732e0000000000000000000000000000000000606482015290519081900360840190fd5b60005b8581101561111a576000878783818110610eb757fe5b90506020020135905060008686848181101515610ed057fe5b905060200201359050610ee282611ac7565b1561103657600082815260026020526040902054600160a060020a038c8116911614610f0d57600080fd5b60008281526002602052604081208054600160a060020a031916600160a060020a038d16179055610f3d8361146d565b9050610f8960016006600084815260200190815260200160002060008f600160a060020a0316600160a060020a031681526020019081526020016000205461286890919063ffffffff16565b6006600083815260200190815260200160002060008e600160a060020a0316600160a060020a031681526020019081526020016000208190555061100d60016006600084815260200190815260200160002060008e600160a060020a0316600160a060020a03168152602001908152602001600020546128c890919063ffffffff16565b6000918252600660209081526040808420600160a060020a038f16855290915290912055611110565b6000828152600660209081526040808320600160a060020a038f168452909152902054611069908263ffffffff61286816565b6006600084815260200190815260200160002060008d600160a060020a0316600160a060020a03168152602001908152602001600020819055506110ec6006600084815260200190815260200160002060008c600160a060020a0316600160a060020a0316815260200190815260200160002054826128c890919063ffffffff16565b6000838152600660209081526040808320600160a060020a038f1684529091529020555b5050600101610ea1565b5086600160a060020a031688600160a060020a031633600160a060020a03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb898989896040518080602001806020018381038352878782818152602001925060200280828437600083820152601f01601f19169091018481038352858152602090810191508690860280828437600083820152604051601f909101601f19169092018290039850909650505050505050a46111de87600160a060020a031661292c565b156112875761128733898989898080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808d0282810182019093528c82529093508c92508b91829185019084908082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a915089908190840183828082843760009201919091525061293492505050565b5050505050505050565b60008181526003602090815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452606093928301828280156113265780601f106112fb57610100808354040283529160200191611326565b820191906000526020600020905b81548152906001019060200180831161130957829003601f168201915b50505050509050919050565b606083821461138b576040805160e560020a62461bcd02815260206004820152601f60248201527f4372656469743a204172726179206c656e677468206d757374206d6174636800604482015290519081900360640190fd5b6040805185815260208087028201019091526060908580156113b7578160200160208202803883390190505b50905060005b8581101561141e576113fe8787838181106113d457fe5b90506020020135600160a060020a031686868481811015156113f257fe5b90506020020135610c0f565b828281518110151561140c57fe5b602090810290910101526001016113bd565b5095945050505050565b600061143382611ac7565b8015610c795750506fffffffffffffffffffffffffffffffff16151590565b600090815260026020526040902054600160a060020a031690565b6fffffffffffffffffffffffffffffffff191690565b600061148e82611ac7565b8015610c79575061149e82611698565b1592915050565b6000858152600160205260409020548590600160a060020a031633146114ca57600080fd5b6114d38661183d565b15156114de57600080fd5b838214611535576040805160e560020a62461bcd02815260206004820152601f60248201527f4372656469743a204172726179206c656e677468206d757374206d6174636800604482015290519081900360640190fd5b60005b8481101561167457600086868381811061154e57fe5b90506020020135600160a060020a031690506000858584818110151561157057fe5b60008c8152600660209081526040808320600160a060020a03891684528252909120549102929092013592506115ae9183915063ffffffff6128c816565b60008a8152600660209081526040808320600160a060020a03871684528252808320939093558b82526005905220546115ed908263ffffffff6128c816565b60008a81526005602090815260408083209390935582518c81529081018490528251600160a060020a038616933392600080516020612dfe833981519152929081900390910190a461164782600160a060020a031661292c565b1561166a5761166a3333848c856020604051908101604052806000815250612b89565b5050600101611538565b50505050505050565b600160205260009081526040902054600160a060020a031681565b6fffffffffffffffffffffffffffffffff1690565b6000828152600160205260409020548290600160a060020a031633146116d257600080fd5b600083815260016020526040902054600160a060020a038381169116141561176a576040805160e560020a62461bcd02815260206004820152603160248201527f4372656469743a2063616e6e6f74207365742063757272656e74206d696e746560448201527f722061732061206e6577206d696e746572000000000000000000000000000000606482015290519081900360840190fd5b6000838152600160209081526040918290208054600160a060020a031916600160a060020a0386169081179091558251908152915185927f154933cf3e220494f8a0abb0ebf8ec33fcba21e15da759d777aa8418cfd7ff1892908290030190a2505050565b336000818152600760209081526040808320600160a060020a03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b60ff60020a161590565b60056020526000908152604090205481565b60009081526005602052604090205490565b6118748361183d565b151561187f57600080fd5b600160a060020a0382163314806118be5750600160a060020a038216600090815260076020908152604080832033845290915290205460ff1615156001145b1515611916576040805160e560020a62461bcd0281526020600482015260376024820152600080516020612e1e8339815191526044820152600080516020612e3e833981519152606482015290519081900360840190fd5b6000838152600660209081526040808320600160a060020a0386168452909152902054611949908263ffffffff61286816565b6000848152600660209081526040808320600160a060020a0387168452825280832093909355858252600590522054611988908263ffffffff61286816565b600084815260056020908152604080832093909355825186815290810184905282519192600160a060020a038616923392600080516020612dfe83398151915292908290030190a4505050565b600080546001019081905560801b81156119f05760ff60020a175b60008181526001602090815260408083208054600160a060020a031916339081179091558151858152928301849052815184939192600080516020612dfe833981519152928290030190a46000831115611a5f576000818152600360205260409020611a5d908585612d62565b505b807f6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b858560405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a29392505050565b60ff60020a9081161490565b600160a060020a03918216600090815260076020908152604080832093909416825291909152205460ff1690565b600160a060020a0385161515611b87576040805160e560020a62461bcd02815260206004820152602360248201527f4372656469743a2063616e6e6f742073656e6420746f207a65726f206164647260448201527f6573730000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160a060020a038616331480611bc65750600160a060020a038616600090815260076020908152604080832033845290915290205460ff1615156001145b1515611c1e576040805160e560020a62461bcd0281526020600482015260376024820152600080516020612e1e8339815191526044820152600080516020612e3e833981519152606482015290519081900360840190fd5b611c2784611ac7565b15611d1857600084815260026020526040902054600160a060020a03878116911614611c5257600080fd5b60008481526002602052604081208054600160a060020a031916600160a060020a038816179055611c828561146d565b6000818152600660209081526040808320600160a060020a038c168452909152902054909150611cb8908563ffffffff61286816565b6000828152600660209081526040808320600160a060020a038c81168552925280832093909355881681522054611cef90856128c8565b6000918252600660209081526040808420600160a060020a038a16855290915290912055611da6565b6000848152600660209081526040808320600160a060020a038a168452909152902054611d4b908463ffffffff61286816565b6000858152600660209081526040808320600160a060020a038b81168552925280832093909355871681522054611d8290846128c8565b6000858152600660209081526040808320600160a060020a038a1684529091529020555b84600160a060020a031686600160a060020a031633600160a060020a0316600080516020612dfe8339815191528787604051808381526020018281526020019250505060405180910390a4611e0385600160a060020a031661292c565b15611e4c57611e4c338787878787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612b8992505050565b505050505050565b8887148015611e6257508885145b8015611e6d57508883145b1515611ec3576040805160e560020a62461bcd02815260206004820152601f60248201527f4372656469743a204172726179206c656e677468206d757374206d6174636800604482015290519081900360640190fd5b60005b8981101561224c5760008b8b83818110611edc57fe5b90506020020135600160a060020a0316905060008a8a848181101515611efe57fe5b90506020020135600160a060020a0316905060008989858181101515611f2057fe5b90506020020135905060008888868181101515611f3957fe5b6020029190910135915050600160a060020a0383161515611fca576040805160e560020a62461bcd02815260206004820152602360248201527f4372656469743a2063616e6e6f742073656e6420746f207a65726f206164647260448201527f6573730000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160a060020a0384163314806120095750600160a060020a038416600090815260076020908152604080832033845290915290205460ff1615156001145b1515612061576040805160e560020a62461bcd0281526020600482015260376024820152600080516020612e1e8339815191526044820152600080516020612e3e833981519152606482015290519081900360840190fd5b61206a82611ac7565b1561215357600082815260026020526040902054600160a060020a0385811691161461209557600080fd5b60006120a08361146d565b60008481526002602090815260408083208054600160a060020a031916600160a060020a038a81169190911790915584845260068352818420908a1684529091529020549091506120f2906001612868565b6000828152600660209081526040808320600160a060020a038a8116855292528083209390935586168152205461212a9060016128c8565b6000918252600660209081526040808420600160a060020a0388168552909152909120556121e2565b6000828152600660209081526040808320600160a060020a0388168452909152902054612186908263ffffffff61286816565b6000838152600660209081526040808320600160a060020a0389811685529252808320939093558516815220546121be9082906128c8565b6000838152600660209081526040808320600160a060020a03881684529091529020555b6121f483600160a060020a031661292c565b1561223d5761223d33858585858c8c8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612b8992505050565b50505050806001019050611ec6565b508181604051808383808284378083019250505092505050604051809103902033600160a060020a03167fb2bbad7ba6f87956dcb373f8d6196043547f5fe76a0fef13d3c8dbfb43d2ff1a8c8c8c8c8c8c8c8c604051808060200180602001806020018060200185810385528d8d82818152602001925060200280828437600083820152601f01601f191690910186810385528b8152602090810191508c908c0280828437600083820152601f01601f19169091018681038452898152602090810191508a908a0280828437600083820152601f01601f19169091018681038352878152602090810191508890880280828437600083820152604051601f909101601f19169092018290039e50909c50505050505050505050505050a350505050505050505050565b61237e82611ac7565b15156123fa576040805160e560020a62461bcd02815260206004820152603660248201527f4372656469743a206173736574206265696e67206275726e6564206973206e6f60448201527f742061206e6f6e2d66756e6769626c6520617373657400000000000000000000606482015290519081900360840190fd5b61240382611428565b151561247f576040805160e560020a62461bcd02815260206004820152603860248201527f4372656469743a206173736574206265696e67206275726e6564206973206e6f60448201527f742061206e6f6e2d66756e6769626c65206974656d2069640000000000000000606482015290519081900360840190fd5b600160a060020a0381163314806124be5750600160a060020a038116600090815260076020908152604080832033845290915290205460ff1615156001145b1515612516576040805160e560020a62461bcd0281526020600482015260376024820152600080516020612e1e8339815191526044820152600080516020612e3e833981519152606482015290519081900360840190fd5b600030600160a060020a0316636f969c2d846040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561255c57600080fd5b505afa158015612570573d6000803e3d6000fd5b505050506040513d602081101561258657600080fd5b505160008481526002602090815260408083208054600160a060020a031916905583835260068252808320600160a060020a03871684529091529020549091506125d790600163ffffffff61286816565b6000828152600660209081526040808320600160a060020a038716845282528083209390935583825260059052205461261790600163ffffffff61286816565b60008281526005602052604080822092909255848152205461264090600163ffffffff61286816565b600084815260056020908152604080832093909355825186815260019181019190915282519192600160a060020a038616923392600080516020612dfe83398151915292908290030190a4505050565b6000838152600160205260409020548390600160a060020a031633146126b557600080fd5b6126be84611ac7565b15156126c957600080fd5b60008481526004602052604090205460018101906126ee90849063ffffffff6128c816565b6000868152600460205260408120919091555b83811015611e4c57600085858381811061271757fe5b8486018a17600081815260026020908152604080832080549583029790970135600160a060020a0316600160a060020a031990951685179096558c82526006815285822084835290529390932054909350612774915060016128c8565b6000898152600660209081526040808320600160a060020a03871684528252808320939093558a82526005905220546127b490600163ffffffff6128c816565b6000898152600560205260408082209290925582815220546127dd90600163ffffffff6128c816565b60008281526005602090815260408083209390935582518481526001918101919091528251600160a060020a038616933392600080516020612dfe833981519152929081900390910190a461283a82600160a060020a031661292c565b1561285e5761285e3333848460016020604051908101604052806000815250612b89565b5050600101612701565b6000828211156128c2576040805160e560020a62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082820183811015612925576040805160e560020a62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6000903b1190565b63baf5f22860e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191684600160a060020a031663baf5f22888888787876040518663ffffffff1660e01b81526004018086600160a060020a0316600160a060020a0316815260200185600160a060020a0316600160a060020a03168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b838110156129f65781810151838201526020016129de565b50505050905001848103835286818151815260200191508051906020019060200280838360005b83811015612a35578181015183820152602001612a1d565b50505050905001848103825285818151815260200191508051906020019080838360005b83811015612a71578181015183820152602001612a59565b50505050905090810190601f168015612a9e5780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600087803b158015612ac357600080fd5b505af1158015612ad7573d6000803e3d6000fd5b505050506040513d6020811015612aed57600080fd5b50517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611e4c576040805160e560020a62461bcd02815260206004820152603b60248201527f636f6e74726163742072657475726e656420616e20756e6b6e6f776e2076616c60448201527f75652066726f6d206f6e45455232426174636852656365697665640000000000606482015290519081900360840190fd5b6309a23c2960e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191684600160a060020a03166309a23c2988888787876040518663ffffffff1660e01b81526004018086600160a060020a0316600160a060020a0316815260200185600160a060020a0316600160a060020a0316815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612c4c578181015183820152602001612c34565b50505050905090810190601f168015612c795780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b158015612c9c57600080fd5b505af1158015612cb0573d6000803e3d6000fd5b505050506040513d6020811015612cc657600080fd5b50517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611e4c576040805160e560020a62461bcd02815260206004820152603660248201527f636f6e74726163742072657475726e656420616e20756e6b6e6f776e2076616c60448201527f75652066726f6d206f6e45455232526563656976656400000000000000000000606482015290519081900360840190fd5b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612da35782800160ff19823516178555612dd0565b82800160010185558215612dd0579182015b82811115612dd0578235825591602001919060010190612db5565b50612ddc929150612de0565b5090565b612dfa91905b80821115612ddc5760008155600101612de6565b9056fec3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f624372656469743a204e656564206f70657261746f7220617070726f76616c20666f7220337264207061727479207472616e73666572732e000000000000000000a165627a7a72305820f265607b7a854041c5d4b5ee252a20cd982ae337ce812eb18d3473739c0aee920029",
  "deployedBytecode": "0x6080604052600436106101365760003560e01c63ffffffff168062fdd58e1461013b57806301c376a01461018657806308d7d469146102255780632eb2c2d61461024f57806346cb2f1b1461038b5780634e1273f4146103b55780635e81b958146104d45780636352211e146105125780636f969c2d146105585780637269a3271461058257806378b27221146105ac5780638623ec7b146106825780639cca1c64146106ac578063a048046b146106d6578063a22cb4651461070f578063adebf6f21461074a578063b54fa47414610774578063bd85b0391461079e578063beafd19f146107c8578063cc10e40114610807578063e44591f014610886578063e985e9c5146108b0578063f242432a146108eb578063f4b781cb1461098d578063f5e9942114610b52578063f941908814610b8b575b600080fd5b34801561014757600080fd5b506101746004803603604081101561015e57600080fd5b50600160a060020a038135169060200135610c0f565b60408051918252519081900360200190f35b34801561019257600080fd5b506101b0600480360360208110156101a957600080fd5b5035610c7f565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101ea5781810151838201526020016101d2565b50505050905090810190601f1680156102175780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561023157600080fd5b506101746004803603602081101561024857600080fd5b5035610d1a565b34801561025b57600080fd5b50610389600480360360a081101561027257600080fd5b600160a060020a0382358116926020810135909116918101906060810160408201356401000000008111156102a657600080fd5b8201836020820111156102b857600080fd5b803590602001918460208302840111640100000000831117156102da57600080fd5b9193909290916020810190356401000000008111156102f857600080fd5b82018360208201111561030a57600080fd5b8035906020019184602083028401116401000000008311171561032c57600080fd5b91939092909160208101903564010000000081111561034a57600080fd5b82018360208201111561035c57600080fd5b8035906020019184600183028401116401000000008311171561037e57600080fd5b509092509050610d2c565b005b34801561039757600080fd5b506101b0600480360360208110156103ae57600080fd5b5035611291565b3480156103c157600080fd5b50610484600480360360408110156103d857600080fd5b8101906020810181356401000000008111156103f357600080fd5b82018360208201111561040557600080fd5b8035906020019184602083028401116401000000008311171561042757600080fd5b91939092909160208101903564010000000081111561044557600080fd5b82018360208201111561045757600080fd5b8035906020019184602083028401116401000000008311171561047957600080fd5b509092509050611332565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156104c05781810151838201526020016104a8565b505050509050019250505060405180910390f35b3480156104e057600080fd5b506104fe600480360360208110156104f757600080fd5b5035611428565b604080519115158252519081900360200190f35b34801561051e57600080fd5b5061053c6004803603602081101561053557600080fd5b5035611452565b60408051600160a060020a039092168252519081900360200190f35b34801561056457600080fd5b506101746004803603602081101561057b57600080fd5b503561146d565b34801561058e57600080fd5b506104fe600480360360208110156105a557600080fd5b5035611483565b3480156105b857600080fd5b50610389600480360360608110156105cf57600080fd5b813591908101906040810160208201356401000000008111156105f157600080fd5b82018360208201111561060357600080fd5b8035906020019184602083028401116401000000008311171561062557600080fd5b91939092909160208101903564010000000081111561064357600080fd5b82018360208201111561065557600080fd5b8035906020019184602083028401116401000000008311171561067757600080fd5b5090925090506114a5565b34801561068e57600080fd5b5061053c600480360360208110156106a557600080fd5b503561167d565b3480156106b857600080fd5b50610174600480360360208110156106cf57600080fd5b5035611698565b3480156106e257600080fd5b50610389600480360360408110156106f957600080fd5b5080359060200135600160a060020a03166116ad565b34801561071b57600080fd5b506103896004803603604081101561073257600080fd5b50600160a060020a03813516906020013515156117cf565b34801561075657600080fd5b506104fe6004803603602081101561076d57600080fd5b503561183d565b34801561078057600080fd5b506101746004803603602081101561079757600080fd5b5035611847565b3480156107aa57600080fd5b50610174600480360360208110156107c157600080fd5b5035611859565b3480156107d457600080fd5b50610389600480360360608110156107eb57600080fd5b50803590600160a060020a03602082013516906040013561186b565b34801561081357600080fd5b506101746004803603604081101561082a57600080fd5b81019060208101813564010000000081111561084557600080fd5b82018360208201111561085757600080fd5b8035906020019184600183028401116401000000008311171561087957600080fd5b91935091503515156119d5565b34801561089257600080fd5b506104fe600480360360208110156108a957600080fd5b5035611ac7565b3480156108bc57600080fd5b506104fe600480360360408110156108d357600080fd5b50600160a060020a0381358116916020013516611ad3565b3480156108f757600080fd5b50610389600480360360a081101561090e57600080fd5b600160a060020a03823581169260208101359091169160408201359160608101359181019060a08101608082013564010000000081111561094e57600080fd5b82018360208201111561096057600080fd5b8035906020019184600183028401116401000000008311171561098257600080fd5b509092509050611b01565b34801561099957600080fd5b50610389600480360360a08110156109b057600080fd5b8101906020810181356401000000008111156109cb57600080fd5b8201836020820111156109dd57600080fd5b803590602001918460208302840111640100000000831117156109ff57600080fd5b919390929091602081019035640100000000811115610a1d57600080fd5b820183602082011115610a2f57600080fd5b80359060200191846020830284011164010000000083111715610a5157600080fd5b919390929091602081019035640100000000811115610a6f57600080fd5b820183602082011115610a8157600080fd5b80359060200191846020830284011164010000000083111715610aa357600080fd5b919390929091602081019035640100000000811115610ac157600080fd5b820183602082011115610ad357600080fd5b80359060200191846020830284011164010000000083111715610af557600080fd5b919390929091602081019035640100000000811115610b1357600080fd5b820183602082011115610b2557600080fd5b80359060200191846001830284011164010000000083111715610b4757600080fd5b509092509050611e54565b348015610b5e57600080fd5b5061038960048036036040811015610b7557600080fd5b5080359060200135600160a060020a0316612375565b348015610b9757600080fd5b5061038960048036036040811015610bae57600080fd5b81359190810190604081016020820135640100000000811115610bd057600080fd5b820183602082011115610be257600080fd5b80359060200191846020830284011164010000000083111715610c0457600080fd5b509092509050612690565b6000610c1a82611428565b15610c5457600082815260026020526040902054600160a060020a03848116911614610c47576000610c4a565b60015b60ff169050610c79565b506000818152600660209081526040808320600160a060020a03861684529091529020545b92915050565b60036020908152600091825260409182902080548351601f600260001961010060018616150201909316929092049182018490048402810184019094528084529091830182828015610d125780601f10610ce757610100808354040283529160200191610d12565b820191906000526020600020905b815481529060010190602001808311610cf557829003601f168201915b505050505081565b60046020526000908152604090205481565b600160a060020a0387161515610d8c576040805160e560020a62461bcd02815260206004820152601b60248201527f63616e6e6f742073656e6420746f207a65726f20616464726573730000000000604482015290519081900360640190fd5b848314610de3576040805160e560020a62461bcd02815260206004820152601760248201527f4172726179206c656e677468206d757374206d61746368000000000000000000604482015290519081900360640190fd5b600160a060020a038816331480610e225750600160a060020a038816600090815260076020908152604080832033845290915290205460ff1615156001145b1515610e9e576040805160e560020a62461bcd02815260206004820152602f60248201527f4e656564206f70657261746f7220617070726f76616c20666f7220337264207060448201527f61727479207472616e73666572732e0000000000000000000000000000000000606482015290519081900360840190fd5b60005b8581101561111a576000878783818110610eb757fe5b90506020020135905060008686848181101515610ed057fe5b905060200201359050610ee282611ac7565b1561103657600082815260026020526040902054600160a060020a038c8116911614610f0d57600080fd5b60008281526002602052604081208054600160a060020a031916600160a060020a038d16179055610f3d8361146d565b9050610f8960016006600084815260200190815260200160002060008f600160a060020a0316600160a060020a031681526020019081526020016000205461286890919063ffffffff16565b6006600083815260200190815260200160002060008e600160a060020a0316600160a060020a031681526020019081526020016000208190555061100d60016006600084815260200190815260200160002060008e600160a060020a0316600160a060020a03168152602001908152602001600020546128c890919063ffffffff16565b6000918252600660209081526040808420600160a060020a038f16855290915290912055611110565b6000828152600660209081526040808320600160a060020a038f168452909152902054611069908263ffffffff61286816565b6006600084815260200190815260200160002060008d600160a060020a0316600160a060020a03168152602001908152602001600020819055506110ec6006600084815260200190815260200160002060008c600160a060020a0316600160a060020a0316815260200190815260200160002054826128c890919063ffffffff16565b6000838152600660209081526040808320600160a060020a038f1684529091529020555b5050600101610ea1565b5086600160a060020a031688600160a060020a031633600160a060020a03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb898989896040518080602001806020018381038352878782818152602001925060200280828437600083820152601f01601f19169091018481038352858152602090810191508690860280828437600083820152604051601f909101601f19169092018290039850909650505050505050a46111de87600160a060020a031661292c565b156112875761128733898989898080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808d0282810182019093528c82529093508c92508b91829185019084908082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a915089908190840183828082843760009201919091525061293492505050565b5050505050505050565b60008181526003602090815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452606093928301828280156113265780601f106112fb57610100808354040283529160200191611326565b820191906000526020600020905b81548152906001019060200180831161130957829003601f168201915b50505050509050919050565b606083821461138b576040805160e560020a62461bcd02815260206004820152601f60248201527f4372656469743a204172726179206c656e677468206d757374206d6174636800604482015290519081900360640190fd5b6040805185815260208087028201019091526060908580156113b7578160200160208202803883390190505b50905060005b8581101561141e576113fe8787838181106113d457fe5b90506020020135600160a060020a031686868481811015156113f257fe5b90506020020135610c0f565b828281518110151561140c57fe5b602090810290910101526001016113bd565b5095945050505050565b600061143382611ac7565b8015610c795750506fffffffffffffffffffffffffffffffff16151590565b600090815260026020526040902054600160a060020a031690565b6fffffffffffffffffffffffffffffffff191690565b600061148e82611ac7565b8015610c79575061149e82611698565b1592915050565b6000858152600160205260409020548590600160a060020a031633146114ca57600080fd5b6114d38661183d565b15156114de57600080fd5b838214611535576040805160e560020a62461bcd02815260206004820152601f60248201527f4372656469743a204172726179206c656e677468206d757374206d6174636800604482015290519081900360640190fd5b60005b8481101561167457600086868381811061154e57fe5b90506020020135600160a060020a031690506000858584818110151561157057fe5b60008c8152600660209081526040808320600160a060020a03891684528252909120549102929092013592506115ae9183915063ffffffff6128c816565b60008a8152600660209081526040808320600160a060020a03871684528252808320939093558b82526005905220546115ed908263ffffffff6128c816565b60008a81526005602090815260408083209390935582518c81529081018490528251600160a060020a038616933392600080516020612dfe833981519152929081900390910190a461164782600160a060020a031661292c565b1561166a5761166a3333848c856020604051908101604052806000815250612b89565b5050600101611538565b50505050505050565b600160205260009081526040902054600160a060020a031681565b6fffffffffffffffffffffffffffffffff1690565b6000828152600160205260409020548290600160a060020a031633146116d257600080fd5b600083815260016020526040902054600160a060020a038381169116141561176a576040805160e560020a62461bcd02815260206004820152603160248201527f4372656469743a2063616e6e6f74207365742063757272656e74206d696e746560448201527f722061732061206e6577206d696e746572000000000000000000000000000000606482015290519081900360840190fd5b6000838152600160209081526040918290208054600160a060020a031916600160a060020a0386169081179091558251908152915185927f154933cf3e220494f8a0abb0ebf8ec33fcba21e15da759d777aa8418cfd7ff1892908290030190a2505050565b336000818152600760209081526040808320600160a060020a03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b60ff60020a161590565b60056020526000908152604090205481565b60009081526005602052604090205490565b6118748361183d565b151561187f57600080fd5b600160a060020a0382163314806118be5750600160a060020a038216600090815260076020908152604080832033845290915290205460ff1615156001145b1515611916576040805160e560020a62461bcd0281526020600482015260376024820152600080516020612e1e8339815191526044820152600080516020612e3e833981519152606482015290519081900360840190fd5b6000838152600660209081526040808320600160a060020a0386168452909152902054611949908263ffffffff61286816565b6000848152600660209081526040808320600160a060020a0387168452825280832093909355858252600590522054611988908263ffffffff61286816565b600084815260056020908152604080832093909355825186815290810184905282519192600160a060020a038616923392600080516020612dfe83398151915292908290030190a4505050565b600080546001019081905560801b81156119f05760ff60020a175b60008181526001602090815260408083208054600160a060020a031916339081179091558151858152928301849052815184939192600080516020612dfe833981519152928290030190a46000831115611a5f576000818152600360205260409020611a5d908585612d62565b505b807f6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b858560405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a29392505050565b60ff60020a9081161490565b600160a060020a03918216600090815260076020908152604080832093909416825291909152205460ff1690565b600160a060020a0385161515611b87576040805160e560020a62461bcd02815260206004820152602360248201527f4372656469743a2063616e6e6f742073656e6420746f207a65726f206164647260448201527f6573730000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160a060020a038616331480611bc65750600160a060020a038616600090815260076020908152604080832033845290915290205460ff1615156001145b1515611c1e576040805160e560020a62461bcd0281526020600482015260376024820152600080516020612e1e8339815191526044820152600080516020612e3e833981519152606482015290519081900360840190fd5b611c2784611ac7565b15611d1857600084815260026020526040902054600160a060020a03878116911614611c5257600080fd5b60008481526002602052604081208054600160a060020a031916600160a060020a038816179055611c828561146d565b6000818152600660209081526040808320600160a060020a038c168452909152902054909150611cb8908563ffffffff61286816565b6000828152600660209081526040808320600160a060020a038c81168552925280832093909355881681522054611cef90856128c8565b6000918252600660209081526040808420600160a060020a038a16855290915290912055611da6565b6000848152600660209081526040808320600160a060020a038a168452909152902054611d4b908463ffffffff61286816565b6000858152600660209081526040808320600160a060020a038b81168552925280832093909355871681522054611d8290846128c8565b6000858152600660209081526040808320600160a060020a038a1684529091529020555b84600160a060020a031686600160a060020a031633600160a060020a0316600080516020612dfe8339815191528787604051808381526020018281526020019250505060405180910390a4611e0385600160a060020a031661292c565b15611e4c57611e4c338787878787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612b8992505050565b505050505050565b8887148015611e6257508885145b8015611e6d57508883145b1515611ec3576040805160e560020a62461bcd02815260206004820152601f60248201527f4372656469743a204172726179206c656e677468206d757374206d6174636800604482015290519081900360640190fd5b60005b8981101561224c5760008b8b83818110611edc57fe5b90506020020135600160a060020a0316905060008a8a848181101515611efe57fe5b90506020020135600160a060020a0316905060008989858181101515611f2057fe5b90506020020135905060008888868181101515611f3957fe5b6020029190910135915050600160a060020a0383161515611fca576040805160e560020a62461bcd02815260206004820152602360248201527f4372656469743a2063616e6e6f742073656e6420746f207a65726f206164647260448201527f6573730000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160a060020a0384163314806120095750600160a060020a038416600090815260076020908152604080832033845290915290205460ff1615156001145b1515612061576040805160e560020a62461bcd0281526020600482015260376024820152600080516020612e1e8339815191526044820152600080516020612e3e833981519152606482015290519081900360840190fd5b61206a82611ac7565b1561215357600082815260026020526040902054600160a060020a0385811691161461209557600080fd5b60006120a08361146d565b60008481526002602090815260408083208054600160a060020a031916600160a060020a038a81169190911790915584845260068352818420908a1684529091529020549091506120f2906001612868565b6000828152600660209081526040808320600160a060020a038a8116855292528083209390935586168152205461212a9060016128c8565b6000918252600660209081526040808420600160a060020a0388168552909152909120556121e2565b6000828152600660209081526040808320600160a060020a0388168452909152902054612186908263ffffffff61286816565b6000838152600660209081526040808320600160a060020a0389811685529252808320939093558516815220546121be9082906128c8565b6000838152600660209081526040808320600160a060020a03881684529091529020555b6121f483600160a060020a031661292c565b1561223d5761223d33858585858c8c8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612b8992505050565b50505050806001019050611ec6565b508181604051808383808284378083019250505092505050604051809103902033600160a060020a03167fb2bbad7ba6f87956dcb373f8d6196043547f5fe76a0fef13d3c8dbfb43d2ff1a8c8c8c8c8c8c8c8c604051808060200180602001806020018060200185810385528d8d82818152602001925060200280828437600083820152601f01601f191690910186810385528b8152602090810191508c908c0280828437600083820152601f01601f19169091018681038452898152602090810191508a908a0280828437600083820152601f01601f19169091018681038352878152602090810191508890880280828437600083820152604051601f909101601f19169092018290039e50909c50505050505050505050505050a350505050505050505050565b61237e82611ac7565b15156123fa576040805160e560020a62461bcd02815260206004820152603660248201527f4372656469743a206173736574206265696e67206275726e6564206973206e6f60448201527f742061206e6f6e2d66756e6769626c6520617373657400000000000000000000606482015290519081900360840190fd5b61240382611428565b151561247f576040805160e560020a62461bcd02815260206004820152603860248201527f4372656469743a206173736574206265696e67206275726e6564206973206e6f60448201527f742061206e6f6e2d66756e6769626c65206974656d2069640000000000000000606482015290519081900360840190fd5b600160a060020a0381163314806124be5750600160a060020a038116600090815260076020908152604080832033845290915290205460ff1615156001145b1515612516576040805160e560020a62461bcd0281526020600482015260376024820152600080516020612e1e8339815191526044820152600080516020612e3e833981519152606482015290519081900360840190fd5b600030600160a060020a0316636f969c2d846040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561255c57600080fd5b505afa158015612570573d6000803e3d6000fd5b505050506040513d602081101561258657600080fd5b505160008481526002602090815260408083208054600160a060020a031916905583835260068252808320600160a060020a03871684529091529020549091506125d790600163ffffffff61286816565b6000828152600660209081526040808320600160a060020a038716845282528083209390935583825260059052205461261790600163ffffffff61286816565b60008281526005602052604080822092909255848152205461264090600163ffffffff61286816565b600084815260056020908152604080832093909355825186815260019181019190915282519192600160a060020a038616923392600080516020612dfe83398151915292908290030190a4505050565b6000838152600160205260409020548390600160a060020a031633146126b557600080fd5b6126be84611ac7565b15156126c957600080fd5b60008481526004602052604090205460018101906126ee90849063ffffffff6128c816565b6000868152600460205260408120919091555b83811015611e4c57600085858381811061271757fe5b8486018a17600081815260026020908152604080832080549583029790970135600160a060020a0316600160a060020a031990951685179096558c82526006815285822084835290529390932054909350612774915060016128c8565b6000898152600660209081526040808320600160a060020a03871684528252808320939093558a82526005905220546127b490600163ffffffff6128c816565b6000898152600560205260408082209290925582815220546127dd90600163ffffffff6128c816565b60008281526005602090815260408083209390935582518481526001918101919091528251600160a060020a038616933392600080516020612dfe833981519152929081900390910190a461283a82600160a060020a031661292c565b1561285e5761285e3333848460016020604051908101604052806000815250612b89565b5050600101612701565b6000828211156128c2576040805160e560020a62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082820183811015612925576040805160e560020a62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6000903b1190565b63baf5f22860e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191684600160a060020a031663baf5f22888888787876040518663ffffffff1660e01b81526004018086600160a060020a0316600160a060020a0316815260200185600160a060020a0316600160a060020a03168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b838110156129f65781810151838201526020016129de565b50505050905001848103835286818151815260200191508051906020019060200280838360005b83811015612a35578181015183820152602001612a1d565b50505050905001848103825285818151815260200191508051906020019080838360005b83811015612a71578181015183820152602001612a59565b50505050905090810190601f168015612a9e5780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600087803b158015612ac357600080fd5b505af1158015612ad7573d6000803e3d6000fd5b505050506040513d6020811015612aed57600080fd5b50517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611e4c576040805160e560020a62461bcd02815260206004820152603b60248201527f636f6e74726163742072657475726e656420616e20756e6b6e6f776e2076616c60448201527f75652066726f6d206f6e45455232426174636852656365697665640000000000606482015290519081900360840190fd5b6309a23c2960e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191684600160a060020a03166309a23c2988888787876040518663ffffffff1660e01b81526004018086600160a060020a0316600160a060020a0316815260200185600160a060020a0316600160a060020a0316815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612c4c578181015183820152602001612c34565b50505050905090810190601f168015612c795780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b158015612c9c57600080fd5b505af1158015612cb0573d6000803e3d6000fd5b505050506040513d6020811015612cc657600080fd5b50517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611e4c576040805160e560020a62461bcd02815260206004820152603660248201527f636f6e74726163742072657475726e656420616e20756e6b6e6f776e2076616c60448201527f75652066726f6d206f6e45455232526563656976656400000000000000000000606482015290519081900360840190fd5b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612da35782800160ff19823516178555612dd0565b82800160010185558215612dd0579182015b82811115612dd0578235825591602001919060010190612db5565b50612ddc929150612de0565b5090565b612dfa91905b80821115612ddc5760008155600101612de6565b9056fec3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f624372656469743a204e656564206f70657261746f7220617070726f76616c20666f7220337264207061727479207472616e73666572732e000000000000000000a165627a7a72305820f265607b7a854041c5d4b5ee252a20cd982ae337ce812eb18d3473739c0aee920029",
  "sourceMap": "72:5334:10:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;72:5334:10;;;;;;;",
  "deployedSourceMap": "72:5334:10:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2918:239:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2918:239:9;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2918:239:9;;;;;;;;;;;;;;;;;;;;;;;;;1032:43;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1032:43:9;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1032:43:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;1032:43:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1081;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1081:43:9;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1081:43:9;;;8215:1619;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8215:1619:9;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;8215:1619:9;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;8215:1619:9;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;8215:1619:9;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;8215:1619:9;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;8215:1619:9;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;8215:1619:9;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;8215:1619:9;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;8215:1619:9;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;8215:1619:9;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;8215:1619:9;;-1:-1:-1;8215:1619:9;-1:-1:-1;8215:1619:9;;;;3163:115;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3163:115:9;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3163:115:9;;;3634:467;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3634:467:9;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3634:467:9;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;3634:467:9;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;3634:467:9;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;3634:467:9;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;3634:467:9;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;3634:467:9;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;3634:467:9;;-1:-1:-1;3634:467:9;-1:-1:-1;3634:467:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;3634:467:9;;;;;;;;;;;;;;;;;2207:209;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2207:209:9;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2207:209:9;;;;;;;;;;;;;;;;;;;;;2422:105;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2422:105:9;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2422:105:9;;;;;;;-1:-1:-1;;;;;2422:105:9;;;;;;;;;;;;;;1849:122;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1849:122:9;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1849:122:9;;;1977:224;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1977:224:9;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1977:224:9;;;2153:983:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2153:983:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2153:983:10;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;2153:983:10;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2153:983:10;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;2153:983:10;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;2153:983:10;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2153:983:10;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;2153:983:10;;-1:-1:-1;2153:983:10;-1:-1:-1;2153:983:10;;942:42:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;942:42:9;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;942:42:9;;;1720:123;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1720:123:9;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1720:123:9;;;5153:251:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5153:251:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5153:251:10;;;;;;-1:-1:-1;;;;;5153:251:10;;;4455:202:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4455:202:9;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;4455:202:9;;;;;;;;;;;1600:114;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1600:114:9;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1600:114:9;;;1130:48;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1130:48:9;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1130:48:9;;;985:116:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;985:116:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;985:116:10;;;4361:523;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4361:523:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4361:523:10;;;-1:-1:-1;;;;;4361:523:10;;;;;;;;;;;154:644;;8:9:-1;5:2;;;30:1;27;20:12;5:2;154:644:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;154:644:10;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;154:644:10;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;154:644:10;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;154:644:10;;-1:-1:-1;154:644:10;-1:-1:-1;154:644:10;;;;;1467:127:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1467:127:9;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1467:127:9;;;4936:149;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4936:149:9;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;4936:149:9;;;;;;;;;;;5789:1442;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5789:1442:9;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;5789:1442:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;5789:1442:9;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;5789:1442:9;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;5789:1442:9;;-1:-1:-1;5789:1442:9;-1:-1:-1;5789:1442:9;;10758:1761;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10758:1761:9;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;10758:1761:9;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;10758:1761:9;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;10758:1761:9;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;10758:1761:9;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;10758:1761:9;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;10758:1761:9;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;10758:1761:9;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;10758:1761:9;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;10758:1761:9;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;10758:1761:9;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;10758:1761:9;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;10758:1761:9;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;10758:1761:9;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;10758:1761:9;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;10758:1761:9;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;10758:1761:9;;-1:-1:-1;10758:1761:9;-1:-1:-1;10758:1761:9;;3310:853:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3310:853:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3310:853:10;;;;;;-1:-1:-1;;;;;3310:853:10;;;1107:1040;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1107:1040:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1107:1040:10;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;1107:1040:10;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1107:1040:10;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;1107:1040:10;;-1:-1:-1;1107:1040:10;-1:-1:-1;1107:1040:10;;2918:239:9;2991:7;3014:26;3032:7;3014:17;:26::i;:::-;3010:99;;;3063:17;;;;:8;:17;;;;;;-1:-1:-1;;;;;3063:27:9;;;:17;;:27;:35;;3097:1;3063:35;;;3093:1;3063:35;3056:42;;;;;;3010:99;-1:-1:-1;3125:17:9;;;;:8;:17;;;;;;;;-1:-1:-1;;;;;3125:25:9;;;;;;;;;;2918:239;;;;;:::o;1032:43::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1032:43:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1081:::-;;;;;;;;;;;;;:::o;8215:1619::-;-1:-1:-1;;;;;8426:19:9;;;;8418:59;;;;;-1:-1:-1;;;;;8418:59:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;8495:33;;;8487:69;;;;;-1:-1:-1;;;;;8487:69:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8718:19:9;;8727:10;8718:19;;:66;;-1:-1:-1;;;;;;8741:23:9;;;;;;:16;:23;;;;;;;;8765:10;8741:35;;;;;;;;;;:43;;:35;:43;8718:66;8697:160;;;;;;;-1:-1:-1;;;;;8697:160:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8873:9;8868:746;8888:19;;;8868:746;;;8995:14;9012:8;;9021:1;9012:11;;;;;;;;;;;;;8995:28;;9037:13;9053:7;;9061:1;9053:10;;;;;;;;;;;;;;;9037:26;;9082:21;9096:6;9082:13;:21::i;:::-;9078:526;;;9131:16;;;;:8;:16;;;;;;-1:-1:-1;;;;;9131:25:9;;;:16;;:25;9123:34;;;;;;9175:16;;;;:8;:16;;;;;:22;;-1:-1:-1;;;;;;9175:22:9;-1:-1:-1;;;;;9175:22:9;;;;;9234:30;9175:16;9234:22;:30::i;:::-;9215:49;;9310:32;9340:1;9310:8;:18;9319:8;9310:18;;;;;;;;;;;:25;9329:5;-1:-1:-1;;;;;9310:25:9;-1:-1:-1;;;;;9310:25:9;;;;;;;;;;;;;:29;;:32;;;;:::i;:::-;9282:8;:18;9291:8;9282:18;;;;;;;;;;;:25;9301:5;-1:-1:-1;;;;;9282:25:9;-1:-1:-1;;;;;9282:25:9;;;;;;;;;;;;:60;;;;9386:30;9414:1;9386:8;:18;9395:8;9386:18;;;;;;;;;;;:23;9405:3;-1:-1:-1;;;;;9386:23:9;-1:-1:-1;;;;;9386:23:9;;;;;;;;;;;;;:27;;:30;;;;:::i;:::-;9360:18;;;;:8;:18;;;;;;;;-1:-1:-1;;;;;9360:23:9;;;;;;;;;;:56;9078:526;;;9481:16;;;;:8;:16;;;;;;;;-1:-1:-1;;;;;9481:23:9;;;;;;;;;;:34;;9509:5;9481:34;:27;:34;:::i;:::-;9455:8;:16;9464:6;9455:16;;;;;;;;;;;:23;9472:5;-1:-1:-1;;;;;9455:23:9;-1:-1:-1;;;;;9455:23:9;;;;;;;;;;;;:60;;;;9557:32;9567:8;:16;9576:6;9567:16;;;;;;;;;;;:21;9584:3;-1:-1:-1;;;;;9567:21:9;-1:-1:-1;;;;;9567:21:9;;;;;;;;;;;;;9557:5;:9;;:32;;;;:::i;:::-;9533:16;;;;:8;:16;;;;;;;;-1:-1:-1;;;;;9533:21:9;;;;;;;;;:56;9078:526;-1:-1:-1;;8909:3:9;;8868:746;;;;9662:3;-1:-1:-1;;;;;9629:56:9;9655:5;-1:-1:-1;;;;;9629:56:9;9643:10;-1:-1:-1;;;;;9629:56:9;;9667:8;;9677:7;;9629:56;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;;74:27;137:4;117:14;-1:-1;;113:30;157:16;;;9629:56:9;;;;;;;;;;;;;-1:-1:-1;9629:56:9;;;;;;;1:33:-1;99:1;81:16;;;74:27;9629:56:9;;137:4:-1;117:14;;;-1:-1;;113:30;157:16;;;9629:56:9;;;;-1:-1:-1;9629:56:9;;-1:-1:-1;;;;;;;9629:56:9;9700:16;:3;-1:-1:-1;;;;;9700:14:9;;:16::i;:::-;9696:132;;;9732:85;9768:10;9780:5;9787:3;9792:8;;9732:85;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;;9732:85:9;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9802:7:9;;-1:-1:-1;9802:7:9;;;;9732:85;;;9802:7;;9732:85;9802:7;9732:85;1:33:-1;99:1;81:16;;74:27;;;;-1:-1;;9732:85:9;;;;137:4:-1;9732:85:9;;;;;;;;;;;;;;;;;;-1:-1:-1;9811:5:9;;-1:-1:-1;9811:5:9;;;;9732:85;;9811:5;;;;9732:85;1:33:-1;99:1;81:16;;74:27;;;;-1:-1;9732:35:9;;-1:-1:-1;;;9732:85:9:i;:::-;8215:1619;;;;;;;;:::o;3163:115::-;3253:18;;;;:9;:18;;;;;;;;;3246:25;;;;;;-1:-1:-1;;3246:25:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3221:13;;3246:25;;;3253:18;3246:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3163:115;;;:::o;3634:467::-;3762:16;3802:33;;;3794:77;;;;;-1:-1:-1;;;;;3794:77:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;3911:29;;;;;;;;;;;;;;;;3882:26;;3925:7;3911:29;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;3911:29:9;-1:-1:-1;3882:58:9;-1:-1:-1;3955:9:9;3950:119;3970:18;;;3950:119;;;4024:34;4034:7;;4042:1;4034:10;;;;;;;;;;;;;-1:-1:-1;;;;;4034:10:9;4046:8;;4055:1;4046:11;;;;;;;;;;;;;;;4024:9;:34::i;:::-;4009:9;4019:1;4009:12;;;;;;;;;;;;;;;;;;:49;3990:3;;3950:119;;;-1:-1:-1;4085:9:9;3634:467;-1:-1:-1;;;;;3634:467:9:o;2207:209::-;2271:4;2355:21;2369:6;2355:13;:21::i;:::-;:54;;;;-1:-1:-1;;2390:13:9;2381:22;:27;;;2207:209::o;2422:105::-;2477:7;2503:17;;;:8;:17;;;;;;-1:-1:-1;;;;;2503:17:9;;2422:105::o;1849:122::-;-1:-1:-1;;1945:19:9;;1849:122::o;1977:224::-;2046:4;2135:22;2149:7;2135:13;:22::i;:::-;:59;;;;;2161:28;2181:7;2161:19;:28::i;:::-;:33;;1977:224;-1:-1:-1;;1977:224:9:o;2153:983:10:-;2588:16:9;;;;:7;:16;;;;;;2281:7:10;;-1:-1:-1;;;;;2588:16:9;2608:10;2588:30;2580:39;;;;;;2312:19:10;2323:7;2312:10;:19::i;:::-;2304:28;;;;;;;;2350:29;;;2342:73;;;;;-1:-1:-1;;;;;2342:73:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;2431:9;2426:704;2446:15;;;2426:704;;;2482:10;2495:4;;2500:1;2495:7;;;;;;;;;;;;;-1:-1:-1;;;;;2495:7:10;2482:20;;2516:13;2532:7;;2540:1;2532:10;;;;;;;;;2636:17;;;;:8;2532:10;2636:17;;;;;;;-1:-1:-1;;;;;2636:21:10;;;;;;;;;;2532:10;;;;;;;;-1:-1:-1;2626:32:10;;2532:10;;-1:-1:-1;2626:32:10;:9;:32;:::i;:::-;2602:17;;;;:8;:17;;;;;;;;-1:-1:-1;;;;;2602:21:10;;;;;;;;;:56;;;;2697:22;;;:13;:22;;;;:33;;2724:5;2697:33;:26;:33;:::i;:::-;2672:22;;;;:13;:22;;;;;;;;:58;;;;2913:60;;;;;;;;;;;;;-1:-1:-1;;;;;2913:60:10;;;2928:10;;-1:-1:-1;;;;;;;;;;;2913:60:10;;;;;;;;;;2992:15;:2;-1:-1:-1;;;;;2992:13:10;;:15::i;:::-;2988:132;;;3027:78;3058:10;3070;3082:2;3086:7;3095:5;3027:78;;;;;;;;;;;;;:30;:78::i;:::-;-1:-1:-1;;2463:3:10;;2426:704;;;;2153:983;;;;;;:::o;942:42:9:-;;;;;;;;;;;;-1:-1:-1;;;;;942:42:9;;:::o;1720:123::-;1823:13;1813:23;;1720:123::o;5153:251:10:-;2588:16:9;;;;:7;:16;;;;;;5222:7:10;;-1:-1:-1;;;;;2588:16:9;2608:10;2588:30;2580:39;;;;;;5249:16:10;;;;:7;:16;;;;;;-1:-1:-1;;;;;5249:23:10;;;:16;;:23;;5241:85;;;;;-1:-1:-1;;;;;5241:85:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5336:16;;;;:7;:16;;;;;;;;;:22;;-1:-1:-1;;;;;;5336:22:10;-1:-1:-1;;;;;5336:22:10;;;;;;;;5374:23;;;;;;;5336:16;;5374:23;;;;;;;;;5153:251;;;:::o;4455:202:9:-;4553:10;4536:28;;;;:16;:28;;;;;;;;-1:-1:-1;;;;;4536:39:9;;;;;;;;;;;;:51;;-1:-1:-1;;4536:51:9;;;;;;;;;;4602:48;;;;;;;4536:39;;4553:10;4602:48;;;;;;;;;;;4455:202;;:::o;1600:114::-;-1:-1:-1;;;1681:21:9;:26;;1600:114::o;1130:48::-;;;;;;;;;;;;;:::o;985:116:10:-;1046:7;1072:22;;;:13;:22;;;;;;;985:116::o;4361:523::-;4458:19;4469:7;4458:10;:19::i;:::-;4450:28;;;;;;;;-1:-1:-1;;;;;4509:19:10;;4518:10;4509:19;;:66;;-1:-1:-1;;;;;;4532:23:10;;;;;;:16;:23;;;;;;;;4556:10;4532:35;;;;;;;;;;:43;;:35;:43;4509:66;4488:168;;;;;;;-1:-1:-1;;;;;4488:168:10;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4488:168:10;;;;-1:-1:-1;;;;;;;;;;;4488:168:10;;;;;;;;;;;;;;;4694:17;;;;:8;:17;;;;;;;;-1:-1:-1;;;;;4694:24:10;;;;;;;;;;:36;;4723:6;4694:36;:28;:36;:::i;:::-;4667:17;;;;:8;:17;;;;;;;;-1:-1:-1;;;;;4667:24:10;;;;;;;;;:63;;;;4765:22;;;:13;:22;;;;:34;;4792:6;4765:34;:26;:34;:::i;:::-;4740:22;;;;:13;:22;;;;;;;;:59;;;;4815:62;;;;;;;;;;;;;4740:22;;-1:-1:-1;;;;;4815:62:10;;;4830:10;;-1:-1:-1;;;;;;;;;;;4815:62:10;;;;;;;;4361:523;;;:::o;154:644::-;227:15;313:7;;;;;;;;324:3;313:14;380:42;;;;-1:-1:-1;;;401:21:10;380:42;490:16;;;;:7;:16;;;;;;;;:29;;-1:-1:-1;;;;;;490:29:10;509:10;490:29;;;;;;613:66;;;;;;;;;;;;;490:16;;509:10;;-1:-1:-1;;;;;;;;;;;613:66:10;;;;;;;720:1;694:27;;690:63;;;723:18;;;;:9;:18;;;;;:30;;744:9;;723:30;:::i;:::-;;690:63;783:7;768:23;772:9;;768:23;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;;74:27;768:23:10;;137:4:-1;117:14;;;-1:-1;;113:30;157:16;;;768:23:10;;;;-1:-1:-1;768:23:10;;-1:-1:-1;;;;768:23:10;154:644;;;;;:::o;1467:127:9:-;-1:-1:-1;;;1551:21:9;;;:36;;1467:127::o;4936:149::-;-1:-1:-1;;;;;5043:24:9;;;5020:4;5043:24;;;:16;:24;;;;;;;;:35;;;;;;;;;;;;;;;4936:149::o;5789:1442::-;-1:-1:-1;;;;;5971:19:9;;;;5963:67;;;;;-1:-1:-1;;;;;5963:67:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6061:19:9;;6070:10;6061:19;;:66;;-1:-1:-1;;;;;;6084:23:9;;;;;;:16;:23;;;;;;;;6108:10;6084:35;;;;;;;;;;:43;;:35;:43;6061:66;6040:168;;;;;;;-1:-1:-1;;;;;6040:168:9;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6040:168:9;;;;-1:-1:-1;;;;;;;;;;;6040:168:9;;;;;;;;;;;;;;;6223:22;6237:7;6223:13;:22::i;:::-;6219:638;;;6269:17;;;;:8;:17;;;;;;-1:-1:-1;;;;;6269:26:9;;;:17;;:26;6261:35;;;;;;6310:17;;;;:8;:17;;;;;:23;;-1:-1:-1;;;;;;6310:23:9;-1:-1:-1;;;;;6310:23:9;;;;;6367:31;6310:17;6367:22;:31::i;:::-;6440:18;;;;:8;:18;;;;;;;;-1:-1:-1;;;;;6440:25:9;;;;;;;;;;6348:50;;-1:-1:-1;6440:37:9;;6470:6;6440:37;:29;:37;:::i;:::-;6412:18;;;;:8;:18;;;;;;;;-1:-1:-1;;;;;6412:25:9;;;;;;;;;;:65;;;;6517:23;;;;;;:35;;6545:6;6517:27;:35::i;:::-;6491:18;;;;:8;:18;;;;;;;;-1:-1:-1;;;;;6491:23:9;;;;;;;;;;:61;6219:638;;;6737:17;;;;:8;:17;;;;;;;;-1:-1:-1;;;;;6737:24:9;;;;;;;;;;:36;;6766:6;6737:36;:28;:36;:::i;:::-;6710:17;;;;:8;:17;;;;;;;;-1:-1:-1;;;;;6710:24:9;;;;;;;;;;:63;;;;6812:22;;;;;;:34;;6839:6;6812:26;:34::i;:::-;6787:17;;;;:8;:17;;;;;;;;-1:-1:-1;;;;;6787:22:9;;;;;;;;;:59;6219:638;6933:3;-1:-1:-1;;;;;6899:55:9;6926:5;-1:-1:-1;;;;;6899:55:9;6914:10;-1:-1:-1;;;;;6899:55:9;-1:-1:-1;;;;;;;;;;;6938:7:9;6947:6;6899:55;;;;;;;;;;;;;;;;;;;;;;;;7104:16;:3;-1:-1:-1;;;;;7104:14:9;;:16::i;:::-;7100:125;;;7136:78;7167:10;7179:5;7186:3;7191:7;7200:6;7208:5;;7136:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;7136:30:9;;-1:-1:-1;;;7136:78:9:i;:::-;5789:1442;;;;;;:::o;10758:1761::-;11010:28;;;:80;;;;-1:-1:-1;11058:32:9;;;11010:80;:131;;;;-1:-1:-1;11110:31:9;;;11010:131;10989:209;;;;;;;-1:-1:-1;;;;;10989:209:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;11214:9;11209:1219;11229:17;;;11209:1219;;;11334:12;11349:6;;11356:1;11349:9;;;;;;;;;;;;;-1:-1:-1;;;;;11349:9:9;11334:24;;11372:10;11385:4;;11390:1;11385:7;;;;;;;;;;;;;;;-1:-1:-1;;;;;11385:7:9;11372:20;;11406:14;11423:8;;11432:1;11423:11;;;;;;;;;;;;;;;11406:28;;11448:13;11464:7;;11472:1;11464:10;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;11497:18:9;;;;11489:66;;;;;-1:-1:-1;;;;;11489:66:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11594:18:9;;11602:10;11594:18;;:64;;-1:-1:-1;;;;;;11616:22:9;;;;;;:16;:22;;;;;;;;11639:10;11616:34;;;;;;;;;;:42;;:34;:42;11594:64;11569:178;;;;;;;-1:-1:-1;;;;;11569:178:9;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;11569:178:9;;;;-1:-1:-1;;;;;;;;;;;11569:178:9;;;;;;;;;;;;;;;11765:21;11779:6;11765:13;:21::i;:::-;11761:516;;;11814:16;;;;:8;:16;;;;;;-1:-1:-1;;;;;11814:24:9;;;:16;;:24;11806:33;;;;;;11857:16;11876:30;11899:6;11876:22;:30::i;:::-;11924:16;;;;:8;:16;;;;;;;;:21;;-1:-1:-1;;;;;;11924:21:9;-1:-1:-1;;;;;11924:21:9;;;;;;;;;;11990:18;;;:8;:18;;;;;:24;;;;;;;;;;;:18;;-1:-1:-1;11990:31:9;;-1:-1:-1;11990:28:9;:31::i;:::-;11963:18;;;;:8;:18;;;;;;;;-1:-1:-1;;;;;11963:24:9;;;;;;;;;;:58;;;;12064:22;;;;;;:29;;12091:1;12064:26;:29::i;:::-;12039:18;;;;:8;:18;;;;;;;;-1:-1:-1;;;;;12039:22:9;;;;;;;;;;:54;11761:516;;;12157:16;;;;:8;:16;;;;;;;;-1:-1:-1;;;;;12157:22:9;;;;;;;;;;:33;;12184:5;12157:33;:26;:33;:::i;:::-;12132:16;;;;:8;:16;;;;;;;;-1:-1:-1;;;;;12132:22:9;;;;;;;;;;:58;;;;12241:20;;;;;;12231:31;;:5;;:9;:31::i;:::-;12208:16;;;;:8;:16;;;;;;;;-1:-1:-1;;;;;12208:20:9;;;;;;;;;:54;11761:516;12294:15;:2;-1:-1:-1;;;;;12294:13:9;;:15::i;:::-;12290:128;;;12329:74;12360:10;12372:4;12378:2;12382:6;12390:5;12397;;12329:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;12329:30:9;;-1:-1:-1;;;12329:74:9:i;:::-;11209:1219;;;;11248:3;;;;;11209:1219;;;;12506:5;;12443:69;;;;;30:3:-1;22:6;14;1:33;57:3;49:6;45:16;35:26;;12443:69:9;;;;;;;;;;;;;12461:10;-1:-1:-1;;;;;12443:69:9;;12473:6;;12481:4;;12487:8;;12497:7;;12443:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;;74:27;137:4;117:14;-1:-1;;113:30;157:16;;;12443:69:9;;;;;;;;;;;;;-1:-1:-1;12443:69:9;;;;;;;1:33:-1;99:1;81:16;;;74:27;137:4;117:14;-1:-1;;113:30;157:16;;;12443:69:9;;;;;;;;;;;;;-1:-1:-1;12443:69:9;;;;;;;1:33:-1;99:1;81:16;;;74:27;137:4;117:14;-1:-1;;113:30;157:16;;;12443:69:9;;;;;;;;;;;;;-1:-1:-1;12443:69:9;;;;;;;1:33:-1;99:1;81:16;;;74:27;12443:69:9;;137:4:-1;117:14;;;-1:-1;;113:30;157:16;;;12443:69:9;;;;-1:-1:-1;12443:69:9;;-1:-1:-1;;;;;;;;;;;;;12443:69:9;10758:1761;;;;;;;;;;:::o;3310:853:10:-;3394:22;3408:7;3394:13;:22::i;:::-;3386:89;;;;;;;-1:-1:-1;;;;;3386:89:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3506:26;3524:7;3506:17;:26::i;:::-;3485:129;;;;;;;-1:-1:-1;;;;;3485:129:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3645:19:10;;3654:10;3645:19;;:66;;-1:-1:-1;;;;;;3668:23:10;;;;;;:16;:23;;;;;;;;3692:10;3668:35;;;;;;;;;;:43;;:35;:43;3645:66;3624:168;;;;;;;-1:-1:-1;;;;;3624:168:10;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3624:168:10;;;;-1:-1:-1;;;;;;;;;;;3624:168:10;;;;;;;;;;;;;;;3803:13;3819:4;-1:-1:-1;;;;;3819:27:10;;3847:7;3819:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3819:36:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3819:36:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3819:36:10;3893:1;3865:17;;;:8;3819:36;3865:17;;;;;;;:30;;-1:-1:-1;;;;;;3865:30:10;;;3930:15;;;:8;:15;;;;;-1:-1:-1;;;;;3930:22:10;;;;;;;;;;3819:36;;-1:-1:-1;3930:29:10;;3865:30;3930:29;:26;:29;:::i;:::-;3905:15;;;;:8;:15;;;;;;;;-1:-1:-1;;;;;3905:22:10;;;;;;;;;:54;;;;3992:20;;;:13;:20;;;;:27;;4017:1;3992:27;:24;:27;:::i;:::-;3969:20;;;;:13;:20;;;;;;:50;;;;4054:22;;;;;:29;;4081:1;4054:29;:26;:29;:::i;:::-;4029:22;;;;:13;:22;;;;;;;;:54;;;;4099:57;;;;;4154:1;4099:57;;;;;;;;;4029:22;;-1:-1:-1;;;;;4099:57:10;;;4114:10;;-1:-1:-1;;;;;;;;;;;4099:57:10;;;;;;;;3310:853;;;:::o;1107:1040::-;2588:16:9;;;;:7;:16;;;;;;1210:7:10;;-1:-1:-1;;;;;2588:16:9;2608:10;2588:30;2580:39;;;;;;1374:22:10;1388:7;1374:13;:22::i;:::-;1366:31;;;;;;;;1438:13;1454:17;;;:8;:17;;;;;;1474:1;1454:21;;;1505:34;;:4;;:34;:15;:34;:::i;:::-;1485:17;;;;:8;:17;;;;;:54;;;;1550:591;1570:15;;;1550:591;;;1606:10;1619:4;;1624:1;1619:7;;;;;;;1668:9;;;1657:21;;1640:14;1693:16;;;:8;1619:7;1693:16;;;;;;;:21;;1619:7;;;;;;;;-1:-1:-1;;;;;1619:7:10;-1:-1:-1;;;;;;1693:21:10;;;;;;;;1752:17;;;:8;:17;;;;;:21;;;;;;;;;;1619:7;;-1:-1:-1;1752:28:10;;-1:-1:-1;;1752:25:10;:28::i;:::-;1728:17;;;;:8;:17;;;;;;;;-1:-1:-1;;;;;1728:21:10;;;;;;;;;:52;;;;1819:22;;;:13;:22;;;;:29;;1846:1;1819:29;:26;:29;:::i;:::-;1794:22;;;;:13;:22;;;;;;:54;;;;1886:21;;;;;:28;;1912:1;1886:28;:25;:28;:::i;:::-;1862:21;;;;:13;:21;;;;;;;;:52;;;;1934:55;;;;;1987:1;1934:55;;;;;;;;;-1:-1:-1;;;;;1934:55:10;;;1949:10;;-1:-1:-1;;;;;;;;;;;1934:55:10;;;;;;;;;;2008:15;:2;-1:-1:-1;;;;;2008:13:10;;:15::i;:::-;2004:127;;;2043:73;2074:10;2086;2098:2;2102:6;2110:1;2043:73;;;;;;;;;;;;;:30;:73::i;:::-;-1:-1:-1;;1587:3:10;;1550:591;;1274:179:15;1332:7;1359:6;;;;1351:49;;;;;-1:-1:-1;;;;;1351:49:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1422:5:15;;;1274:179::o;834:176::-;892:7;923:5;;;946:6;;;;938:46;;;;;-1:-1:-1;;;;;938:46:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;834:176;-1:-1:-1;;;834:176:15:o;542:413:16:-;602:4;902:20;;940:8;;542:413::o;13854:1366:9:-;466:10;15109:19;;14908:220;;;14927:3;-1:-1:-1;;;;;14908:43:9;;14969:9;14996:5;15019:8;15045:7;15070:5;14908:181;;;;;;;;;;;;;-1:-1:-1;;;;;14908:181:9;-1:-1:-1;;;;;14908:181:9;;;;;;-1:-1:-1;;;;;14908:181:9;-1:-1:-1;;;;;14908:181:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;14908:181:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;14908:181:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;14908:181:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14908:181:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14908:181:9;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14908:181:9;-1:-1:-1;;14908:220:9;;14887:326;;;;;-1:-1:-1;;;;;14887:326:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12630:1218;325:10;13748:13;;13648:113;;;13667:3;-1:-1:-1;;;;;13648:38:9;;13687:9;13698:5;13705:7;13714:6;13722:5;13648:80;;;;;;;;;;;;;-1:-1:-1;;;;;13648:80:9;-1:-1:-1;;;;;13648:80:9;;;;;;-1:-1:-1;;;;;13648:80:9;-1:-1:-1;;;;;13648:80:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;13648:80:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13648:80:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13648:80:9;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13648:80:9;-1:-1:-1;;13648:113:9;;13627:214;;;;;-1:-1:-1;;;;;13627:214:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;72:5334:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;72:5334:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;72:5334:10;;;-1:-1:-1;72:5334:10;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o",
  "source": "pragma solidity ^0.5.0;\n\nimport \"./EER2A.sol\";\nimport \"./IEER2B.sol\";\n\n\ncontract EER2B is IEER2B, EER2A {\n    // This function only creates the type.\n    function create(string calldata _metaLink, bool _isNF) external returns (uint256 _typeID) {\n        // Store the type in the upper 128 bits\n        _typeID = (++nonce << 128);\n\n        // Set a flag if this is an NFI.\n        if (_isNF) _typeID = _typeID | TYPE_NF_BIT;\n\n        // This will allow restricted access to minters.\n        minters[_typeID] = msg.sender;\n\n        // emit a Transfer event with Create semantic to help with discovery.\n        emit TransferSingle(msg.sender, address(0x0), address(0x0), _typeID, 0);\n\n        if (bytes(_metaLink).length > 0) metalinks[_typeID] = _metaLink;\n        emit URI(_metaLink, _typeID);\n    }\n\n    /**\n        @notice Get the total supply of a Credit.\n        @param _typeID   ID of the Credit type\n        @return        The total supply of the Token type requested\n     */\n    function totalSupply(uint256 _typeID) external view returns (uint256) {\n        return totalSupplies[_typeID];\n    }\n\n    function mintNonFungible(uint256 _typeID, address[] calldata _tos)\n        external\n        minterOnly(_typeID)\n    {\n        // No need to check this is a nf type rather than an typeID since\n        // minterOnly() will only let a type pass through.\n        require(isNonFungible(_typeID));\n\n        // Index are 1-based.\n        uint256 index = maxIndex[_typeID] + 1;\n        maxIndex[_typeID] = _tos.length.add(maxIndex[_typeID]);\n\n        for (uint256 i = 0; i < _tos.length; ++i) {\n            address to = _tos[i];\n            uint256 typeID = _typeID | (index + i);\n\n            nfOwners[typeID] = to;\n            balances[_typeID][to] = balances[_typeID][to].add(1);\n            totalSupplies[_typeID] = totalSupplies[_typeID].add(1);\n            totalSupplies[typeID] = totalSupplies[typeID].add(1);\n\n            emit TransferSingle(msg.sender, address(0x0), to, typeID, 1);\n\n            if (to.isContract()) {\n                _doSafeTransferAcceptanceCheck(msg.sender, msg.sender, to, typeID, 1, \"\");\n            }\n        }\n    }\n\n    function mintFungible(uint256 _typeID, address[] calldata _tos, uint256[] calldata _values)\n        external\n        minterOnly(_typeID)\n    {\n        require(isFungible(_typeID));\n        require(_tos.length == _values.length, \"Credit: Array length must match\");\n\n        for (uint256 i = 0; i < _tos.length; ++i) {\n            address to = _tos[i];\n            uint256 value = _values[i];\n\n            // Grant the items to the caller\n            balances[_typeID][to] = value.add(balances[_typeID][to]);\n            totalSupplies[_typeID] = totalSupplies[_typeID].add(value);\n\n            // Emit the Transfer/Mint event.\n            // the 0x0 source address implies a mint\n            // It will also provide the circulating supply info.\n            emit TransferSingle(msg.sender, address(0x0), to, _typeID, value);\n\n            if (to.isContract()) {\n                _doSafeTransferAcceptanceCheck(msg.sender, msg.sender, to, _typeID, value, \"\");\n            }\n        }\n    }\n\n    /**\n        Delete `_value` of Credit `_itemID` from the world.\n        @param _itemID  Item of non-fungible credit type\n        @param _from Source address\n    */\n    function burnNonFungible(uint256 _itemID, address _from) external {\n        require(isNonFungible(_itemID), \"Credit: asset being burned is not a non-fungible asset\");\n        require(\n            isNonFungibleItem(_itemID),\n            \"Credit: asset being burned is not a non-fungible item id\"\n        );\n        require(\n            _from == msg.sender || operatorApproval[_from][msg.sender] == true,\n            \"Credit: Need operator approval for 3rd party transfers.\"\n        );\n\n        uint256 _type = this.getNonFungibleBaseType(_itemID);\n        nfOwners[_itemID] = address(0);\n        balances[_type][_from] = balances[_type][_from].sub(1);\n        totalSupplies[_type] = totalSupplies[_type].sub(1);\n        totalSupplies[_itemID] = totalSupplies[_itemID].sub(1);\n\n        emit TransferSingle(msg.sender, _from, address(0), _itemID, 1);\n    }\n\n    /**\n        Delete `_value` of Credit `_typeID` from the world.\n        @param _typeID  Credit type\n        @param _value Burn Credit quantities\n        @param _from Source address\n    */\n    function burnFungible(uint256 _typeID, address _from, uint256 _value) external {\n        require(isFungible(_typeID));\n        require(\n            _from == msg.sender || operatorApproval[_from][msg.sender] == true,\n            \"Credit: Need operator approval for 3rd party transfers.\"\n        );\n\n        balances[_typeID][_from] = balances[_typeID][_from].sub(_value);\n        totalSupplies[_typeID] = totalSupplies[_typeID].sub(_value);\n\n        emit TransferSingle(msg.sender, _from, address(0), _typeID, _value);\n    }\n\n    /**\n        give `_type` creator authorized to `_minter`.\n        @param _typeID  Credit _typeID (when credit is fungible) or _type (when credit is non-fungible)\n        @param _to New minter, in case of address 0 the authorized will be locked forever\n    */\n    function setMinter(uint256 _typeID, address _to) external minterOnly(_typeID) {\n        require(minters[_typeID] != _to, \"Credit: cannot set current minter as a new minter\");\n        minters[_typeID] = _to;\n\n        emit SetMinter(_typeID, _to);\n    }\n}\n",
  "sourcePath": "@Evrynetlabs/credit-contract/contracts/EER2B.sol",
  "ast": {
    "absolutePath": "@Evrynetlabs/credit-contract/contracts/EER2B.sol",
    "exportedSymbols": {
      "EER2B": [
        2558
      ]
    },
    "id": 2559,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 2028,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:10"
      },
      {
        "absolutePath": "@Evrynetlabs/credit-contract/contracts/EER2A.sol",
        "file": "./EER2A.sol",
        "id": 2029,
        "nodeType": "ImportDirective",
        "scope": 2559,
        "sourceUnit": 2027,
        "src": "25:21:10",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@Evrynetlabs/credit-contract/contracts/IEER2B.sol",
        "file": "./IEER2B.sol",
        "id": 2030,
        "nodeType": "ImportDirective",
        "scope": 2559,
        "sourceUnit": 2783,
        "src": "47:22:10",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 2031,
              "name": "IEER2B",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 2782,
              "src": "90:6:10",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IEER2B_$2782",
                "typeString": "contract IEER2B"
              }
            },
            "id": 2032,
            "nodeType": "InheritanceSpecifier",
            "src": "90:6:10"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 2033,
              "name": "EER2A",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 2026,
              "src": "98:5:10",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_EER2A_$2026",
                "typeString": "contract EER2A"
              }
            },
            "id": 2034,
            "nodeType": "InheritanceSpecifier",
            "src": "98:5:10"
          }
        ],
        "contractDependencies": [
          2026,
          2709,
          2782
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 2558,
        "linearizedBaseContracts": [
          2558,
          2026,
          2709,
          2782
        ],
        "name": "EER2B",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 2097,
              "nodeType": "Block",
              "src": "244:554:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2049,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2043,
                      "name": "_typeID",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2041,
                      "src": "302:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2047,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 2045,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": true,
                            "src": "313:7:10",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 2044,
                              "name": "nonce",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1119,
                              "src": "315:5:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "313238",
                            "id": 2046,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "324:3:10",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_128_by_1",
                              "typeString": "int_const 128"
                            },
                            "value": "128"
                          },
                          "src": "313:14:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 2048,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "312:16:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "302:26:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2050,
                  "nodeType": "ExpressionStatement",
                  "src": "302:26:10"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 2051,
                    "name": "_isNF",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2038,
                    "src": "384:5:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2058,
                  "nodeType": "IfStatement",
                  "src": "380:42:10",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 2056,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 2052,
                        "name": "_typeID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2041,
                        "src": "391:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2055,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 2053,
                          "name": "_typeID",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2041,
                          "src": "401:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "|",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 2054,
                          "name": "TYPE_NF_BIT",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1117,
                          "src": "411:11:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "401:21:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "391:31:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2057,
                    "nodeType": "ExpressionStatement",
                    "src": "391:31:10"
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2064,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2059,
                        "name": "minters",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1123,
                        "src": "490:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                          "typeString": "mapping(uint256 => address)"
                        }
                      },
                      "id": 2061,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2060,
                        "name": "_typeID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2041,
                        "src": "498:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "490:16:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2062,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2994,
                        "src": "509:3:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 2063,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "509:10:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "490:29:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 2065,
                  "nodeType": "ExpressionStatement",
                  "src": "490:29:10"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2067,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2994,
                          "src": "628:3:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 2068,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "628:10:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "307830",
                            "id": 2070,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "648:3:10",
                            "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": 2069,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "640:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 2071,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "640:12:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "307830",
                            "id": 2073,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "662:3:10",
                            "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": 2072,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "654:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 2074,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "654:12:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2075,
                        "name": "_typeID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2041,
                        "src": "668:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 2076,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "677:1:10",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "id": 2066,
                      "name": "TransferSingle",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2580,
                      "src": "613:14:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,address,uint256,uint256)"
                      }
                    },
                    "id": 2077,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "613:66:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2078,
                  "nodeType": "EmitStatement",
                  "src": "608:71:10"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2084,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2080,
                            "name": "_metaLink",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2036,
                            "src": "700:9:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_calldata_ptr",
                              "typeString": "string calldata"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_string_calldata_ptr",
                              "typeString": "string calldata"
                            }
                          ],
                          "id": 2079,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "694:5:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                            "typeString": "type(bytes storage pointer)"
                          },
                          "typeName": "bytes"
                        },
                        "id": 2081,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "694:16:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      },
                      "id": 2082,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "694:23:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 2083,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "720:1:10",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "694:27:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2091,
                  "nodeType": "IfStatement",
                  "src": "690:63:10",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 2089,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2085,
                          "name": "metalinks",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1131,
                          "src": "723:9:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$",
                            "typeString": "mapping(uint256 => string storage ref)"
                          }
                        },
                        "id": 2087,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2086,
                          "name": "_typeID",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2041,
                          "src": "733:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": true,
                        "nodeType": "IndexAccess",
                        "src": "723:18:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage",
                          "typeString": "string storage ref"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "id": 2088,
                        "name": "_metaLink",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2036,
                        "src": "744:9:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      },
                      "src": "723:30:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "id": 2090,
                    "nodeType": "ExpressionStatement",
                    "src": "723:30:10"
                  }
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2093,
                        "name": "_metaLink",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2036,
                        "src": "772:9:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2094,
                        "name": "_typeID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2041,
                        "src": "783:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2092,
                      "name": "URI",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2717,
                      "src": "768:3:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_string_memory_ptr_$_t_uint256_$returns$__$",
                        "typeString": "function (string memory,uint256)"
                      }
                    },
                    "id": 2095,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "768:23:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2096,
                  "nodeType": "EmitStatement",
                  "src": "763:28:10"
                }
              ]
            },
            "documentation": null,
            "id": 2098,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "create",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2039,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2036,
                  "name": "_metaLink",
                  "nodeType": "VariableDeclaration",
                  "scope": 2098,
                  "src": "170:25:10",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2035,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "170:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2038,
                  "name": "_isNF",
                  "nodeType": "VariableDeclaration",
                  "scope": 2098,
                  "src": "197:10:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2037,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "197:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "169:39:10"
            },
            "returnParameters": {
              "id": 2042,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2041,
                  "name": "_typeID",
                  "nodeType": "VariableDeclaration",
                  "scope": 2098,
                  "src": "227:15:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2040,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "227:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "226:17:10"
            },
            "scope": 2558,
            "src": "154:644:10",
            "stateMutability": "nonpayable",
            "superFunction": 2746,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2109,
              "nodeType": "Block",
              "src": "1055:46:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 2105,
                      "name": "totalSupplies",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1139,
                      "src": "1072:13:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                        "typeString": "mapping(uint256 => uint256)"
                      }
                    },
                    "id": 2107,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 2106,
                      "name": "_typeID",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2100,
                      "src": "1086:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "1072:22:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 2104,
                  "id": 2108,
                  "nodeType": "Return",
                  "src": "1065:29:10"
                }
              ]
            },
            "documentation": "@notice Get the total supply of a Credit.\n@param _typeID   ID of the Credit type\n@return        The total supply of the Token type requested",
            "id": 2110,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "totalSupply",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2101,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2100,
                  "name": "_typeID",
                  "nodeType": "VariableDeclaration",
                  "scope": 2110,
                  "src": "1006:15:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2099,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1006:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1005:17:10"
            },
            "returnParameters": {
              "id": 2104,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2103,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2110,
                  "src": "1046:7:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2102,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1046:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1045:9:10"
            },
            "scope": 2558,
            "src": "985:116:10",
            "stateMutability": "view",
            "superFunction": 2737,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2245,
              "nodeType": "Block",
              "src": "1223:924:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2123,
                            "name": "_typeID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2112,
                            "src": "1388:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 2122,
                          "name": "isNonFungible",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1165,
                          "src": "1374:13:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (uint256) pure returns (bool)"
                          }
                        },
                        "id": 2124,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1374:22:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2121,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2997,
                        2998
                      ],
                      "referencedDeclaration": 2997,
                      "src": "1366:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 2125,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1366:31:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2126,
                  "nodeType": "ExpressionStatement",
                  "src": "1366:31:10"
                },
                {
                  "assignments": [
                    2128
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2128,
                      "name": "index",
                      "nodeType": "VariableDeclaration",
                      "scope": 2245,
                      "src": "1438:13:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2127,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1438:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2134,
                  "initialValue": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2133,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2129,
                        "name": "maxIndex",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1135,
                        "src": "1454:8:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                          "typeString": "mapping(uint256 => uint256)"
                        }
                      },
                      "id": 2131,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2130,
                        "name": "_typeID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2112,
                        "src": "1463:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "1454:17:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "+",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "31",
                      "id": 2132,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1474:1:10",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "1454:21:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1438:37:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2145,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2135,
                        "name": "maxIndex",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1135,
                        "src": "1485:8:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                          "typeString": "mapping(uint256 => uint256)"
                        }
                      },
                      "id": 2137,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2136,
                        "name": "_typeID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2112,
                        "src": "1494:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "1485:17:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2141,
                            "name": "maxIndex",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1135,
                            "src": "1521:8:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                              "typeString": "mapping(uint256 => uint256)"
                            }
                          },
                          "id": 2143,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2142,
                            "name": "_typeID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2112,
                            "src": "1530:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1521:17:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2138,
                            "name": "_tos",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2115,
                            "src": "1505:4:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            }
                          },
                          "id": 2139,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "1505:11:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2140,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2854,
                        "src": "1505:15:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 2144,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1505:34:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1485:54:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2146,
                  "nodeType": "ExpressionStatement",
                  "src": "1485:54:10"
                },
                {
                  "body": {
                    "id": 2243,
                    "nodeType": "Block",
                    "src": "1592:549:10",
                    "statements": [
                      {
                        "assignments": [
                          2159
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2159,
                            "name": "to",
                            "nodeType": "VariableDeclaration",
                            "scope": 2243,
                            "src": "1606:10:10",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 2158,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "1606:7:10",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2163,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2160,
                            "name": "_tos",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2115,
                            "src": "1619:4:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            }
                          },
                          "id": 2162,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2161,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2148,
                            "src": "1624:1:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1619:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1606:20:10"
                      },
                      {
                        "assignments": [
                          2165
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2165,
                            "name": "typeID",
                            "nodeType": "VariableDeclaration",
                            "scope": 2243,
                            "src": "1640:14:10",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2164,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1640:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2172,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2171,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 2166,
                            "name": "_typeID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2112,
                            "src": "1657:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "|",
                          "rightExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2169,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 2167,
                                  "name": "index",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2128,
                                  "src": "1668:5:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 2168,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2148,
                                  "src": "1676:1:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1668:9:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 2170,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "1667:11:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1657:21:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1640:38:10"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2177,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2173,
                              "name": "nfOwners",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1127,
                              "src": "1693:8:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                "typeString": "mapping(uint256 => address)"
                              }
                            },
                            "id": 2175,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2174,
                              "name": "typeID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2165,
                              "src": "1702:6:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1693:16:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 2176,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2159,
                            "src": "1712:2:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1693:21:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 2178,
                        "nodeType": "ExpressionStatement",
                        "src": "1693:21:10"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2192,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2179,
                                "name": "balances",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1145,
                                "src": "1728:8:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                  "typeString": "mapping(uint256 => mapping(address => uint256))"
                                }
                              },
                              "id": 2182,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 2180,
                                "name": "_typeID",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2112,
                                "src": "1737:7:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "1728:17:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 2183,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2181,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2159,
                              "src": "1746:2:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1728:21:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 2190,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1778:1:10",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 2184,
                                    "name": "balances",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1145,
                                    "src": "1752:8:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                      "typeString": "mapping(uint256 => mapping(address => uint256))"
                                    }
                                  },
                                  "id": 2186,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 2185,
                                    "name": "_typeID",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2112,
                                    "src": "1761:7:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "1752:17:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 2188,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 2187,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2159,
                                  "src": "1770:2:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "1752:21:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2189,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2854,
                              "src": "1752:25:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 2191,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1752:28:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1728:52:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2193,
                        "nodeType": "ExpressionStatement",
                        "src": "1728:52:10"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2203,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2194,
                              "name": "totalSupplies",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1139,
                              "src": "1794:13:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 2196,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2195,
                              "name": "_typeID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2112,
                              "src": "1808:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1794:22:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 2201,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1846:1:10",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 2197,
                                  "name": "totalSupplies",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1139,
                                  "src": "1819:13:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                    "typeString": "mapping(uint256 => uint256)"
                                  }
                                },
                                "id": 2199,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 2198,
                                  "name": "_typeID",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2112,
                                  "src": "1833:7:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "1819:22:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2200,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2854,
                              "src": "1819:26:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 2202,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1819:29:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1794:54:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2204,
                        "nodeType": "ExpressionStatement",
                        "src": "1794:54:10"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2214,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2205,
                              "name": "totalSupplies",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1139,
                              "src": "1862:13:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 2207,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2206,
                              "name": "typeID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2165,
                              "src": "1876:6:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1862:21:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 2212,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1912:1:10",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 2208,
                                  "name": "totalSupplies",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1139,
                                  "src": "1886:13:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                    "typeString": "mapping(uint256 => uint256)"
                                  }
                                },
                                "id": 2210,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 2209,
                                  "name": "typeID",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2165,
                                  "src": "1900:6:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "1886:21:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2211,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2854,
                              "src": "1886:25:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 2213,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1886:28:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1862:52:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2215,
                        "nodeType": "ExpressionStatement",
                        "src": "1862:52:10"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2217,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2994,
                                "src": "1949:3:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 2218,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1949:10:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "307830",
                                  "id": 2220,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1969:3:10",
                                  "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": 2219,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1961:7:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 2221,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1961:12:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2222,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2159,
                              "src": "1975:2:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2223,
                              "name": "typeID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2165,
                              "src": "1979:6:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 2224,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1987:1:10",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              }
                            ],
                            "id": 2216,
                            "name": "TransferSingle",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2580,
                            "src": "1934:14:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,address,uint256,uint256)"
                            }
                          },
                          "id": 2225,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1934:55:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2226,
                        "nodeType": "EmitStatement",
                        "src": "1929:60:10"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2227,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2159,
                              "src": "2008:2:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 2228,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isContract",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2978,
                            "src": "2008:13:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$",
                              "typeString": "function (address) view returns (bool)"
                            }
                          },
                          "id": 2229,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2008:15:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 2242,
                        "nodeType": "IfStatement",
                        "src": "2004:127:10",
                        "trueBody": {
                          "id": 2241,
                          "nodeType": "Block",
                          "src": "2025:106:10",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2231,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2994,
                                      "src": "2074:3:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 2232,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "2074:10:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2233,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2994,
                                      "src": "2086:3:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 2234,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "2086:10:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 2235,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2159,
                                    "src": "2098:2:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 2236,
                                    "name": "typeID",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2165,
                                    "src": "2102:6:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 2237,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2110:1:10",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "",
                                    "id": 2238,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2113:2:10",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                      "typeString": "literal_string \"\""
                                    },
                                    "value": ""
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                      "typeString": "literal_string \"\""
                                    }
                                  ],
                                  "id": 2230,
                                  "name": "_doSafeTransferAcceptanceCheck",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1991,
                                  "src": "2043:30:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                                    "typeString": "function (address,address,address,uint256,uint256,bytes memory)"
                                  }
                                },
                                "id": 2239,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2043:73:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2240,
                              "nodeType": "ExpressionStatement",
                              "src": "2043:73:10"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2154,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2151,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2148,
                      "src": "1570:1:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2152,
                        "name": "_tos",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2115,
                        "src": "1574:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[] calldata"
                        }
                      },
                      "id": 2153,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "1574:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1570:15:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2244,
                  "initializationExpression": {
                    "assignments": [
                      2148
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 2148,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 2244,
                        "src": "1555:9:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2147,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1555:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 2150,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 2149,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1567:1:10",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "1555:13:10"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 2156,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": true,
                      "src": "1587:3:10",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 2155,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2148,
                        "src": "1589:1:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2157,
                    "nodeType": "ExpressionStatement",
                    "src": "1587:3:10"
                  },
                  "nodeType": "ForStatement",
                  "src": "1550:591:10"
                }
              ]
            },
            "documentation": null,
            "id": 2246,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 2118,
                    "name": "_typeID",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2112,
                    "src": "1210:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 2119,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2117,
                  "name": "minterOnly",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1267,
                  "src": "1199:10:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1199:19:10"
              }
            ],
            "name": "mintNonFungible",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2116,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2112,
                  "name": "_typeID",
                  "nodeType": "VariableDeclaration",
                  "scope": 2246,
                  "src": "1132:15:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2111,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1132:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2115,
                  "name": "_tos",
                  "nodeType": "VariableDeclaration",
                  "scope": 2246,
                  "src": "1149:23:10",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2113,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1149:7:10",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 2114,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "1149:9:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1131:42:10"
            },
            "returnParameters": {
              "id": 2120,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1223:0:10"
            },
            "scope": 2558,
            "src": "1107:1040:10",
            "stateMutability": "nonpayable",
            "superFunction": 2754,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2353,
              "nodeType": "Block",
              "src": "2294:842:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2262,
                            "name": "_typeID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2248,
                            "src": "2323:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 2261,
                          "name": "isFungible",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1179,
                          "src": "2312:10:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (uint256) pure returns (bool)"
                          }
                        },
                        "id": 2263,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2312:19:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2260,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2997,
                        2998
                      ],
                      "referencedDeclaration": 2997,
                      "src": "2304:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 2264,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2304:28:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2265,
                  "nodeType": "ExpressionStatement",
                  "src": "2304:28:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2271,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2267,
                            "name": "_tos",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2251,
                            "src": "2350:4:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            }
                          },
                          "id": 2268,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "2350:11:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2269,
                            "name": "_values",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2254,
                            "src": "2365:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                              "typeString": "uint256[] calldata"
                            }
                          },
                          "id": 2270,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "2365:14:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2350:29:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4372656469743a204172726179206c656e677468206d757374206d61746368",
                        "id": 2272,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2381:33:10",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_7211bd421b3ab8f6818cb69a3c6ffd46dcfda05b4cd4c25740f75e1d0c9f3dce",
                          "typeString": "literal_string \"Credit: Array length must match\""
                        },
                        "value": "Credit: Array length must match"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_7211bd421b3ab8f6818cb69a3c6ffd46dcfda05b4cd4c25740f75e1d0c9f3dce",
                          "typeString": "literal_string \"Credit: Array length must match\""
                        }
                      ],
                      "id": 2266,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2997,
                        2998
                      ],
                      "referencedDeclaration": 2998,
                      "src": "2342:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2273,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2342:73:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2274,
                  "nodeType": "ExpressionStatement",
                  "src": "2342:73:10"
                },
                {
                  "body": {
                    "id": 2351,
                    "nodeType": "Block",
                    "src": "2468:662:10",
                    "statements": [
                      {
                        "assignments": [
                          2287
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2287,
                            "name": "to",
                            "nodeType": "VariableDeclaration",
                            "scope": 2351,
                            "src": "2482:10:10",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 2286,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2482:7:10",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2291,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2288,
                            "name": "_tos",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2251,
                            "src": "2495:4:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            }
                          },
                          "id": 2290,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2289,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2276,
                            "src": "2500:1:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "2495:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2482:20:10"
                      },
                      {
                        "assignments": [
                          2293
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2293,
                            "name": "value",
                            "nodeType": "VariableDeclaration",
                            "scope": 2351,
                            "src": "2516:13:10",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2292,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2516:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2297,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2294,
                            "name": "_values",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2254,
                            "src": "2532:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                              "typeString": "uint256[] calldata"
                            }
                          },
                          "id": 2296,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2295,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2276,
                            "src": "2540:1:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "2532:10:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2516:26:10"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2311,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2298,
                                "name": "balances",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1145,
                                "src": "2602:8:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                  "typeString": "mapping(uint256 => mapping(address => uint256))"
                                }
                              },
                              "id": 2301,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 2299,
                                "name": "_typeID",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2248,
                                "src": "2611:7:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2602:17:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 2302,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2300,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2287,
                              "src": "2620:2:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "2602:21:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 2305,
                                    "name": "balances",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1145,
                                    "src": "2636:8:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                      "typeString": "mapping(uint256 => mapping(address => uint256))"
                                    }
                                  },
                                  "id": 2307,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 2306,
                                    "name": "_typeID",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2248,
                                    "src": "2645:7:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "2636:17:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 2309,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 2308,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2287,
                                  "src": "2654:2:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "2636:21:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 2303,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2293,
                                "src": "2626:5:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2304,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2854,
                              "src": "2626:9:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 2310,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2626:32:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2602:56:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2312,
                        "nodeType": "ExpressionStatement",
                        "src": "2602:56:10"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2322,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2313,
                              "name": "totalSupplies",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1139,
                              "src": "2672:13:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 2315,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2314,
                              "name": "_typeID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2248,
                              "src": "2686:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "2672:22:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2320,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2293,
                                "src": "2724:5:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 2316,
                                  "name": "totalSupplies",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1139,
                                  "src": "2697:13:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                    "typeString": "mapping(uint256 => uint256)"
                                  }
                                },
                                "id": 2318,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 2317,
                                  "name": "_typeID",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2248,
                                  "src": "2711:7:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "2697:22:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2319,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2854,
                              "src": "2697:26:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 2321,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2697:33:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2672:58:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2323,
                        "nodeType": "ExpressionStatement",
                        "src": "2672:58:10"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2325,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2994,
                                "src": "2928:3:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 2326,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2928:10:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "307830",
                                  "id": 2328,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2948:3:10",
                                  "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": 2327,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2940:7:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 2329,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2940:12:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2330,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2287,
                              "src": "2954:2:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2331,
                              "name": "_typeID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2248,
                              "src": "2958:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2332,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2293,
                              "src": "2967:5:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2324,
                            "name": "TransferSingle",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2580,
                            "src": "2913:14:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,address,uint256,uint256)"
                            }
                          },
                          "id": 2333,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2913:60:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2334,
                        "nodeType": "EmitStatement",
                        "src": "2908:65:10"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2335,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2287,
                              "src": "2992:2:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 2336,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isContract",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2978,
                            "src": "2992:13:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$",
                              "typeString": "function (address) view returns (bool)"
                            }
                          },
                          "id": 2337,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2992:15:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 2350,
                        "nodeType": "IfStatement",
                        "src": "2988:132:10",
                        "trueBody": {
                          "id": 2349,
                          "nodeType": "Block",
                          "src": "3009:111:10",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2339,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2994,
                                      "src": "3058:3:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 2340,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "3058:10:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2341,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2994,
                                      "src": "3070:3:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 2342,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "3070:10:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 2343,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2287,
                                    "src": "3082:2:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 2344,
                                    "name": "_typeID",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2248,
                                    "src": "3086:7:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 2345,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2293,
                                    "src": "3095:5:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "",
                                    "id": 2346,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3102:2:10",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                      "typeString": "literal_string \"\""
                                    },
                                    "value": ""
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                      "typeString": "literal_string \"\""
                                    }
                                  ],
                                  "id": 2338,
                                  "name": "_doSafeTransferAcceptanceCheck",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1991,
                                  "src": "3027:30:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                                    "typeString": "function (address,address,address,uint256,uint256,bytes memory)"
                                  }
                                },
                                "id": 2347,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3027:78:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2348,
                              "nodeType": "ExpressionStatement",
                              "src": "3027:78:10"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2282,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2279,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2276,
                      "src": "2446:1:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2280,
                        "name": "_tos",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2251,
                        "src": "2450:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[] calldata"
                        }
                      },
                      "id": 2281,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "2450:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2446:15:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2352,
                  "initializationExpression": {
                    "assignments": [
                      2276
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 2276,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 2352,
                        "src": "2431:9:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2275,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2431:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 2278,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 2277,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2443:1:10",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "2431:13:10"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 2284,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": true,
                      "src": "2463:3:10",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 2283,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2276,
                        "src": "2465:1:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2285,
                    "nodeType": "ExpressionStatement",
                    "src": "2463:3:10"
                  },
                  "nodeType": "ForStatement",
                  "src": "2426:704:10"
                }
              ]
            },
            "documentation": null,
            "id": 2354,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 2257,
                    "name": "_typeID",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2248,
                    "src": "2281:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 2258,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2256,
                  "name": "minterOnly",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1267,
                  "src": "2270:10:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2270:19:10"
              }
            ],
            "name": "mintFungible",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2255,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2248,
                  "name": "_typeID",
                  "nodeType": "VariableDeclaration",
                  "scope": 2354,
                  "src": "2175:15:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2247,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2175:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2251,
                  "name": "_tos",
                  "nodeType": "VariableDeclaration",
                  "scope": 2354,
                  "src": "2192:23:10",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2249,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "2192:7:10",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 2250,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "2192:9:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2254,
                  "name": "_values",
                  "nodeType": "VariableDeclaration",
                  "scope": 2354,
                  "src": "2217:26:10",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2252,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "2217:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2253,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "2217:9:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2174:70:10"
            },
            "returnParameters": {
              "id": 2259,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2294:0:10"
            },
            "scope": 2558,
            "src": "2153:983:10",
            "stateMutability": "nonpayable",
            "superFunction": 2765,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2455,
              "nodeType": "Block",
              "src": "3376:787:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2363,
                            "name": "_itemID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2356,
                            "src": "3408:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 2362,
                          "name": "isNonFungible",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1165,
                          "src": "3394:13:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (uint256) pure returns (bool)"
                          }
                        },
                        "id": 2364,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3394:22:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4372656469743a206173736574206265696e67206275726e6564206973206e6f742061206e6f6e2d66756e6769626c65206173736574",
                        "id": 2365,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3418:56:10",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_43b57116e52aa8e2df41a1ecad06187c042adda1bfc2b60326ca81c8acb0439c",
                          "typeString": "literal_string \"Credit: asset being burned is not a non-fungible asset\""
                        },
                        "value": "Credit: asset being burned is not a non-fungible asset"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_43b57116e52aa8e2df41a1ecad06187c042adda1bfc2b60326ca81c8acb0439c",
                          "typeString": "literal_string \"Credit: asset being burned is not a non-fungible asset\""
                        }
                      ],
                      "id": 2361,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2997,
                        2998
                      ],
                      "referencedDeclaration": 2998,
                      "src": "3386:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2366,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3386:89:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2367,
                  "nodeType": "ExpressionStatement",
                  "src": "3386:89:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2370,
                            "name": "_itemID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2356,
                            "src": "3524:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 2369,
                          "name": "isNonFungibleItem",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1240,
                          "src": "3506:17:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (uint256) pure returns (bool)"
                          }
                        },
                        "id": 2371,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3506:26:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4372656469743a206173736574206265696e67206275726e6564206973206e6f742061206e6f6e2d66756e6769626c65206974656d206964",
                        "id": 2372,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3546:58:10",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c87e27976dd97987d447f922cfc0454f6e1ca41292c3f2ddb2c504709a361e1e",
                          "typeString": "literal_string \"Credit: asset being burned is not a non-fungible item id\""
                        },
                        "value": "Credit: asset being burned is not a non-fungible item id"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c87e27976dd97987d447f922cfc0454f6e1ca41292c3f2ddb2c504709a361e1e",
                          "typeString": "literal_string \"Credit: asset being burned is not a non-fungible item id\""
                        }
                      ],
                      "id": 2368,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2997,
                        2998
                      ],
                      "referencedDeclaration": 2998,
                      "src": "3485:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2373,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3485:129:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2374,
                  "nodeType": "ExpressionStatement",
                  "src": "3485:129:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 2388,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 2379,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 2376,
                            "name": "_from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2358,
                            "src": "3645:5:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2377,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2994,
                              "src": "3654:3:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 2378,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "3654:10:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "3645:19:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 2387,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2380,
                                "name": "operatorApproval",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1151,
                                "src": "3668:16:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                                  "typeString": "mapping(address => mapping(address => bool))"
                                }
                              },
                              "id": 2382,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 2381,
                                "name": "_from",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2358,
                                "src": "3685:5:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "3668:23:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 2385,
                            "indexExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2383,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2994,
                                "src": "3692:3:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 2384,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "3692:10:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "3668:35:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 2386,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3707:4:10",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "3668:43:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "3645:66:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4372656469743a204e656564206f70657261746f7220617070726f76616c20666f7220337264207061727479207472616e73666572732e",
                        "id": 2389,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3725:57:10",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_7c1d923c2611476827950598c8902cd88faba1161e482481515611305cbe9b8b",
                          "typeString": "literal_string \"Credit: Need operator approval for 3rd party transfers.\""
                        },
                        "value": "Credit: Need operator approval for 3rd party transfers."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_7c1d923c2611476827950598c8902cd88faba1161e482481515611305cbe9b8b",
                          "typeString": "literal_string \"Credit: Need operator approval for 3rd party transfers.\""
                        }
                      ],
                      "id": 2375,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2997,
                        2998
                      ],
                      "referencedDeclaration": 2998,
                      "src": "3624:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2390,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3624:168:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2391,
                  "nodeType": "ExpressionStatement",
                  "src": "3624:168:10"
                },
                {
                  "assignments": [
                    2393
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2393,
                      "name": "_type",
                      "nodeType": "VariableDeclaration",
                      "scope": 2455,
                      "src": "3803:13:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2392,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3803:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2398,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2396,
                        "name": "_itemID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2356,
                        "src": "3847:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2394,
                        "name": "this",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3027,
                        "src": "3819:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_EER2B_$2558",
                          "typeString": "contract EER2B"
                        }
                      },
                      "id": 2395,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getNonFungibleBaseType",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1203,
                      "src": "3819:27:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_pure$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (uint256) pure external returns (uint256)"
                      }
                    },
                    "id": 2397,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3819:36:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3803:52:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2405,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2399,
                        "name": "nfOwners",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1127,
                        "src": "3865:8:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                          "typeString": "mapping(uint256 => address)"
                        }
                      },
                      "id": 2401,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2400,
                        "name": "_itemID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2356,
                        "src": "3874:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "3865:17:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 2403,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3893:1:10",
                          "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": 2402,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "3885:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 2404,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3885:10:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "3865:30:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 2406,
                  "nodeType": "ExpressionStatement",
                  "src": "3865:30:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2420,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2407,
                          "name": "balances",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1145,
                          "src": "3905:8:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                            "typeString": "mapping(uint256 => mapping(address => uint256))"
                          }
                        },
                        "id": 2410,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2408,
                          "name": "_type",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2393,
                          "src": "3914:5:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3905:15:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 2411,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2409,
                        "name": "_from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2358,
                        "src": "3921:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "3905:22:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 2418,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3957:1:10",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2412,
                              "name": "balances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1145,
                              "src": "3930:8:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                "typeString": "mapping(uint256 => mapping(address => uint256))"
                              }
                            },
                            "id": 2414,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2413,
                              "name": "_type",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2393,
                              "src": "3939:5:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "3930:15:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 2416,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2415,
                            "name": "_from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2358,
                            "src": "3946:5:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "3930:22:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2417,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sub",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2879,
                        "src": "3930:26:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 2419,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3930:29:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3905:54:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2421,
                  "nodeType": "ExpressionStatement",
                  "src": "3905:54:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2431,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2422,
                        "name": "totalSupplies",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1139,
                        "src": "3969:13:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                          "typeString": "mapping(uint256 => uint256)"
                        }
                      },
                      "id": 2424,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2423,
                        "name": "_type",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2393,
                        "src": "3983:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "3969:20:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 2429,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4017:1:10",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2425,
                            "name": "totalSupplies",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1139,
                            "src": "3992:13:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                              "typeString": "mapping(uint256 => uint256)"
                            }
                          },
                          "id": 2427,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2426,
                            "name": "_type",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2393,
                            "src": "4006:5:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "3992:20:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2428,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sub",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2879,
                        "src": "3992:24:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 2430,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3992:27:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3969:50:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2432,
                  "nodeType": "ExpressionStatement",
                  "src": "3969:50:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2442,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2433,
                        "name": "totalSupplies",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1139,
                        "src": "4029:13:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                          "typeString": "mapping(uint256 => uint256)"
                        }
                      },
                      "id": 2435,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2434,
                        "name": "_itemID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2356,
                        "src": "4043:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "4029:22:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 2440,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4081:1:10",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2436,
                            "name": "totalSupplies",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1139,
                            "src": "4054:13:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                              "typeString": "mapping(uint256 => uint256)"
                            }
                          },
                          "id": 2438,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2437,
                            "name": "_itemID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2356,
                            "src": "4068:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "4054:22:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2439,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sub",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2879,
                        "src": "4054:26:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 2441,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4054:29:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4029:54:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2443,
                  "nodeType": "ExpressionStatement",
                  "src": "4029:54:10"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2445,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2994,
                          "src": "4114:3:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 2446,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "4114:10:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2447,
                        "name": "_from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2358,
                        "src": "4126:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2449,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4141:1:10",
                            "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": 2448,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4133:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 2450,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4133:10:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2451,
                        "name": "_itemID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2356,
                        "src": "4145:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 2452,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4154:1:10",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        }
                      ],
                      "id": 2444,
                      "name": "TransferSingle",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2580,
                      "src": "4099:14:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,address,uint256,uint256)"
                      }
                    },
                    "id": 2453,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4099:57:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2454,
                  "nodeType": "EmitStatement",
                  "src": "4094:62:10"
                }
              ]
            },
            "documentation": "Delete `_value` of Credit `_itemID` from the world.\n@param _itemID  Item of non-fungible credit type\n@param _from Source address",
            "id": 2456,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "burnNonFungible",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2359,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2356,
                  "name": "_itemID",
                  "nodeType": "VariableDeclaration",
                  "scope": 2456,
                  "src": "3335:15:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2355,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3335:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2358,
                  "name": "_from",
                  "nodeType": "VariableDeclaration",
                  "scope": 2456,
                  "src": "3352:13:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2357,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3352:7:10",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3334:32:10"
            },
            "returnParameters": {
              "id": 2360,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3376:0:10"
            },
            "scope": 2558,
            "src": "3310:853:10",
            "stateMutability": "nonpayable",
            "superFunction": 2772,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2525,
              "nodeType": "Block",
              "src": "4440:444:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2467,
                            "name": "_typeID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2458,
                            "src": "4469:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 2466,
                          "name": "isFungible",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1179,
                          "src": "4458:10:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (uint256) pure returns (bool)"
                          }
                        },
                        "id": 2468,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4458:19:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2465,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2997,
                        2998
                      ],
                      "referencedDeclaration": 2997,
                      "src": "4450:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 2469,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4450:28:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2470,
                  "nodeType": "ExpressionStatement",
                  "src": "4450:28:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 2484,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 2475,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 2472,
                            "name": "_from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2460,
                            "src": "4509:5:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2473,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2994,
                              "src": "4518:3:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 2474,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "4518:10:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "4509:19:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 2483,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2476,
                                "name": "operatorApproval",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1151,
                                "src": "4532:16:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                                  "typeString": "mapping(address => mapping(address => bool))"
                                }
                              },
                              "id": 2478,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 2477,
                                "name": "_from",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2460,
                                "src": "4549:5:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4532:23:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 2481,
                            "indexExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2479,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2994,
                                "src": "4556:3:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 2480,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "4556:10:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "4532:35:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 2482,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4571:4:10",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "4532:43:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "4509:66:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4372656469743a204e656564206f70657261746f7220617070726f76616c20666f7220337264207061727479207472616e73666572732e",
                        "id": 2485,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4589:57:10",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_7c1d923c2611476827950598c8902cd88faba1161e482481515611305cbe9b8b",
                          "typeString": "literal_string \"Credit: Need operator approval for 3rd party transfers.\""
                        },
                        "value": "Credit: Need operator approval for 3rd party transfers."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_7c1d923c2611476827950598c8902cd88faba1161e482481515611305cbe9b8b",
                          "typeString": "literal_string \"Credit: Need operator approval for 3rd party transfers.\""
                        }
                      ],
                      "id": 2471,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2997,
                        2998
                      ],
                      "referencedDeclaration": 2998,
                      "src": "4488:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2486,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4488:168:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2487,
                  "nodeType": "ExpressionStatement",
                  "src": "4488:168:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2501,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2488,
                          "name": "balances",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1145,
                          "src": "4667:8:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                            "typeString": "mapping(uint256 => mapping(address => uint256))"
                          }
                        },
                        "id": 2491,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2489,
                          "name": "_typeID",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2458,
                          "src": "4676:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "4667:17:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 2492,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2490,
                        "name": "_from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2460,
                        "src": "4685:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "4667:24:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 2499,
                          "name": "_value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2462,
                          "src": "4723:6:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2493,
                              "name": "balances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1145,
                              "src": "4694:8:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                "typeString": "mapping(uint256 => mapping(address => uint256))"
                              }
                            },
                            "id": 2495,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2494,
                              "name": "_typeID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2458,
                              "src": "4703:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "4694:17:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 2497,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2496,
                            "name": "_from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2460,
                            "src": "4712:5:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "4694:24:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2498,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sub",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2879,
                        "src": "4694:28:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 2500,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4694:36:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4667:63:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2502,
                  "nodeType": "ExpressionStatement",
                  "src": "4667:63:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2512,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2503,
                        "name": "totalSupplies",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1139,
                        "src": "4740:13:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                          "typeString": "mapping(uint256 => uint256)"
                        }
                      },
                      "id": 2505,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2504,
                        "name": "_typeID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2458,
                        "src": "4754:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "4740:22:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 2510,
                          "name": "_value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2462,
                          "src": "4792:6:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2506,
                            "name": "totalSupplies",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1139,
                            "src": "4765:13:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                              "typeString": "mapping(uint256 => uint256)"
                            }
                          },
                          "id": 2508,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2507,
                            "name": "_typeID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2458,
                            "src": "4779:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "4765:22:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2509,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sub",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2879,
                        "src": "4765:26:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 2511,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4765:34:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4740:59:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2513,
                  "nodeType": "ExpressionStatement",
                  "src": "4740:59:10"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2515,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2994,
                          "src": "4830:3:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 2516,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "4830:10:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2517,
                        "name": "_from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2460,
                        "src": "4842:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2519,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4857:1:10",
                            "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": 2518,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4849:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 2520,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4849:10:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2521,
                        "name": "_typeID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2458,
                        "src": "4861:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2522,
                        "name": "_value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2462,
                        "src": "4870:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2514,
                      "name": "TransferSingle",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2580,
                      "src": "4815:14:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,address,uint256,uint256)"
                      }
                    },
                    "id": 2523,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4815:62:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2524,
                  "nodeType": "EmitStatement",
                  "src": "4810:67:10"
                }
              ]
            },
            "documentation": "Delete `_value` of Credit `_typeID` from the world.\n@param _typeID  Credit type\n@param _value Burn Credit quantities\n@param _from Source address",
            "id": 2526,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "burnFungible",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2463,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2458,
                  "name": "_typeID",
                  "nodeType": "VariableDeclaration",
                  "scope": 2526,
                  "src": "4383:15:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2457,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4383:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2460,
                  "name": "_from",
                  "nodeType": "VariableDeclaration",
                  "scope": 2526,
                  "src": "4400:13:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2459,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4400:7:10",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2462,
                  "name": "_value",
                  "nodeType": "VariableDeclaration",
                  "scope": 2526,
                  "src": "4415:14:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2461,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4415:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4382:48:10"
            },
            "returnParameters": {
              "id": 2464,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4440:0:10"
            },
            "scope": 2558,
            "src": "4361:523:10",
            "stateMutability": "nonpayable",
            "superFunction": 2781,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2556,
              "nodeType": "Block",
              "src": "5231:173:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 2541,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2537,
                            "name": "minters",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1123,
                            "src": "5249:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                              "typeString": "mapping(uint256 => address)"
                            }
                          },
                          "id": 2539,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2538,
                            "name": "_typeID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2528,
                            "src": "5257:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "5249:16:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 2540,
                          "name": "_to",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2530,
                          "src": "5269:3:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "5249:23:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4372656469743a2063616e6e6f74207365742063757272656e74206d696e7465722061732061206e6577206d696e746572",
                        "id": 2542,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5274:51:10",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_d65fde81dbe76cb82546c5d6313f8be0ac85afd8cc3280197f9ae21178e1b584",
                          "typeString": "literal_string \"Credit: cannot set current minter as a new minter\""
                        },
                        "value": "Credit: cannot set current minter as a new minter"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_d65fde81dbe76cb82546c5d6313f8be0ac85afd8cc3280197f9ae21178e1b584",
                          "typeString": "literal_string \"Credit: cannot set current minter as a new minter\""
                        }
                      ],
                      "id": 2536,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2997,
                        2998
                      ],
                      "referencedDeclaration": 2998,
                      "src": "5241:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2543,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5241:85:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2544,
                  "nodeType": "ExpressionStatement",
                  "src": "5241:85:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2549,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2545,
                        "name": "minters",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1123,
                        "src": "5336:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                          "typeString": "mapping(uint256 => address)"
                        }
                      },
                      "id": 2547,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2546,
                        "name": "_typeID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2528,
                        "src": "5344:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "5336:16:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2548,
                      "name": "_to",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2530,
                      "src": "5355:3:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "5336:22:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 2550,
                  "nodeType": "ExpressionStatement",
                  "src": "5336:22:10"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2552,
                        "name": "_typeID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2528,
                        "src": "5384:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2553,
                        "name": "_to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2530,
                        "src": "5393:3:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 2551,
                      "name": "SetMinter",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2723,
                      "src": "5374:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$returns$__$",
                        "typeString": "function (uint256,address)"
                      }
                    },
                    "id": 2554,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5374:23:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2555,
                  "nodeType": "EmitStatement",
                  "src": "5369:28:10"
                }
              ]
            },
            "documentation": "give `_type` creator authorized to `_minter`.\n@param _typeID  Credit _typeID (when credit is fungible) or _type (when credit is non-fungible)\n@param _to New minter, in case of address 0 the authorized will be locked forever",
            "id": 2557,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 2533,
                    "name": "_typeID",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2528,
                    "src": "5222:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 2534,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2532,
                  "name": "minterOnly",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1267,
                  "src": "5211:10:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "5211:19:10"
              }
            ],
            "name": "setMinter",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2531,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2528,
                  "name": "_typeID",
                  "nodeType": "VariableDeclaration",
                  "scope": 2557,
                  "src": "5172:15:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2527,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5172:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2530,
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "scope": 2557,
                  "src": "5189:11:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2529,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5189:7:10",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5171:30:10"
            },
            "returnParameters": {
              "id": 2535,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5231:0:10"
            },
            "scope": 2558,
            "src": "5153:251:10",
            "stateMutability": "nonpayable",
            "superFunction": 2730,
            "visibility": "external"
          }
        ],
        "scope": 2559,
        "src": "72:5334:10"
      }
    ],
    "src": "0:5407:10"
  },
  "legacyAST": {
    "absolutePath": "@Evrynetlabs/credit-contract/contracts/EER2B.sol",
    "exportedSymbols": {
      "EER2B": [
        2558
      ]
    },
    "id": 2559,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 2028,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:10"
      },
      {
        "absolutePath": "@Evrynetlabs/credit-contract/contracts/EER2A.sol",
        "file": "./EER2A.sol",
        "id": 2029,
        "nodeType": "ImportDirective",
        "scope": 2559,
        "sourceUnit": 2027,
        "src": "25:21:10",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@Evrynetlabs/credit-contract/contracts/IEER2B.sol",
        "file": "./IEER2B.sol",
        "id": 2030,
        "nodeType": "ImportDirective",
        "scope": 2559,
        "sourceUnit": 2783,
        "src": "47:22:10",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 2031,
              "name": "IEER2B",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 2782,
              "src": "90:6:10",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IEER2B_$2782",
                "typeString": "contract IEER2B"
              }
            },
            "id": 2032,
            "nodeType": "InheritanceSpecifier",
            "src": "90:6:10"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 2033,
              "name": "EER2A",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 2026,
              "src": "98:5:10",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_EER2A_$2026",
                "typeString": "contract EER2A"
              }
            },
            "id": 2034,
            "nodeType": "InheritanceSpecifier",
            "src": "98:5:10"
          }
        ],
        "contractDependencies": [
          2026,
          2709,
          2782
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 2558,
        "linearizedBaseContracts": [
          2558,
          2026,
          2709,
          2782
        ],
        "name": "EER2B",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 2097,
              "nodeType": "Block",
              "src": "244:554:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2049,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2043,
                      "name": "_typeID",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2041,
                      "src": "302:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2047,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 2045,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": true,
                            "src": "313:7:10",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 2044,
                              "name": "nonce",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1119,
                              "src": "315:5:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "313238",
                            "id": 2046,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "324:3:10",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_128_by_1",
                              "typeString": "int_const 128"
                            },
                            "value": "128"
                          },
                          "src": "313:14:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 2048,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "312:16:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "302:26:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2050,
                  "nodeType": "ExpressionStatement",
                  "src": "302:26:10"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 2051,
                    "name": "_isNF",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2038,
                    "src": "384:5:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2058,
                  "nodeType": "IfStatement",
                  "src": "380:42:10",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 2056,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 2052,
                        "name": "_typeID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2041,
                        "src": "391:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2055,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 2053,
                          "name": "_typeID",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2041,
                          "src": "401:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "|",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 2054,
                          "name": "TYPE_NF_BIT",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1117,
                          "src": "411:11:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "401:21:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "391:31:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2057,
                    "nodeType": "ExpressionStatement",
                    "src": "391:31:10"
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2064,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2059,
                        "name": "minters",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1123,
                        "src": "490:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                          "typeString": "mapping(uint256 => address)"
                        }
                      },
                      "id": 2061,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2060,
                        "name": "_typeID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2041,
                        "src": "498:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "490:16:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2062,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2994,
                        "src": "509:3:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 2063,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "509:10:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "490:29:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 2065,
                  "nodeType": "ExpressionStatement",
                  "src": "490:29:10"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2067,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2994,
                          "src": "628:3:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 2068,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "628:10:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "307830",
                            "id": 2070,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "648:3:10",
                            "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": 2069,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "640:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 2071,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "640:12:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "307830",
                            "id": 2073,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "662:3:10",
                            "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": 2072,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "654:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 2074,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "654:12:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2075,
                        "name": "_typeID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2041,
                        "src": "668:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 2076,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "677:1:10",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "id": 2066,
                      "name": "TransferSingle",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2580,
                      "src": "613:14:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,address,uint256,uint256)"
                      }
                    },
                    "id": 2077,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "613:66:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2078,
                  "nodeType": "EmitStatement",
                  "src": "608:71:10"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2084,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2080,
                            "name": "_metaLink",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2036,
                            "src": "700:9:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_calldata_ptr",
                              "typeString": "string calldata"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_string_calldata_ptr",
                              "typeString": "string calldata"
                            }
                          ],
                          "id": 2079,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "694:5:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                            "typeString": "type(bytes storage pointer)"
                          },
                          "typeName": "bytes"
                        },
                        "id": 2081,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "694:16:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      },
                      "id": 2082,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "694:23:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 2083,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "720:1:10",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "694:27:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2091,
                  "nodeType": "IfStatement",
                  "src": "690:63:10",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 2089,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2085,
                          "name": "metalinks",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1131,
                          "src": "723:9:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$",
                            "typeString": "mapping(uint256 => string storage ref)"
                          }
                        },
                        "id": 2087,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2086,
                          "name": "_typeID",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2041,
                          "src": "733:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": true,
                        "nodeType": "IndexAccess",
                        "src": "723:18:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage",
                          "typeString": "string storage ref"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "id": 2088,
                        "name": "_metaLink",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2036,
                        "src": "744:9:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      },
                      "src": "723:30:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "id": 2090,
                    "nodeType": "ExpressionStatement",
                    "src": "723:30:10"
                  }
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2093,
                        "name": "_metaLink",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2036,
                        "src": "772:9:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2094,
                        "name": "_typeID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2041,
                        "src": "783:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2092,
                      "name": "URI",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2717,
                      "src": "768:3:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_string_memory_ptr_$_t_uint256_$returns$__$",
                        "typeString": "function (string memory,uint256)"
                      }
                    },
                    "id": 2095,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "768:23:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2096,
                  "nodeType": "EmitStatement",
                  "src": "763:28:10"
                }
              ]
            },
            "documentation": null,
            "id": 2098,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "create",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2039,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2036,
                  "name": "_metaLink",
                  "nodeType": "VariableDeclaration",
                  "scope": 2098,
                  "src": "170:25:10",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2035,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "170:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2038,
                  "name": "_isNF",
                  "nodeType": "VariableDeclaration",
                  "scope": 2098,
                  "src": "197:10:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2037,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "197:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "169:39:10"
            },
            "returnParameters": {
              "id": 2042,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2041,
                  "name": "_typeID",
                  "nodeType": "VariableDeclaration",
                  "scope": 2098,
                  "src": "227:15:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2040,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "227:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "226:17:10"
            },
            "scope": 2558,
            "src": "154:644:10",
            "stateMutability": "nonpayable",
            "superFunction": 2746,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2109,
              "nodeType": "Block",
              "src": "1055:46:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 2105,
                      "name": "totalSupplies",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1139,
                      "src": "1072:13:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                        "typeString": "mapping(uint256 => uint256)"
                      }
                    },
                    "id": 2107,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 2106,
                      "name": "_typeID",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2100,
                      "src": "1086:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "1072:22:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 2104,
                  "id": 2108,
                  "nodeType": "Return",
                  "src": "1065:29:10"
                }
              ]
            },
            "documentation": "@notice Get the total supply of a Credit.\n@param _typeID   ID of the Credit type\n@return        The total supply of the Token type requested",
            "id": 2110,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "totalSupply",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2101,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2100,
                  "name": "_typeID",
                  "nodeType": "VariableDeclaration",
                  "scope": 2110,
                  "src": "1006:15:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2099,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1006:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1005:17:10"
            },
            "returnParameters": {
              "id": 2104,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2103,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2110,
                  "src": "1046:7:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2102,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1046:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1045:9:10"
            },
            "scope": 2558,
            "src": "985:116:10",
            "stateMutability": "view",
            "superFunction": 2737,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2245,
              "nodeType": "Block",
              "src": "1223:924:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2123,
                            "name": "_typeID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2112,
                            "src": "1388:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 2122,
                          "name": "isNonFungible",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1165,
                          "src": "1374:13:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (uint256) pure returns (bool)"
                          }
                        },
                        "id": 2124,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1374:22:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2121,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2997,
                        2998
                      ],
                      "referencedDeclaration": 2997,
                      "src": "1366:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 2125,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1366:31:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2126,
                  "nodeType": "ExpressionStatement",
                  "src": "1366:31:10"
                },
                {
                  "assignments": [
                    2128
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2128,
                      "name": "index",
                      "nodeType": "VariableDeclaration",
                      "scope": 2245,
                      "src": "1438:13:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2127,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1438:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2134,
                  "initialValue": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2133,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2129,
                        "name": "maxIndex",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1135,
                        "src": "1454:8:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                          "typeString": "mapping(uint256 => uint256)"
                        }
                      },
                      "id": 2131,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2130,
                        "name": "_typeID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2112,
                        "src": "1463:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "1454:17:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "+",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "31",
                      "id": 2132,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1474:1:10",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "1454:21:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1438:37:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2145,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2135,
                        "name": "maxIndex",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1135,
                        "src": "1485:8:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                          "typeString": "mapping(uint256 => uint256)"
                        }
                      },
                      "id": 2137,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2136,
                        "name": "_typeID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2112,
                        "src": "1494:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "1485:17:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2141,
                            "name": "maxIndex",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1135,
                            "src": "1521:8:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                              "typeString": "mapping(uint256 => uint256)"
                            }
                          },
                          "id": 2143,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2142,
                            "name": "_typeID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2112,
                            "src": "1530:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1521:17:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2138,
                            "name": "_tos",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2115,
                            "src": "1505:4:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            }
                          },
                          "id": 2139,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "1505:11:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2140,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2854,
                        "src": "1505:15:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 2144,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1505:34:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1485:54:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2146,
                  "nodeType": "ExpressionStatement",
                  "src": "1485:54:10"
                },
                {
                  "body": {
                    "id": 2243,
                    "nodeType": "Block",
                    "src": "1592:549:10",
                    "statements": [
                      {
                        "assignments": [
                          2159
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2159,
                            "name": "to",
                            "nodeType": "VariableDeclaration",
                            "scope": 2243,
                            "src": "1606:10:10",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 2158,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "1606:7:10",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2163,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2160,
                            "name": "_tos",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2115,
                            "src": "1619:4:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            }
                          },
                          "id": 2162,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2161,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2148,
                            "src": "1624:1:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1619:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1606:20:10"
                      },
                      {
                        "assignments": [
                          2165
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2165,
                            "name": "typeID",
                            "nodeType": "VariableDeclaration",
                            "scope": 2243,
                            "src": "1640:14:10",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2164,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1640:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2172,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2171,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 2166,
                            "name": "_typeID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2112,
                            "src": "1657:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "|",
                          "rightExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2169,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 2167,
                                  "name": "index",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2128,
                                  "src": "1668:5:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 2168,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2148,
                                  "src": "1676:1:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1668:9:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 2170,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "1667:11:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1657:21:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1640:38:10"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2177,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2173,
                              "name": "nfOwners",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1127,
                              "src": "1693:8:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                "typeString": "mapping(uint256 => address)"
                              }
                            },
                            "id": 2175,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2174,
                              "name": "typeID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2165,
                              "src": "1702:6:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1693:16:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 2176,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2159,
                            "src": "1712:2:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1693:21:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 2178,
                        "nodeType": "ExpressionStatement",
                        "src": "1693:21:10"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2192,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2179,
                                "name": "balances",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1145,
                                "src": "1728:8:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                  "typeString": "mapping(uint256 => mapping(address => uint256))"
                                }
                              },
                              "id": 2182,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 2180,
                                "name": "_typeID",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2112,
                                "src": "1737:7:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "1728:17:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 2183,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2181,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2159,
                              "src": "1746:2:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1728:21:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 2190,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1778:1:10",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 2184,
                                    "name": "balances",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1145,
                                    "src": "1752:8:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                      "typeString": "mapping(uint256 => mapping(address => uint256))"
                                    }
                                  },
                                  "id": 2186,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 2185,
                                    "name": "_typeID",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2112,
                                    "src": "1761:7:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "1752:17:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 2188,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 2187,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2159,
                                  "src": "1770:2:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "1752:21:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2189,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2854,
                              "src": "1752:25:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 2191,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1752:28:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1728:52:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2193,
                        "nodeType": "ExpressionStatement",
                        "src": "1728:52:10"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2203,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2194,
                              "name": "totalSupplies",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1139,
                              "src": "1794:13:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 2196,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2195,
                              "name": "_typeID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2112,
                              "src": "1808:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1794:22:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 2201,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1846:1:10",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 2197,
                                  "name": "totalSupplies",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1139,
                                  "src": "1819:13:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                    "typeString": "mapping(uint256 => uint256)"
                                  }
                                },
                                "id": 2199,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 2198,
                                  "name": "_typeID",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2112,
                                  "src": "1833:7:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "1819:22:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2200,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2854,
                              "src": "1819:26:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 2202,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1819:29:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1794:54:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2204,
                        "nodeType": "ExpressionStatement",
                        "src": "1794:54:10"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2214,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2205,
                              "name": "totalSupplies",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1139,
                              "src": "1862:13:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 2207,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2206,
                              "name": "typeID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2165,
                              "src": "1876:6:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1862:21:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 2212,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1912:1:10",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 2208,
                                  "name": "totalSupplies",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1139,
                                  "src": "1886:13:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                    "typeString": "mapping(uint256 => uint256)"
                                  }
                                },
                                "id": 2210,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 2209,
                                  "name": "typeID",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2165,
                                  "src": "1900:6:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "1886:21:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2211,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2854,
                              "src": "1886:25:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 2213,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1886:28:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1862:52:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2215,
                        "nodeType": "ExpressionStatement",
                        "src": "1862:52:10"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2217,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2994,
                                "src": "1949:3:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 2218,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1949:10:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "307830",
                                  "id": 2220,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1969:3:10",
                                  "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": 2219,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1961:7:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 2221,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1961:12:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2222,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2159,
                              "src": "1975:2:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2223,
                              "name": "typeID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2165,
                              "src": "1979:6:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 2224,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1987:1:10",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              }
                            ],
                            "id": 2216,
                            "name": "TransferSingle",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2580,
                            "src": "1934:14:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,address,uint256,uint256)"
                            }
                          },
                          "id": 2225,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1934:55:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2226,
                        "nodeType": "EmitStatement",
                        "src": "1929:60:10"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2227,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2159,
                              "src": "2008:2:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 2228,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isContract",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2978,
                            "src": "2008:13:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$",
                              "typeString": "function (address) view returns (bool)"
                            }
                          },
                          "id": 2229,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2008:15:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 2242,
                        "nodeType": "IfStatement",
                        "src": "2004:127:10",
                        "trueBody": {
                          "id": 2241,
                          "nodeType": "Block",
                          "src": "2025:106:10",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2231,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2994,
                                      "src": "2074:3:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 2232,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "2074:10:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2233,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2994,
                                      "src": "2086:3:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 2234,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "2086:10:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 2235,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2159,
                                    "src": "2098:2:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 2236,
                                    "name": "typeID",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2165,
                                    "src": "2102:6:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 2237,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2110:1:10",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "",
                                    "id": 2238,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2113:2:10",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                      "typeString": "literal_string \"\""
                                    },
                                    "value": ""
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                      "typeString": "literal_string \"\""
                                    }
                                  ],
                                  "id": 2230,
                                  "name": "_doSafeTransferAcceptanceCheck",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1991,
                                  "src": "2043:30:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                                    "typeString": "function (address,address,address,uint256,uint256,bytes memory)"
                                  }
                                },
                                "id": 2239,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2043:73:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2240,
                              "nodeType": "ExpressionStatement",
                              "src": "2043:73:10"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2154,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2151,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2148,
                      "src": "1570:1:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2152,
                        "name": "_tos",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2115,
                        "src": "1574:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[] calldata"
                        }
                      },
                      "id": 2153,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "1574:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1570:15:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2244,
                  "initializationExpression": {
                    "assignments": [
                      2148
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 2148,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 2244,
                        "src": "1555:9:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2147,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1555:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 2150,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 2149,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1567:1:10",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "1555:13:10"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 2156,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": true,
                      "src": "1587:3:10",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 2155,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2148,
                        "src": "1589:1:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2157,
                    "nodeType": "ExpressionStatement",
                    "src": "1587:3:10"
                  },
                  "nodeType": "ForStatement",
                  "src": "1550:591:10"
                }
              ]
            },
            "documentation": null,
            "id": 2246,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 2118,
                    "name": "_typeID",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2112,
                    "src": "1210:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 2119,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2117,
                  "name": "minterOnly",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1267,
                  "src": "1199:10:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1199:19:10"
              }
            ],
            "name": "mintNonFungible",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2116,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2112,
                  "name": "_typeID",
                  "nodeType": "VariableDeclaration",
                  "scope": 2246,
                  "src": "1132:15:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2111,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1132:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2115,
                  "name": "_tos",
                  "nodeType": "VariableDeclaration",
                  "scope": 2246,
                  "src": "1149:23:10",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2113,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1149:7:10",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 2114,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "1149:9:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1131:42:10"
            },
            "returnParameters": {
              "id": 2120,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1223:0:10"
            },
            "scope": 2558,
            "src": "1107:1040:10",
            "stateMutability": "nonpayable",
            "superFunction": 2754,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2353,
              "nodeType": "Block",
              "src": "2294:842:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2262,
                            "name": "_typeID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2248,
                            "src": "2323:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 2261,
                          "name": "isFungible",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1179,
                          "src": "2312:10:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (uint256) pure returns (bool)"
                          }
                        },
                        "id": 2263,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2312:19:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2260,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2997,
                        2998
                      ],
                      "referencedDeclaration": 2997,
                      "src": "2304:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 2264,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2304:28:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2265,
                  "nodeType": "ExpressionStatement",
                  "src": "2304:28:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2271,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2267,
                            "name": "_tos",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2251,
                            "src": "2350:4:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            }
                          },
                          "id": 2268,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "2350:11:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2269,
                            "name": "_values",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2254,
                            "src": "2365:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                              "typeString": "uint256[] calldata"
                            }
                          },
                          "id": 2270,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "2365:14:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2350:29:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4372656469743a204172726179206c656e677468206d757374206d61746368",
                        "id": 2272,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2381:33:10",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_7211bd421b3ab8f6818cb69a3c6ffd46dcfda05b4cd4c25740f75e1d0c9f3dce",
                          "typeString": "literal_string \"Credit: Array length must match\""
                        },
                        "value": "Credit: Array length must match"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_7211bd421b3ab8f6818cb69a3c6ffd46dcfda05b4cd4c25740f75e1d0c9f3dce",
                          "typeString": "literal_string \"Credit: Array length must match\""
                        }
                      ],
                      "id": 2266,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2997,
                        2998
                      ],
                      "referencedDeclaration": 2998,
                      "src": "2342:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2273,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2342:73:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2274,
                  "nodeType": "ExpressionStatement",
                  "src": "2342:73:10"
                },
                {
                  "body": {
                    "id": 2351,
                    "nodeType": "Block",
                    "src": "2468:662:10",
                    "statements": [
                      {
                        "assignments": [
                          2287
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2287,
                            "name": "to",
                            "nodeType": "VariableDeclaration",
                            "scope": 2351,
                            "src": "2482:10:10",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 2286,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2482:7:10",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2291,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2288,
                            "name": "_tos",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2251,
                            "src": "2495:4:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            }
                          },
                          "id": 2290,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2289,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2276,
                            "src": "2500:1:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "2495:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2482:20:10"
                      },
                      {
                        "assignments": [
                          2293
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2293,
                            "name": "value",
                            "nodeType": "VariableDeclaration",
                            "scope": 2351,
                            "src": "2516:13:10",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2292,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2516:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2297,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2294,
                            "name": "_values",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2254,
                            "src": "2532:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                              "typeString": "uint256[] calldata"
                            }
                          },
                          "id": 2296,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2295,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2276,
                            "src": "2540:1:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "2532:10:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2516:26:10"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2311,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2298,
                                "name": "balances",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1145,
                                "src": "2602:8:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                  "typeString": "mapping(uint256 => mapping(address => uint256))"
                                }
                              },
                              "id": 2301,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 2299,
                                "name": "_typeID",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2248,
                                "src": "2611:7:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2602:17:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 2302,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2300,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2287,
                              "src": "2620:2:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "2602:21:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 2305,
                                    "name": "balances",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1145,
                                    "src": "2636:8:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                      "typeString": "mapping(uint256 => mapping(address => uint256))"
                                    }
                                  },
                                  "id": 2307,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 2306,
                                    "name": "_typeID",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2248,
                                    "src": "2645:7:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "2636:17:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 2309,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 2308,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2287,
                                  "src": "2654:2:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "2636:21:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 2303,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2293,
                                "src": "2626:5:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2304,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2854,
                              "src": "2626:9:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 2310,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2626:32:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2602:56:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2312,
                        "nodeType": "ExpressionStatement",
                        "src": "2602:56:10"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2322,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2313,
                              "name": "totalSupplies",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1139,
                              "src": "2672:13:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 2315,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2314,
                              "name": "_typeID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2248,
                              "src": "2686:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "2672:22:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2320,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2293,
                                "src": "2724:5:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 2316,
                                  "name": "totalSupplies",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1139,
                                  "src": "2697:13:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                    "typeString": "mapping(uint256 => uint256)"
                                  }
                                },
                                "id": 2318,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 2317,
                                  "name": "_typeID",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2248,
                                  "src": "2711:7:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "2697:22:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2319,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2854,
                              "src": "2697:26:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 2321,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2697:33:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2672:58:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2323,
                        "nodeType": "ExpressionStatement",
                        "src": "2672:58:10"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2325,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2994,
                                "src": "2928:3:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 2326,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2928:10:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "307830",
                                  "id": 2328,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2948:3:10",
                                  "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": 2327,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2940:7:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 2329,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2940:12:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2330,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2287,
                              "src": "2954:2:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2331,
                              "name": "_typeID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2248,
                              "src": "2958:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2332,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2293,
                              "src": "2967:5:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2324,
                            "name": "TransferSingle",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2580,
                            "src": "2913:14:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,address,uint256,uint256)"
                            }
                          },
                          "id": 2333,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2913:60:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2334,
                        "nodeType": "EmitStatement",
                        "src": "2908:65:10"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2335,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2287,
                              "src": "2992:2:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 2336,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isContract",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2978,
                            "src": "2992:13:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$",
                              "typeString": "function (address) view returns (bool)"
                            }
                          },
                          "id": 2337,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2992:15:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 2350,
                        "nodeType": "IfStatement",
                        "src": "2988:132:10",
                        "trueBody": {
                          "id": 2349,
                          "nodeType": "Block",
                          "src": "3009:111:10",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2339,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2994,
                                      "src": "3058:3:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 2340,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "3058:10:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2341,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2994,
                                      "src": "3070:3:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 2342,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "3070:10:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 2343,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2287,
                                    "src": "3082:2:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 2344,
                                    "name": "_typeID",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2248,
                                    "src": "3086:7:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 2345,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2293,
                                    "src": "3095:5:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "",
                                    "id": 2346,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3102:2:10",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                      "typeString": "literal_string \"\""
                                    },
                                    "value": ""
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                      "typeString": "literal_string \"\""
                                    }
                                  ],
                                  "id": 2338,
                                  "name": "_doSafeTransferAcceptanceCheck",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1991,
                                  "src": "3027:30:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                                    "typeString": "function (address,address,address,uint256,uint256,bytes memory)"
                                  }
                                },
                                "id": 2347,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3027:78:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2348,
                              "nodeType": "ExpressionStatement",
                              "src": "3027:78:10"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2282,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2279,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2276,
                      "src": "2446:1:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2280,
                        "name": "_tos",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2251,
                        "src": "2450:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[] calldata"
                        }
                      },
                      "id": 2281,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "2450:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2446:15:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2352,
                  "initializationExpression": {
                    "assignments": [
                      2276
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 2276,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 2352,
                        "src": "2431:9:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2275,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2431:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 2278,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 2277,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2443:1:10",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "2431:13:10"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 2284,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": true,
                      "src": "2463:3:10",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 2283,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2276,
                        "src": "2465:1:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2285,
                    "nodeType": "ExpressionStatement",
                    "src": "2463:3:10"
                  },
                  "nodeType": "ForStatement",
                  "src": "2426:704:10"
                }
              ]
            },
            "documentation": null,
            "id": 2354,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 2257,
                    "name": "_typeID",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2248,
                    "src": "2281:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 2258,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2256,
                  "name": "minterOnly",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1267,
                  "src": "2270:10:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2270:19:10"
              }
            ],
            "name": "mintFungible",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2255,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2248,
                  "name": "_typeID",
                  "nodeType": "VariableDeclaration",
                  "scope": 2354,
                  "src": "2175:15:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2247,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2175:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2251,
                  "name": "_tos",
                  "nodeType": "VariableDeclaration",
                  "scope": 2354,
                  "src": "2192:23:10",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2249,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "2192:7:10",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 2250,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "2192:9:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2254,
                  "name": "_values",
                  "nodeType": "VariableDeclaration",
                  "scope": 2354,
                  "src": "2217:26:10",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2252,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "2217:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2253,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "2217:9:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2174:70:10"
            },
            "returnParameters": {
              "id": 2259,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2294:0:10"
            },
            "scope": 2558,
            "src": "2153:983:10",
            "stateMutability": "nonpayable",
            "superFunction": 2765,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2455,
              "nodeType": "Block",
              "src": "3376:787:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2363,
                            "name": "_itemID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2356,
                            "src": "3408:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 2362,
                          "name": "isNonFungible",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1165,
                          "src": "3394:13:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (uint256) pure returns (bool)"
                          }
                        },
                        "id": 2364,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3394:22:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4372656469743a206173736574206265696e67206275726e6564206973206e6f742061206e6f6e2d66756e6769626c65206173736574",
                        "id": 2365,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3418:56:10",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_43b57116e52aa8e2df41a1ecad06187c042adda1bfc2b60326ca81c8acb0439c",
                          "typeString": "literal_string \"Credit: asset being burned is not a non-fungible asset\""
                        },
                        "value": "Credit: asset being burned is not a non-fungible asset"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_43b57116e52aa8e2df41a1ecad06187c042adda1bfc2b60326ca81c8acb0439c",
                          "typeString": "literal_string \"Credit: asset being burned is not a non-fungible asset\""
                        }
                      ],
                      "id": 2361,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2997,
                        2998
                      ],
                      "referencedDeclaration": 2998,
                      "src": "3386:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2366,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3386:89:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2367,
                  "nodeType": "ExpressionStatement",
                  "src": "3386:89:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2370,
                            "name": "_itemID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2356,
                            "src": "3524:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 2369,
                          "name": "isNonFungibleItem",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1240,
                          "src": "3506:17:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (uint256) pure returns (bool)"
                          }
                        },
                        "id": 2371,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3506:26:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4372656469743a206173736574206265696e67206275726e6564206973206e6f742061206e6f6e2d66756e6769626c65206974656d206964",
                        "id": 2372,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3546:58:10",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c87e27976dd97987d447f922cfc0454f6e1ca41292c3f2ddb2c504709a361e1e",
                          "typeString": "literal_string \"Credit: asset being burned is not a non-fungible item id\""
                        },
                        "value": "Credit: asset being burned is not a non-fungible item id"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c87e27976dd97987d447f922cfc0454f6e1ca41292c3f2ddb2c504709a361e1e",
                          "typeString": "literal_string \"Credit: asset being burned is not a non-fungible item id\""
                        }
                      ],
                      "id": 2368,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2997,
                        2998
                      ],
                      "referencedDeclaration": 2998,
                      "src": "3485:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2373,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3485:129:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2374,
                  "nodeType": "ExpressionStatement",
                  "src": "3485:129:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 2388,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 2379,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 2376,
                            "name": "_from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2358,
                            "src": "3645:5:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2377,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2994,
                              "src": "3654:3:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 2378,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "3654:10:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "3645:19:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 2387,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2380,
                                "name": "operatorApproval",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1151,
                                "src": "3668:16:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                                  "typeString": "mapping(address => mapping(address => bool))"
                                }
                              },
                              "id": 2382,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 2381,
                                "name": "_from",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2358,
                                "src": "3685:5:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "3668:23:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 2385,
                            "indexExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2383,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2994,
                                "src": "3692:3:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 2384,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "3692:10:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "3668:35:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 2386,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3707:4:10",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "3668:43:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "3645:66:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4372656469743a204e656564206f70657261746f7220617070726f76616c20666f7220337264207061727479207472616e73666572732e",
                        "id": 2389,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3725:57:10",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_7c1d923c2611476827950598c8902cd88faba1161e482481515611305cbe9b8b",
                          "typeString": "literal_string \"Credit: Need operator approval for 3rd party transfers.\""
                        },
                        "value": "Credit: Need operator approval for 3rd party transfers."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_7c1d923c2611476827950598c8902cd88faba1161e482481515611305cbe9b8b",
                          "typeString": "literal_string \"Credit: Need operator approval for 3rd party transfers.\""
                        }
                      ],
                      "id": 2375,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2997,
                        2998
                      ],
                      "referencedDeclaration": 2998,
                      "src": "3624:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2390,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3624:168:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2391,
                  "nodeType": "ExpressionStatement",
                  "src": "3624:168:10"
                },
                {
                  "assignments": [
                    2393
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2393,
                      "name": "_type",
                      "nodeType": "VariableDeclaration",
                      "scope": 2455,
                      "src": "3803:13:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2392,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3803:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2398,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2396,
                        "name": "_itemID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2356,
                        "src": "3847:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2394,
                        "name": "this",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3027,
                        "src": "3819:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_EER2B_$2558",
                          "typeString": "contract EER2B"
                        }
                      },
                      "id": 2395,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getNonFungibleBaseType",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1203,
                      "src": "3819:27:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_pure$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (uint256) pure external returns (uint256)"
                      }
                    },
                    "id": 2397,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3819:36:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3803:52:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2405,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2399,
                        "name": "nfOwners",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1127,
                        "src": "3865:8:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                          "typeString": "mapping(uint256 => address)"
                        }
                      },
                      "id": 2401,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2400,
                        "name": "_itemID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2356,
                        "src": "3874:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "3865:17:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 2403,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3893:1:10",
                          "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": 2402,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "3885:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 2404,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3885:10:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "3865:30:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 2406,
                  "nodeType": "ExpressionStatement",
                  "src": "3865:30:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2420,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2407,
                          "name": "balances",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1145,
                          "src": "3905:8:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                            "typeString": "mapping(uint256 => mapping(address => uint256))"
                          }
                        },
                        "id": 2410,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2408,
                          "name": "_type",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2393,
                          "src": "3914:5:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3905:15:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 2411,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2409,
                        "name": "_from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2358,
                        "src": "3921:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "3905:22:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 2418,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3957:1:10",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2412,
                              "name": "balances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1145,
                              "src": "3930:8:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                "typeString": "mapping(uint256 => mapping(address => uint256))"
                              }
                            },
                            "id": 2414,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2413,
                              "name": "_type",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2393,
                              "src": "3939:5:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "3930:15:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 2416,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2415,
                            "name": "_from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2358,
                            "src": "3946:5:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "3930:22:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2417,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sub",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2879,
                        "src": "3930:26:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 2419,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3930:29:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3905:54:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2421,
                  "nodeType": "ExpressionStatement",
                  "src": "3905:54:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2431,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2422,
                        "name": "totalSupplies",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1139,
                        "src": "3969:13:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                          "typeString": "mapping(uint256 => uint256)"
                        }
                      },
                      "id": 2424,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2423,
                        "name": "_type",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2393,
                        "src": "3983:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "3969:20:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 2429,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4017:1:10",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2425,
                            "name": "totalSupplies",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1139,
                            "src": "3992:13:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                              "typeString": "mapping(uint256 => uint256)"
                            }
                          },
                          "id": 2427,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2426,
                            "name": "_type",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2393,
                            "src": "4006:5:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "3992:20:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2428,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sub",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2879,
                        "src": "3992:24:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 2430,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3992:27:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3969:50:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2432,
                  "nodeType": "ExpressionStatement",
                  "src": "3969:50:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2442,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2433,
                        "name": "totalSupplies",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1139,
                        "src": "4029:13:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                          "typeString": "mapping(uint256 => uint256)"
                        }
                      },
                      "id": 2435,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2434,
                        "name": "_itemID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2356,
                        "src": "4043:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "4029:22:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 2440,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4081:1:10",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2436,
                            "name": "totalSupplies",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1139,
                            "src": "4054:13:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                              "typeString": "mapping(uint256 => uint256)"
                            }
                          },
                          "id": 2438,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2437,
                            "name": "_itemID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2356,
                            "src": "4068:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "4054:22:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2439,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sub",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2879,
                        "src": "4054:26:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 2441,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4054:29:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4029:54:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2443,
                  "nodeType": "ExpressionStatement",
                  "src": "4029:54:10"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2445,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2994,
                          "src": "4114:3:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 2446,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "4114:10:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2447,
                        "name": "_from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2358,
                        "src": "4126:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2449,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4141:1:10",
                            "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": 2448,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4133:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 2450,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4133:10:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2451,
                        "name": "_itemID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2356,
                        "src": "4145:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 2452,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4154:1:10",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        }
                      ],
                      "id": 2444,
                      "name": "TransferSingle",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2580,
                      "src": "4099:14:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,address,uint256,uint256)"
                      }
                    },
                    "id": 2453,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4099:57:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2454,
                  "nodeType": "EmitStatement",
                  "src": "4094:62:10"
                }
              ]
            },
            "documentation": "Delete `_value` of Credit `_itemID` from the world.\n@param _itemID  Item of non-fungible credit type\n@param _from Source address",
            "id": 2456,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "burnNonFungible",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2359,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2356,
                  "name": "_itemID",
                  "nodeType": "VariableDeclaration",
                  "scope": 2456,
                  "src": "3335:15:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2355,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3335:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2358,
                  "name": "_from",
                  "nodeType": "VariableDeclaration",
                  "scope": 2456,
                  "src": "3352:13:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2357,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3352:7:10",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3334:32:10"
            },
            "returnParameters": {
              "id": 2360,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3376:0:10"
            },
            "scope": 2558,
            "src": "3310:853:10",
            "stateMutability": "nonpayable",
            "superFunction": 2772,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2525,
              "nodeType": "Block",
              "src": "4440:444:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2467,
                            "name": "_typeID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2458,
                            "src": "4469:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 2466,
                          "name": "isFungible",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1179,
                          "src": "4458:10:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (uint256) pure returns (bool)"
                          }
                        },
                        "id": 2468,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4458:19:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2465,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2997,
                        2998
                      ],
                      "referencedDeclaration": 2997,
                      "src": "4450:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 2469,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4450:28:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2470,
                  "nodeType": "ExpressionStatement",
                  "src": "4450:28:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 2484,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 2475,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 2472,
                            "name": "_from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2460,
                            "src": "4509:5:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2473,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2994,
                              "src": "4518:3:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 2474,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "4518:10:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "4509:19:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 2483,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2476,
                                "name": "operatorApproval",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1151,
                                "src": "4532:16:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                                  "typeString": "mapping(address => mapping(address => bool))"
                                }
                              },
                              "id": 2478,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 2477,
                                "name": "_from",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2460,
                                "src": "4549:5:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4532:23:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 2481,
                            "indexExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2479,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2994,
                                "src": "4556:3:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 2480,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "4556:10:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "4532:35:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 2482,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4571:4:10",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "4532:43:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "4509:66:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4372656469743a204e656564206f70657261746f7220617070726f76616c20666f7220337264207061727479207472616e73666572732e",
                        "id": 2485,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4589:57:10",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_7c1d923c2611476827950598c8902cd88faba1161e482481515611305cbe9b8b",
                          "typeString": "literal_string \"Credit: Need operator approval for 3rd party transfers.\""
                        },
                        "value": "Credit: Need operator approval for 3rd party transfers."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_7c1d923c2611476827950598c8902cd88faba1161e482481515611305cbe9b8b",
                          "typeString": "literal_string \"Credit: Need operator approval for 3rd party transfers.\""
                        }
                      ],
                      "id": 2471,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2997,
                        2998
                      ],
                      "referencedDeclaration": 2998,
                      "src": "4488:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2486,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4488:168:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2487,
                  "nodeType": "ExpressionStatement",
                  "src": "4488:168:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2501,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2488,
                          "name": "balances",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1145,
                          "src": "4667:8:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                            "typeString": "mapping(uint256 => mapping(address => uint256))"
                          }
                        },
                        "id": 2491,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2489,
                          "name": "_typeID",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2458,
                          "src": "4676:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "4667:17:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 2492,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2490,
                        "name": "_from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2460,
                        "src": "4685:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "4667:24:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 2499,
                          "name": "_value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2462,
                          "src": "4723:6:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2493,
                              "name": "balances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1145,
                              "src": "4694:8:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                "typeString": "mapping(uint256 => mapping(address => uint256))"
                              }
                            },
                            "id": 2495,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2494,
                              "name": "_typeID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2458,
                              "src": "4703:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "4694:17:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 2497,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2496,
                            "name": "_from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2460,
                            "src": "4712:5:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "4694:24:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2498,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sub",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2879,
                        "src": "4694:28:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 2500,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4694:36:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4667:63:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2502,
                  "nodeType": "ExpressionStatement",
                  "src": "4667:63:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2512,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2503,
                        "name": "totalSupplies",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1139,
                        "src": "4740:13:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                          "typeString": "mapping(uint256 => uint256)"
                        }
                      },
                      "id": 2505,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2504,
                        "name": "_typeID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2458,
                        "src": "4754:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "4740:22:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 2510,
                          "name": "_value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2462,
                          "src": "4792:6:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2506,
                            "name": "totalSupplies",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1139,
                            "src": "4765:13:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                              "typeString": "mapping(uint256 => uint256)"
                            }
                          },
                          "id": 2508,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2507,
                            "name": "_typeID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2458,
                            "src": "4779:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "4765:22:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2509,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sub",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2879,
                        "src": "4765:26:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 2511,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4765:34:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4740:59:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2513,
                  "nodeType": "ExpressionStatement",
                  "src": "4740:59:10"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2515,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2994,
                          "src": "4830:3:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 2516,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "4830:10:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2517,
                        "name": "_from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2460,
                        "src": "4842:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2519,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4857:1:10",
                            "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": 2518,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4849:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 2520,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4849:10:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2521,
                        "name": "_typeID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2458,
                        "src": "4861:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2522,
                        "name": "_value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2462,
                        "src": "4870:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2514,
                      "name": "TransferSingle",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2580,
                      "src": "4815:14:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,address,uint256,uint256)"
                      }
                    },
                    "id": 2523,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4815:62:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2524,
                  "nodeType": "EmitStatement",
                  "src": "4810:67:10"
                }
              ]
            },
            "documentation": "Delete `_value` of Credit `_typeID` from the world.\n@param _typeID  Credit type\n@param _value Burn Credit quantities\n@param _from Source address",
            "id": 2526,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "burnFungible",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2463,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2458,
                  "name": "_typeID",
                  "nodeType": "VariableDeclaration",
                  "scope": 2526,
                  "src": "4383:15:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2457,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4383:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2460,
                  "name": "_from",
                  "nodeType": "VariableDeclaration",
                  "scope": 2526,
                  "src": "4400:13:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2459,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4400:7:10",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2462,
                  "name": "_value",
                  "nodeType": "VariableDeclaration",
                  "scope": 2526,
                  "src": "4415:14:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2461,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4415:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4382:48:10"
            },
            "returnParameters": {
              "id": 2464,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4440:0:10"
            },
            "scope": 2558,
            "src": "4361:523:10",
            "stateMutability": "nonpayable",
            "superFunction": 2781,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2556,
              "nodeType": "Block",
              "src": "5231:173:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 2541,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2537,
                            "name": "minters",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1123,
                            "src": "5249:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                              "typeString": "mapping(uint256 => address)"
                            }
                          },
                          "id": 2539,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2538,
                            "name": "_typeID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2528,
                            "src": "5257:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "5249:16:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 2540,
                          "name": "_to",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2530,
                          "src": "5269:3:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "5249:23:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4372656469743a2063616e6e6f74207365742063757272656e74206d696e7465722061732061206e6577206d696e746572",
                        "id": 2542,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5274:51:10",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_d65fde81dbe76cb82546c5d6313f8be0ac85afd8cc3280197f9ae21178e1b584",
                          "typeString": "literal_string \"Credit: cannot set current minter as a new minter\""
                        },
                        "value": "Credit: cannot set current minter as a new minter"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_d65fde81dbe76cb82546c5d6313f8be0ac85afd8cc3280197f9ae21178e1b584",
                          "typeString": "literal_string \"Credit: cannot set current minter as a new minter\""
                        }
                      ],
                      "id": 2536,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2997,
                        2998
                      ],
                      "referencedDeclaration": 2998,
                      "src": "5241:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2543,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5241:85:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2544,
                  "nodeType": "ExpressionStatement",
                  "src": "5241:85:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2549,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2545,
                        "name": "minters",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1123,
                        "src": "5336:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                          "typeString": "mapping(uint256 => address)"
                        }
                      },
                      "id": 2547,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2546,
                        "name": "_typeID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2528,
                        "src": "5344:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "5336:16:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2548,
                      "name": "_to",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2530,
                      "src": "5355:3:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "5336:22:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 2550,
                  "nodeType": "ExpressionStatement",
                  "src": "5336:22:10"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2552,
                        "name": "_typeID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2528,
                        "src": "5384:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2553,
                        "name": "_to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2530,
                        "src": "5393:3:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 2551,
                      "name": "SetMinter",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2723,
                      "src": "5374:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$returns$__$",
                        "typeString": "function (uint256,address)"
                      }
                    },
                    "id": 2554,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5374:23:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2555,
                  "nodeType": "EmitStatement",
                  "src": "5369:28:10"
                }
              ]
            },
            "documentation": "give `_type` creator authorized to `_minter`.\n@param _typeID  Credit _typeID (when credit is fungible) or _type (when credit is non-fungible)\n@param _to New minter, in case of address 0 the authorized will be locked forever",
            "id": 2557,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 2533,
                    "name": "_typeID",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2528,
                    "src": "5222:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 2534,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2532,
                  "name": "minterOnly",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1267,
                  "src": "5211:10:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "5211:19:10"
              }
            ],
            "name": "setMinter",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2531,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2528,
                  "name": "_typeID",
                  "nodeType": "VariableDeclaration",
                  "scope": 2557,
                  "src": "5172:15:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2527,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5172:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2530,
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "scope": 2557,
                  "src": "5189:11:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2529,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5189:7:10",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5171:30:10"
            },
            "returnParameters": {
              "id": 2535,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5231:0:10"
            },
            "scope": 2558,
            "src": "5153:251:10",
            "stateMutability": "nonpayable",
            "superFunction": 2730,
            "visibility": "external"
          }
        ],
        "scope": 2559,
        "src": "72:5334:10"
      }
    ],
    "src": "0:5407:10"
  },
  "compiler": {
    "name": "solc",
    "version": "0.5.0+commit.1d4f565a.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.0.19",
  "updatedAt": "2020-04-08T07:30:09.370Z",
  "devdoc": {
    "methods": {
      "balanceOf(address,uint256)": {
        "details": "EER2 balanceOf function",
        "params": {
          "_owner": "The address of the token holder",
          "_typeID": "ID of the Token"
        },
        "return": "The _owner's balance of the Token type requested"
      },
      "balanceOfBatch(address[],uint256[])": {
        "details": "EER2 balanceOfBatch function",
        "params": {
          "_owners": "The addresses of the token holders",
          "_typeIDs": "ID of the Tokens"
        },
        "return": "The _owner's balance of the Token types requested (i.e. balance for each (owner, typeID) pair)"
      },
      "burnFungible(uint256,address,uint256)": {
        "params": {
          "_from": "Source address",
          "_typeID": "Credit type",
          "_value": "Burn Credit quantities"
        }
      },
      "burnNonFungible(uint256,address)": {
        "params": {
          "_from": "Source address",
          "_itemID": "Item of non-fungible credit type"
        }
      },
      "isApprovedForAll(address,address)": {
        "params": {
          "_operator": "Address of authorized operator",
          "_owner": "The owner of the Tokens"
        },
        "return": "True if the operator is approved, false if not"
      },
      "safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)": {
        "details": "Caller must be approved to manage the tokens being transferred out of the `_from` account. MUST revert if `_to` is the zero address. MUST revert if length of `_typeIDs` is not the same as length of `_values`. MUST revert if any of the balance(s) of the holder(s) for token(s) in `_typeIDs` is lower than the respective amount(s) in `_values` sent to the recipient. MUST revert on any other error. MUST emit `TransferSingle` or `TransferBatch` event(s).",
        "params": {
          "_data": "Data sending to event logs",
          "_from": "Source address",
          "_to": "Target address",
          "_typeIDs": "IDs of each token type (order and length must match _values array)",
          "_values": "Transfer amounts per token type (order and length must match _typeIDs array)"
        }
      },
      "safeFullBatchTransferFrom(address[],address[],uint256[],uint256[],bytes)": {
        "details": "Caller must be approved or be an owner of the credit being transferred. MUST be revert if the `_typeID` is invalid. MUST be revert if no authorized to transfer. MUST be revert if `_from`'s `_typeID` balance less than `_value`. MUST be revert if `_from` or `_to` is the zero address. MUST be revert if `_to` is a smart contract but does not implement EER2TokenReceiver. MUST be revert if number of `_froms` `_tos` `_typeIDs` and `_values` does not eqaul. MUST emit TransferFullBatch event.",
        "params": {
          "_data": "Data sending to event logs",
          "_froms": "List of Source addresses",
          "_tos": "List of Target addresses",
          "_typeIDs": "List of ID of the credit types",
          "_values": "List of Transfer amounts"
        }
      },
      "safeTransferFrom(address,address,uint256,uint256,bytes)": {
        "details": "Caller must be approved to manage the tokens being transferred out of the `_from` account. MUST revert if `_to` is the zero address. MUST revert if balance of holder for token `_typeID` is lower than the `_value` sent. MUST revert on any other error. MUST emit the `TransferSingle` event. ",
        "params": {
          "_data": "Data sending to event logs",
          "_from": "Source address",
          "_to": "Target address",
          "_typeID": "ID of the token type",
          "_value": "Transfer amount"
        }
      },
      "setApprovalForAll(address,bool)": {
        "details": "MUST emit the ApprovalForAll event on success.",
        "params": {
          "_approved": "True if the operator is approved, false to revoke approval",
          "_operator": "Address to add to the set of authorized operators"
        }
      },
      "setMinter(uint256,address)": {
        "params": {
          "_to": "New minter, in case of address 0 the authorized will be locked forever",
          "_typeID": "Credit _typeID (when credit is fungible) or _type (when credit is non-fungible)"
        }
      },
      "totalSupply(uint256)": {
        "params": {
          "_typeID": "ID of the Credit type"
        },
        "return": "The total supply of the Token type requested"
      }
    }
  },
  "userdoc": {
    "methods": {
      "balanceOf(address,uint256)": {
        "notice": "Get the balance of an account's Tokens."
      },
      "balanceOfBatch(address[],uint256[])": {
        "notice": "Get the balance of multiple account/token pairs (override)"
      },
      "burnFungible(uint256,address,uint256)": {
        "notice": "Delete `_value` of Credit `_typeID` from the world."
      },
      "burnNonFungible(uint256,address)": {
        "notice": "Delete `_value` of Credit `_itemID` from the world."
      },
      "isApprovedForAll(address,address)": {
        "notice": "Queries the approval status of an operator for a given owner."
      },
      "safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)": {
        "notice": "Transfers `_values` amount(s) of `_typeIDs` from the `_from` address to the `_to` address specified (with safety call)."
      },
      "safeFullBatchTransferFrom(address[],address[],uint256[],uint256[],bytes)": {
        "notice": "Multiple transfer with [multi-sender] [multi-receiver] and [muti-]credit type."
      },
      "safeTransferFrom(address,address,uint256,uint256,bytes)": {
        "notice": "Transfers `_value` amount of an `_typeID` from the `_from` address to the `_to` address specified (with safety call)."
      },
      "setApprovalForAll(address,bool)": {
        "notice": "Enable or disable approval for a third party (\"operator\") to manage all of the caller's tokens."
      },
      "setMinter(uint256,address)": {
        "notice": "give `_type` creator authorized to `_minter`."
      },
      "totalSupply(uint256)": {
        "notice": "Get the total supply of a Credit."
      }
    }
  }
}