{
  "contractName": "ERC1155CreatorCore",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "extension",
          "type": "address"
        }
      ],
      "name": "ApproveTransferUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address payable[]",
          "name": "receivers",
          "type": "address[]"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "basisPoints",
          "type": "uint256[]"
        }
      ],
      "name": "DefaultRoyaltiesUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "extension",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "enabled",
          "type": "bool"
        }
      ],
      "name": "ExtensionApproveTransferUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "extension",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "ExtensionBlacklisted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "extension",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "ExtensionRegistered",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "extension",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address payable[]",
          "name": "receivers",
          "type": "address[]"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "basisPoints",
          "type": "uint256[]"
        }
      ],
      "name": "ExtensionRoyaltiesUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "extension",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "ExtensionUnregistered",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "extension",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "permissions",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "MintPermissionsUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "address payable[]",
          "name": "receivers",
          "type": "address[]"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "basisPoints",
          "type": "uint256[]"
        }
      ],
      "name": "RoyaltiesUpdated",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "VERSION",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "extension",
          "type": "address"
        }
      ],
      "name": "blacklistExtension",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "internalType": "uint256[]",
          "name": "tokenIds",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "amounts",
          "type": "uint256[]"
        }
      ],
      "name": "burn",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getApproveTransfer",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getExtensions",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "extensions",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "getFeeBps",
      "outputs": [
        {
          "internalType": "uint256[]",
          "name": "",
          "type": "uint256[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "getFeeRecipients",
      "outputs": [
        {
          "internalType": "address payable[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "getFees",
      "outputs": [
        {
          "internalType": "address payable[]",
          "name": "",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "",
          "type": "uint256[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "getRoyalties",
      "outputs": [
        {
          "internalType": "address payable[]",
          "name": "",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "",
          "type": "uint256[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "to",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "tokenIds",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "amounts",
          "type": "uint256[]"
        }
      ],
      "name": "mintBaseExisting",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "to",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "amounts",
          "type": "uint256[]"
        },
        {
          "internalType": "string[]",
          "name": "uris",
          "type": "string[]"
        }
      ],
      "name": "mintBaseNew",
      "outputs": [
        {
          "internalType": "uint256[]",
          "name": "",
          "type": "uint256[]"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "to",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "tokenIds",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "amounts",
          "type": "uint256[]"
        }
      ],
      "name": "mintExtensionExisting",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "to",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "amounts",
          "type": "uint256[]"
        },
        {
          "internalType": "string[]",
          "name": "uris",
          "type": "string[]"
        }
      ],
      "name": "mintExtensionNew",
      "outputs": [
        {
          "internalType": "uint256[]",
          "name": "",
          "type": "uint256[]"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "extension",
          "type": "address"
        },
        {
          "internalType": "string",
          "name": "baseURI",
          "type": "string"
        }
      ],
      "name": "registerExtension",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "extension",
          "type": "address"
        },
        {
          "internalType": "string",
          "name": "baseURI",
          "type": "string"
        },
        {
          "internalType": "bool",
          "name": "baseURIIdentical",
          "type": "bool"
        }
      ],
      "name": "registerExtension",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "royaltyInfo",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "extension",
          "type": "address"
        }
      ],
      "name": "setApproveTransfer",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bool",
          "name": "enabled",
          "type": "bool"
        }
      ],
      "name": "setApproveTransferExtension",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "uri",
          "type": "string"
        }
      ],
      "name": "setBaseTokenURI",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "uri",
          "type": "string"
        }
      ],
      "name": "setBaseTokenURIExtension",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "uri",
          "type": "string"
        },
        {
          "internalType": "bool",
          "name": "identical",
          "type": "bool"
        }
      ],
      "name": "setBaseTokenURIExtension",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "extension",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "permissions",
          "type": "address"
        }
      ],
      "name": "setMintPermissions",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "address payable[]",
          "name": "receivers",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "basisPoints",
          "type": "uint256[]"
        }
      ],
      "name": "setRoyalties",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address payable[]",
          "name": "receivers",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "basisPoints",
          "type": "uint256[]"
        }
      ],
      "name": "setRoyalties",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "extension",
          "type": "address"
        },
        {
          "internalType": "address payable[]",
          "name": "receivers",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "basisPoints",
          "type": "uint256[]"
        }
      ],
      "name": "setRoyaltiesExtension",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "string",
          "name": "uri",
          "type": "string"
        }
      ],
      "name": "setTokenURI",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256[]",
          "name": "tokenIds",
          "type": "uint256[]"
        },
        {
          "internalType": "string[]",
          "name": "uris",
          "type": "string[]"
        }
      ],
      "name": "setTokenURI",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256[]",
          "name": "tokenId",
          "type": "uint256[]"
        },
        {
          "internalType": "string[]",
          "name": "uri",
          "type": "string[]"
        }
      ],
      "name": "setTokenURIExtension",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "string",
          "name": "uri",
          "type": "string"
        }
      ],
      "name": "setTokenURIExtension",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "prefix",
          "type": "string"
        }
      ],
      "name": "setTokenURIPrefix",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "prefix",
          "type": "string"
        }
      ],
      "name": "setTokenURIPrefixExtension",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "tokenExtension",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "totalSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "extension",
          "type": "address"
        }
      ],
      "name": "unregisterExtension",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"extension\",\"type\":\"address\"}],\"name\":\"ApproveTransferUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"receivers\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"basisPoints\",\"type\":\"uint256[]\"}],\"name\":\"DefaultRoyaltiesUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"extension\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"ExtensionApproveTransferUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"extension\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ExtensionBlacklisted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"extension\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ExtensionRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"extension\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"receivers\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"basisPoints\",\"type\":\"uint256[]\"}],\"name\":\"ExtensionRoyaltiesUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"extension\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ExtensionUnregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"extension\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"permissions\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"MintPermissionsUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"receivers\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"basisPoints\",\"type\":\"uint256[]\"}],\"name\":\"RoyaltiesUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"VERSION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"extension\",\"type\":\"address\"}],\"name\":\"blacklistExtension\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getApproveTransfer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getExtensions\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"extensions\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getFeeBps\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getFeeRecipients\",\"outputs\":[{\"internalType\":\"address payable[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getFees\",\"outputs\":[{\"internalType\":\"address payable[]\",\"name\":\"\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getRoyalties\",\"outputs\":[{\"internalType\":\"address payable[]\",\"name\":\"\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"to\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"mintBaseExisting\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"to\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"string[]\",\"name\":\"uris\",\"type\":\"string[]\"}],\"name\":\"mintBaseNew\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"to\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"mintExtensionExisting\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"to\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"string[]\",\"name\":\"uris\",\"type\":\"string[]\"}],\"name\":\"mintExtensionNew\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"extension\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"baseURI\",\"type\":\"string\"}],\"name\":\"registerExtension\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"extension\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"baseURI\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"baseURIIdentical\",\"type\":\"bool\"}],\"name\":\"registerExtension\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"royaltyInfo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"extension\",\"type\":\"address\"}],\"name\":\"setApproveTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"setApproveTransferExtension\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"uri\",\"type\":\"string\"}],\"name\":\"setBaseTokenURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"uri\",\"type\":\"string\"}],\"name\":\"setBaseTokenURIExtension\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"uri\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"identical\",\"type\":\"bool\"}],\"name\":\"setBaseTokenURIExtension\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"extension\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"permissions\",\"type\":\"address\"}],\"name\":\"setMintPermissions\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address payable[]\",\"name\":\"receivers\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"basisPoints\",\"type\":\"uint256[]\"}],\"name\":\"setRoyalties\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address payable[]\",\"name\":\"receivers\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"basisPoints\",\"type\":\"uint256[]\"}],\"name\":\"setRoyalties\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"extension\",\"type\":\"address\"},{\"internalType\":\"address payable[]\",\"name\":\"receivers\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"basisPoints\",\"type\":\"uint256[]\"}],\"name\":\"setRoyaltiesExtension\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"uri\",\"type\":\"string\"}],\"name\":\"setTokenURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"internalType\":\"string[]\",\"name\":\"uris\",\"type\":\"string[]\"}],\"name\":\"setTokenURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"tokenId\",\"type\":\"uint256[]\"},{\"internalType\":\"string[]\",\"name\":\"uri\",\"type\":\"string[]\"}],\"name\":\"setTokenURIExtension\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"uri\",\"type\":\"string\"}],\"name\":\"setTokenURIExtension\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"prefix\",\"type\":\"string\"}],\"name\":\"setTokenURIPrefix\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"prefix\",\"type\":\"string\"}],\"name\":\"setTokenURIPrefixExtension\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenExtension\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"extension\",\"type\":\"address\"}],\"name\":\"unregisterExtension\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Core ERC1155 creator implementation\",\"kind\":\"dev\",\"methods\":{\"blacklistExtension(address)\":{\"details\":\"blacklist an extension.  Can only be called by contract owner or admin. This function will destroy all ability to reference the metadata of any tokens created by the specified extension. It will also unregister the extension if needed. Returns True if removed, False if already removed.\"},\"burn(address,uint256[],uint256[])\":{\"details\":\"burn tokens. Can only be called by token owner or approved address. On burn, calls back to the registered extension's onBurn method\"},\"getApproveTransfer()\":{\"details\":\"See {ICreatorCore-getApproveTransfer}.\"},\"getExtensions()\":{\"details\":\"See {ICreatorCore-getExtensions}.\"},\"getRoyalties(uint256)\":{\"details\":\"Get royalites of a token.  Returns list of receivers and basisPoints\"},\"mintBaseExisting(address[],uint256[],uint256[])\":{\"details\":\"batch mint existing token with no extension. Can only be called by an admin.\",\"params\":{\"amounts\":\"- Can be a single element array (all recipients get the same amount) or a multi-element array Requirements: If any of the parameters are multi-element arrays, they need to be the same length as other multi-element arrays Examples:    mintBaseExisting(['0x....1', '0x....2'], [1], [10])        Mints 10 of tokenId 1 to each of '0x....1' and '0x....2'.        mintBaseExisting(['0x....1', '0x....2'], [1, 2], [10, 20])        Mints 10 of tokenId 1 to '0x....1' and 20 of tokenId 2 to '0x....2'.        mintBaseExisting(['0x....1'], [1, 2], [10, 20])        Mints 10 of tokenId 1 and 20 of tokenId 2 to '0x....1'.        mintBaseExisting(['0x....1', '0x....2'], [1], [10, 20])        Mints 10 of tokenId 1 to '0x....1' and 20 of tokenId 1 to '0x....2'.    \",\"to\":\"- Can be a single element array (all tokens go to same address) or multi-element array (single token to many recipients)\",\"tokenIds\":\"- Can be a single element array (all recipients get the same token) or a multi-element array\"}},\"mintBaseNew(address[],uint256[],string[])\":{\"details\":\"mint a token with no extension. Can only be called by an admin.\",\"params\":{\"amounts\":\"- Can be a single element array (all recipients get the same amount) or a multi-element array\",\"to\":\"- Can be a single element array (all tokens go to same address) or multi-element array (single token to many recipients)\",\"uris\":\"- If no elements, all tokens use the default uri.                   If any element is an empty string, the corresponding token uses the default uri. Requirements: If to is a multi-element array, then uris must be empty or single element array               If to is a multi-element array, then amounts must be a single element array or a multi-element array of the same size               If to is a single element array, uris must be empty or the same length as amounts Examples:    mintBaseNew(['0x....1', '0x....2'], [1], [])        Mints a single new token, and gives 1 each to '0x....1' and '0x....2'.  Token uses default uri.        mintBaseNew(['0x....1', '0x....2'], [1, 2], [])        Mints a single new token, and gives 1 to '0x....1' and 2 to '0x....2'.  Token uses default uri.        mintBaseNew(['0x....1'], [1, 2], [\\\"\\\", \\\"http://token2.com\\\"])        Mints two new tokens to '0x....1'. 1 of the first token, 2 of the second.  1st token uses default uri, second uses \\\"http://token2.com\\\".    \"},\"returns\":{\"_0\":\"Returns list of tokenIds minted\"}},\"mintExtensionExisting(address[],uint256[],uint256[])\":{\"details\":\"batch mint existing token from extension. Can only be called by a registered extension.\",\"params\":{\"amounts\":\"- Can be a single element array (all recipients get the same amount) or a multi-element array Requirements: If any of the parameters are multi-element arrays, they need to be the same length as other multi-element arrays Examples:    mintExtensionExisting(['0x....1', '0x....2'], [1], [10])        Mints 10 of tokenId 1 to each of '0x....1' and '0x....2'.        mintExtensionExisting(['0x....1', '0x....2'], [1, 2], [10, 20])        Mints 10 of tokenId 1 to '0x....1' and 20 of tokenId 2 to '0x....2'.        mintExtensionExisting(['0x....1'], [1, 2], [10, 20])        Mints 10 of tokenId 1 and 20 of tokenId 2 to '0x....1'.        mintExtensionExisting(['0x....1', '0x....2'], [1], [10, 20])        Mints 10 of tokenId 1 to '0x....1' and 20 of tokenId 1 to '0x....2'.    \",\"to\":\"- Can be a single element array (all tokens go to same address) or multi-element array (single token to many recipients)\",\"tokenIds\":\"- Can be a single element array (all recipients get the same token) or a multi-element array\"}},\"mintExtensionNew(address[],uint256[],string[])\":{\"details\":\"mint a token from an extension. Can only be called by a registered extension.\",\"params\":{\"amounts\":\"- Can be a single element array (all recipients get the same amount) or a multi-element array\",\"to\":\"- Can be a single element array (all tokens go to same address) or multi-element array (single token to many recipients)\",\"uris\":\"- If no elements, all tokens use the default uri.                   If any element is an empty string, the corresponding token uses the default uri. Requirements: If to is a multi-element array, then uris must be empty or single element array               If to is a multi-element array, then amounts must be a single element array or a multi-element array of the same size               If to is a single element array, uris must be empty or the same length as amounts Examples:    mintExtensionNew(['0x....1', '0x....2'], [1], [])        Mints a single new token, and gives 1 each to '0x....1' and '0x....2'.  Token uses default uri.        mintExtensionNew(['0x....1', '0x....2'], [1, 2], [])        Mints a single new token, and gives 1 to '0x....1' and 2 to '0x....2'.  Token uses default uri.        mintExtensionNew(['0x....1'], [1, 2], [\\\"\\\", \\\"http://token2.com\\\"])        Mints two new tokens to '0x....1'. 1 of the first token, 2 of the second.  1st token uses default uri, second uses \\\"http://token2.com\\\".    \"},\"returns\":{\"_0\":\"Returns list of tokenIds minted\"}},\"registerExtension(address,string)\":{\"details\":\"add an extension.  Can only be called by contract owner or admin. extension address must point to a contract implementing ICreatorExtension. Returns True if newly added, False if already added.\"},\"registerExtension(address,string,bool)\":{\"details\":\"add an extension.  Can only be called by contract owner or admin. extension address must point to a contract implementing ICreatorExtension. Returns True if newly added, False if already added.\"},\"setApproveTransfer(address)\":{\"details\":\"Set the default approve transfer contract location.\"},\"setApproveTransferExtension(bool)\":{\"details\":\"See {ICreatorCore-setApproveTransferExtension}.\"},\"setBaseTokenURI(string)\":{\"details\":\"set the baseTokenURI for tokens with no extension.  Can only be called by owner/admin. For tokens with no uri configured, tokenURI will return \\\"uri+tokenId\\\"\"},\"setBaseTokenURIExtension(string)\":{\"details\":\"set the baseTokenURI of an extension.  Can only be called by extension.\"},\"setBaseTokenURIExtension(string,bool)\":{\"details\":\"set the baseTokenURI of an extension.  Can only be called by extension. For tokens with no uri configured, tokenURI will return \\\"uri+tokenId\\\"\"},\"setMintPermissions(address,address)\":{\"details\":\"set a permissions contract for an extension.  Used to control minting.\"},\"setRoyalties(address[],uint256[])\":{\"details\":\"Set default royalties\"},\"setRoyalties(uint256,address[],uint256[])\":{\"details\":\"Set royalties of a token\"},\"setRoyaltiesExtension(address,address[],uint256[])\":{\"details\":\"Set royalties of an extension\"},\"setTokenURI(uint256,string)\":{\"details\":\"set the tokenURI of a token with no extension.  Can only be called by owner/admin.\"},\"setTokenURI(uint256[],string[])\":{\"details\":\"set the tokenURI of multiple tokens with no extension.  Can only be called by owner/admin.\"},\"setTokenURIExtension(uint256,string)\":{\"details\":\"set the tokenURI of a token extension.  Can only be called by extension that minted token.\"},\"setTokenURIExtension(uint256[],string[])\":{\"details\":\"set the tokenURI of a token extension for multiple tokens.  Can only be called by extension that minted token.\"},\"setTokenURIPrefix(string)\":{\"details\":\"set the common prefix for tokens with no extension.  Can only be called by owner/admin. If configured, and a token has a uri set, tokenURI will return \\\"prefixURI+tokenURI\\\" Useful if you want to use ipfs/arweave\"},\"setTokenURIPrefixExtension(string)\":{\"details\":\"set the common prefix of an extension.  Can only be called by extension. If configured, and a token has a uri set, tokenURI will return \\\"prefixURI+tokenURI\\\" Useful if you want to use ipfs/arweave\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"tokenExtension(uint256)\":{\"details\":\"get the extension of a given token\"},\"totalSupply(uint256)\":{\"details\":\"Total amount of tokens in with a given tokenId.\"},\"unregisterExtension(address)\":{\"details\":\"add an extension.  Can only be called by contract owner or admin. Returns True if removed, False if already removed.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/core/ERC1155CreatorCore.sol\":\"ERC1155CreatorCore\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":25},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06\",\"dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879\"]},\"@openzeppelin/contracts/security/ReentrancyGuard.sol\":{\"keccak256\":\"0x190dd6f8d592b7e4e930feb7f4313aeb8e1c4ad3154c27ce1cf6a512fc30d8cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ce8dfb62d0c4fa260d6eec8f1cd47f5f2a044e11bde5b31d18072fa6e7d9010\",\"dweb:/ipfs/QmTyFztU3tLEcEDnqqiaW4UJetqsU77LXc6pjc9oTXCK5u\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0xa4d1d62251f8574deb032a35fc948386a9b4de74b812d4f545a1ac120486b48a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c969013129ba9e651a20735ef659fef6d8a1139ea3607bd4b26ddea2d645634\",\"dweb:/ipfs/QmVhVa6LGuzAcB8qgDtVHRkucn4ihj5UZr8xBLcJkP6ucb\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"@openzeppelin/contracts/utils/introspection/ERC165Checker.sol\":{\"keccak256\":\"0x0812bc73d6e30558840122fa48d6f64ae978ccc1b1fc42e616bac190c6360f46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3d95a53b7e19ca1d46043eaad8967b6e0b02aab2b5fefc2108bfa6d1ad425f5b\",\"dweb:/ipfs/QmQq7AUGT9juE3hun2Wy7r2BDoDBFdBn43DVwhJpK2StLV\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa1e8e83cd0087785df04ac79fb395d9f3684caeaf973d9e2c71caef723a3a5d6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33bbf48cc069be677705037ba7520c22b1b622c23b33e1a71495f2d36549d40b\",\"dweb:/ipfs/Qmct36zWXv3j7LZB83uwbg7TXwnZSN1fqHNDZ93GG98bGz\"]},\"@openzeppelin/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0xc3ff3f5c4584e1d9a483ad7ced51ab64523201f4e3d3c65293e4ca8aeb77a961\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7d3dd6067a994690471b5fc71b6f81fac3847798b37d404f74db00b4d3c3d0e\",\"dweb:/ipfs/QmRHF1RarifjNi93RttouNPkYZGyu6CD926PgRDzD5iL35\"]},\"project:/contracts/core/CreatorCore.sol\":{\"keccak256\":\"0x6e8b20c32d6122ed1d23af683260ea242f1197dc95b063b63ccfac5b90e65f31\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bffa862c93d614e9d5727ff595cb8595dbb9eae43bfdf06f65c7331aec09c268\",\"dweb:/ipfs/QmUsPC55S2vdfQWL3HQTYDz66yRFhdbPGCjr1NYyxBT83P\"]},\"project:/contracts/core/ERC1155CreatorCore.sol\":{\"keccak256\":\"0x6f0fac34514386543d742675a6100bad59ced735324f324b21eb4c9571e0d281\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fd6e0da4b354afedc59a51af11d506ca2ba31483757b71b4caad7b9586212dc4\",\"dweb:/ipfs/Qmf3wbvgy87Xgirt4XLcWcmrj3Gexf9frFtPyZNtyYxXSd\"]},\"project:/contracts/core/ICreatorCore.sol\":{\"keccak256\":\"0x6bdcb757953594d3a259f1d68ec3d208ca42dba02115f08a6e32e2936ccb0349\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dd1853dabcd57eb9b735b3991cf59259cd28cdeca1353495b5c59dc0db2d85df\",\"dweb:/ipfs/QmfJLFZ7RoMvdR7kJLR7QmqreS1x5VNJSa7xvjVsC4mXte\"]},\"project:/contracts/core/IERC1155CreatorCore.sol\":{\"keccak256\":\"0xc91d0050b622fbb41b7516c6a8c75ab6236e6a52feab681d36fb75b8b49fc8c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f045081bb40c91837c076530bb07b9f8b7fa77cbd1191748a12920f01f1678f8\",\"dweb:/ipfs/QmP5kx53wBz2eUqZV26ttYJmsHP7R9n3rF6dAbTjVPh5gL\"]},\"project:/contracts/extensions/ERC1155/IERC1155CreatorExtensionApproveTransfer.sol\":{\"keccak256\":\"0x721390972cc45ff82d97046f5b9e560369a4bf25ae1db2ee0998c8dfc484b782\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f564087ce1ed42a2dbb0bd4dd463643ebb51dc8662c6a8ff34b073d94f38ca24\",\"dweb:/ipfs/QmNyZnZLe3dTxpCVLxA2hKamUjDUhds4BjSb7EvegS52yS\"]},\"project:/contracts/extensions/ERC1155/IERC1155CreatorExtensionBurnable.sol\":{\"keccak256\":\"0xc274a67fd639f490659aae3c188b7eaef5f819367f61b058e547681c1410e22f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2862472b3f417e447faa442cf27a1ea33cea678ff4f64b4cc99102d5d1e6bfb8\",\"dweb:/ipfs/QmepVRQniqf5hpSWgptfoxbYw546s9L6uo9PiobsStxJ7D\"]},\"project:/contracts/extensions/ICreatorExtensionRoyalties.sol\":{\"keccak256\":\"0xf61dcf7e6bc3e49e629630ad28377f079a31b154ecd0e604d1c0a51ae2a057f2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2fda5e6d49a47fbe347ed9198c1fff5555bd687a3a73d2a9f45d5c3a2d053e40\",\"dweb:/ipfs/QmdrLJ3rscxvpMTjdRp1FyhPtYDTDL1CCQyhFeLFuFkFXH\"]},\"project:/contracts/extensions/ICreatorExtensionTokenURI.sol\":{\"keccak256\":\"0x6c8ca804ee7dea9d78f0dacdd9233b1b75ca2b2fa517f52f0fdf6beb34780a51\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a04a6f0cce2bbdb022a8125e147519c7fbaa89692c8f0cfee69a67a2956316f\",\"dweb:/ipfs/QmdUxwBEnFshm1j5FEcJctC7DbFWUznis2LaPcKR7FEZX7\"]},\"project:/contracts/permissions/ERC1155/IERC1155CreatorMintPermissions.sol\":{\"keccak256\":\"0x0cf037e3da9a47dab1b0c287d128497f6e28bdbadb4b66f7949a63f8fa144de0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://627c99459b5e9bf311d7b463ffefc405ca7f257a518ad7b6ea3e14859998bb25\",\"dweb:/ipfs/QmaPeix3g2ZDAt662biM5pkAEJ54TNH4jCqeJd46KhEguP\"]}},\"version\":1}",
  "bytecode": "0x",
  "deployedBytecode": "0x",
  "immutableReferences": {},
  "generatedSources": [],
  "deployedGeneratedSources": [],
  "sourceMap": "",
  "deployedSourceMap": "",
  "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\n/// @author: manifold.xyz\n\nimport \"@openzeppelin/contracts/utils/structs/EnumerableSet.sol\";\n\nimport \"../extensions/ERC1155/IERC1155CreatorExtensionApproveTransfer.sol\";\nimport \"../extensions/ERC1155/IERC1155CreatorExtensionBurnable.sol\";\nimport \"../permissions/ERC1155/IERC1155CreatorMintPermissions.sol\";\nimport \"./IERC1155CreatorCore.sol\";\nimport \"./CreatorCore.sol\";\n\n/**\n * @dev Core ERC1155 creator implementation\n */\nabstract contract ERC1155CreatorCore is CreatorCore, IERC1155CreatorCore {\n\n    uint256 constant public VERSION = 3;\n\n    using EnumerableSet for EnumerableSet.AddressSet;\n\n    // Track registered extensions data\n    mapping (address => bool) internal _extensionApproveTransfers;\n    mapping (address => address) internal _extensionPermissions;\n\n    // For tracking which extension a token was minted by\n    mapping (uint256 => address) internal _tokensExtension;\n\n    /**\n     * @dev See {IERC165-supportsInterface}.\n     */\n    function supportsInterface(bytes4 interfaceId) public view virtual override(CreatorCore, IERC165) returns (bool) {\n        return interfaceId == type(IERC1155CreatorCore).interfaceId || super.supportsInterface(interfaceId);\n    }\n\n    /**\n     * @dev See {CreatorCore-_setApproveTransferExtension}\n     */\n    function _setApproveTransferExtension(address extension, bool enabled) internal override {\n        if (ERC165Checker.supportsInterface(extension, type(IERC1155CreatorExtensionApproveTransfer).interfaceId)) {\n            _extensionApproveTransfers[extension] = enabled;\n            emit ExtensionApproveTransferUpdated(extension, enabled);\n        }\n    }\n\n    /**\n     * @dev Set mint permissions for an extension\n     */\n    function _setMintPermissions(address extension, address permissions) internal {\n        require(_extensions.contains(extension), \"Invalid extension\");\n        require(permissions == address(0) || ERC165Checker.supportsInterface(permissions, type(IERC1155CreatorMintPermissions).interfaceId), \"Invalid address\");\n        if (_extensionPermissions[extension] != permissions) {\n            _extensionPermissions[extension] = permissions;\n            emit MintPermissionsUpdated(extension, permissions, msg.sender);\n        }\n    }\n\n    /**\n     * If mint permissions have been set for an extension (extensions can mint by default),\n     * check if an extension can mint via the permission contract's approveMint function.\n     */\n    function _checkMintPermissions(address[] memory to, uint256[] memory tokenIds, uint256[] memory amounts) internal {\n        if (_extensionPermissions[msg.sender] != address(0)) {\n            IERC1155CreatorMintPermissions(_extensionPermissions[msg.sender]).approveMint(msg.sender, to, tokenIds, amounts);\n        }\n    }\n\n    /**\n     * Post burn actions\n     */\n    function _postBurn(address owner, uint256[] calldata tokenIds, uint256[] calldata amounts) internal virtual {\n        require(tokenIds.length > 0, \"Invalid input\");\n        address extension = _tokensExtension[tokenIds[0]];\n        for (uint i; i < tokenIds.length;) {\n            require(_tokensExtension[tokenIds[i]] == extension, \"Mismatched token originators\");\n            unchecked { ++i; }\n        }\n        // Callback to originating extension if needed\n        if (extension != address(0)) {\n           if (ERC165Checker.supportsInterface(extension, type(IERC1155CreatorExtensionBurnable).interfaceId)) {\n               IERC1155CreatorExtensionBurnable(extension).onBurn(owner, tokenIds, amounts);\n           }\n        }\n    }\n\n    /**\n     * Approve a transfer\n     */\n    function _approveTransfer(address from, address to, uint256[] memory tokenIds, uint256[] memory amounts) internal {\n        // Do not need to approve mints\n        if (from == address(0)) return;\n\n        address extension = _tokensExtension[tokenIds[0]];\n\n        for (uint i; i < tokenIds.length;) {\n            require(_tokensExtension[tokenIds[i]] == extension, \"Mismatched token originators\");\n            unchecked { ++i; }\n        }\n        if (extension != address(0) && _extensionApproveTransfers[extension]) {\n            require(IERC1155CreatorExtensionApproveTransfer(extension).approveTransfer(msg.sender, from, to, tokenIds, amounts), \"Extension approval failure\");\n        } else if (_approveTransferBase != address(0)) {\n            require(IERC1155CreatorExtensionApproveTransfer(_approveTransferBase).approveTransfer(msg.sender, from, to, tokenIds, amounts), \"Extension approval failure\");\n        }\n    }\n\n    function _tokenExtension(uint256 tokenId) internal view override returns(address) {\n        return _tokensExtension[tokenId];\n    }\n}",
  "sourcePath": "/Users/chung/git/manifoldxyz/solidity/creator-core-solidity/contracts/core/ERC1155CreatorCore.sol",
  "ast": {
    "absolutePath": "project:/contracts/core/ERC1155CreatorCore.sol",
    "exportedSymbols": {
      "AddressUpgradeable": [
        1002
      ],
      "CreatorCore": [
        13473
      ],
      "ERC1155CreatorCore": [
        13854
      ],
      "ERC165": [
        2132
      ],
      "ERC165Checker": [
        2326
      ],
      "EnumerableSet": [
        3816
      ],
      "ICreatorCore": [
        15197
      ],
      "ICreatorExtensionRoyalties": [
        16574
      ],
      "ICreatorExtensionTokenURI": [
        16591
      ],
      "IERC1155CreatorCore": [
        15282
      ],
      "IERC1155CreatorExtensionApproveTransfer": [
        16055
      ],
      "IERC1155CreatorExtensionBurnable": [
        16074
      ],
      "IERC1155CreatorMintPermissions": [
        18396
      ],
      "IERC165": [
        2338
      ],
      "Math": [
        3203
      ],
      "ReentrancyGuard": [
        1211
      ],
      "Strings": [
        2108
      ]
    },
    "id": 13855,
    "license": "MIT",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 13475,
        "literals": [
          "solidity",
          "^",
          "0.8",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "33:23:33"
      },
      {
        "absolutePath": "@openzeppelin/contracts/utils/structs/EnumerableSet.sol",
        "file": "@openzeppelin/contracts/utils/structs/EnumerableSet.sol",
        "id": 13476,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 13855,
        "sourceUnit": 3817,
        "src": "85:65:33",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "project:/contracts/extensions/ERC1155/IERC1155CreatorExtensionApproveTransfer.sol",
        "file": "../extensions/ERC1155/IERC1155CreatorExtensionApproveTransfer.sol",
        "id": 13477,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 13855,
        "sourceUnit": 16056,
        "src": "152:75:33",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "project:/contracts/extensions/ERC1155/IERC1155CreatorExtensionBurnable.sol",
        "file": "../extensions/ERC1155/IERC1155CreatorExtensionBurnable.sol",
        "id": 13478,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 13855,
        "sourceUnit": 16075,
        "src": "228:68:33",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "project:/contracts/permissions/ERC1155/IERC1155CreatorMintPermissions.sol",
        "file": "../permissions/ERC1155/IERC1155CreatorMintPermissions.sol",
        "id": 13479,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 13855,
        "sourceUnit": 18397,
        "src": "297:67:33",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "project:/contracts/core/IERC1155CreatorCore.sol",
        "file": "./IERC1155CreatorCore.sol",
        "id": 13480,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 13855,
        "sourceUnit": 15283,
        "src": "365:35:33",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "project:/contracts/core/CreatorCore.sol",
        "file": "./CreatorCore.sol",
        "id": 13481,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 13855,
        "sourceUnit": 13474,
        "src": "401:27:33",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": true,
        "baseContracts": [
          {
            "baseName": {
              "id": 13483,
              "name": "CreatorCore",
              "nameLocations": [
                "522:11:33"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 13473,
              "src": "522:11:33"
            },
            "id": 13484,
            "nodeType": "InheritanceSpecifier",
            "src": "522:11:33"
          },
          {
            "baseName": {
              "id": 13485,
              "name": "IERC1155CreatorCore",
              "nameLocations": [
                "535:19:33"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 15282,
              "src": "535:19:33"
            },
            "id": 13486,
            "nodeType": "InheritanceSpecifier",
            "src": "535:19:33"
          }
        ],
        "canonicalName": "ERC1155CreatorCore",
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": {
          "id": 13482,
          "nodeType": "StructuredDocumentation",
          "src": "430:51:33",
          "text": " @dev Core ERC1155 creator implementation"
        },
        "fullyImplemented": false,
        "id": 13854,
        "linearizedBaseContracts": [
          13854,
          15282,
          13473,
          2132,
          15197,
          2338,
          1211
        ],
        "name": "ERC1155CreatorCore",
        "nameLocation": "500:18:33",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": true,
            "functionSelector": "ffa1ad74",
            "id": 13489,
            "mutability": "constant",
            "name": "VERSION",
            "nameLocation": "586:7:33",
            "nodeType": "VariableDeclaration",
            "scope": 13854,
            "src": "562:35:33",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 13487,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "562:7:33",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "hexValue": "33",
              "id": 13488,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "596:1:33",
              "typeDescriptions": {
                "typeIdentifier": "t_rational_3_by_1",
                "typeString": "int_const 3"
              },
              "value": "3"
            },
            "visibility": "public"
          },
          {
            "global": false,
            "id": 13493,
            "libraryName": {
              "id": 13490,
              "name": "EnumerableSet",
              "nameLocations": [
                "610:13:33"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 3816,
              "src": "610:13:33"
            },
            "nodeType": "UsingForDirective",
            "src": "604:49:33",
            "typeName": {
              "id": 13492,
              "nodeType": "UserDefinedTypeName",
              "pathNode": {
                "id": 13491,
                "name": "EnumerableSet.AddressSet",
                "nameLocations": [
                  "628:13:33",
                  "642:10:33"
                ],
                "nodeType": "IdentifierPath",
                "referencedDeclaration": 3529,
                "src": "628:24:33"
              },
              "referencedDeclaration": 3529,
              "src": "628:24:33",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_AddressSet_$3529_storage_ptr",
                "typeString": "struct EnumerableSet.AddressSet"
              }
            }
          },
          {
            "constant": false,
            "id": 13497,
            "mutability": "mutable",
            "name": "_extensionApproveTransfers",
            "nameLocation": "734:26:33",
            "nodeType": "VariableDeclaration",
            "scope": 13854,
            "src": "699:61:33",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
              "typeString": "mapping(address => bool)"
            },
            "typeName": {
              "id": 13496,
              "keyName": "",
              "keyNameLocation": "-1:-1:-1",
              "keyType": {
                "id": 13494,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "708:7:33",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "699:25:33",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                "typeString": "mapping(address => bool)"
              },
              "valueName": "",
              "valueNameLocation": "-1:-1:-1",
              "valueType": {
                "id": 13495,
                "name": "bool",
                "nodeType": "ElementaryTypeName",
                "src": "719:4:33",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                }
              }
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 13501,
            "mutability": "mutable",
            "name": "_extensionPermissions",
            "nameLocation": "804:21:33",
            "nodeType": "VariableDeclaration",
            "scope": 13854,
            "src": "766:59:33",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
              "typeString": "mapping(address => address)"
            },
            "typeName": {
              "id": 13500,
              "keyName": "",
              "keyNameLocation": "-1:-1:-1",
              "keyType": {
                "id": 13498,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "775:7:33",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "766:28:33",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                "typeString": "mapping(address => address)"
              },
              "valueName": "",
              "valueNameLocation": "-1:-1:-1",
              "valueType": {
                "id": 13499,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "786:7:33",
                "stateMutability": "nonpayable",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              }
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 13505,
            "mutability": "mutable",
            "name": "_tokensExtension",
            "nameLocation": "928:16:33",
            "nodeType": "VariableDeclaration",
            "scope": 13854,
            "src": "890:54:33",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
              "typeString": "mapping(uint256 => address)"
            },
            "typeName": {
              "id": 13504,
              "keyName": "",
              "keyNameLocation": "-1:-1:-1",
              "keyType": {
                "id": 13502,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "899:7:33",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "nodeType": "Mapping",
              "src": "890:28:33",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                "typeString": "mapping(uint256 => address)"
              },
              "valueName": "",
              "valueNameLocation": "-1:-1:-1",
              "valueType": {
                "id": 13503,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "910:7:33",
                "stateMutability": "nonpayable",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              }
            },
            "visibility": "internal"
          },
          {
            "baseFunctions": [
              2337,
              12536
            ],
            "body": {
              "id": 13528,
              "nodeType": "Block",
              "src": "1125:116:33",
              "statements": [
                {
                  "expression": {
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 13526,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "commonType": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      },
                      "id": 13521,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 13516,
                        "name": "interfaceId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13508,
                        "src": "1142:11:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "expression": {
                          "arguments": [
                            {
                              "id": 13518,
                              "name": "IERC1155CreatorCore",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15282,
                              "src": "1162:19:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IERC1155CreatorCore_$15282_$",
                                "typeString": "type(contract IERC1155CreatorCore)"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_type$_t_contract$_IERC1155CreatorCore_$15282_$",
                                "typeString": "type(contract IERC1155CreatorCore)"
                              }
                            ],
                            "id": 13517,
                            "name": "type",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967269,
                            "src": "1157:4:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 13519,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1157:25:33",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_meta_type_t_contract$_IERC1155CreatorCore_$15282",
                            "typeString": "type(contract IERC1155CreatorCore)"
                          }
                        },
                        "id": 13520,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "1183:11:33",
                        "memberName": "interfaceId",
                        "nodeType": "MemberAccess",
                        "src": "1157:37:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "src": "1142:52:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "arguments": [
                        {
                          "id": 13524,
                          "name": "interfaceId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13508,
                          "src": "1222:11:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        ],
                        "expression": {
                          "id": 13522,
                          "name": "super",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4294967271,
                          "src": "1198:5:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_super$_ERC1155CreatorCore_$13854_$",
                            "typeString": "type(contract super ERC1155CreatorCore)"
                          }
                        },
                        "id": 13523,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "1204:17:33",
                        "memberName": "supportsInterface",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 12536,
                        "src": "1198:23:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$",
                          "typeString": "function (bytes4) view returns (bool)"
                        }
                      },
                      "id": 13525,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1198:36:33",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "1142:92:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 13515,
                  "id": 13527,
                  "nodeType": "Return",
                  "src": "1135:99:33"
                }
              ]
            },
            "documentation": {
              "id": 13506,
              "nodeType": "StructuredDocumentation",
              "src": "951:56:33",
              "text": " @dev See {IERC165-supportsInterface}."
            },
            "functionSelector": "01ffc9a7",
            "id": 13529,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "supportsInterface",
            "nameLocation": "1021:17:33",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 13512,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "id": 13510,
                  "name": "CreatorCore",
                  "nameLocations": [
                    "1088:11:33"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 13473,
                  "src": "1088:11:33"
                },
                {
                  "id": 13511,
                  "name": "IERC165",
                  "nameLocations": [
                    "1101:7:33"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 2338,
                  "src": "1101:7:33"
                }
              ],
              "src": "1079:30:33"
            },
            "parameters": {
              "id": 13509,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13508,
                  "mutability": "mutable",
                  "name": "interfaceId",
                  "nameLocation": "1046:11:33",
                  "nodeType": "VariableDeclaration",
                  "scope": 13529,
                  "src": "1039:18:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 13507,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "1039:6:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1038:20:33"
            },
            "returnParameters": {
              "id": 13515,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13514,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 13529,
                  "src": "1119:4:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 13513,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1119:4:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1118:6:33"
            },
            "scope": 13854,
            "src": "1012:229:33",
            "stateMutability": "view",
            "virtual": true,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              12689
            ],
            "body": {
              "id": 13559,
              "nodeType": "Block",
              "src": "1411:265:33",
              "statements": [
                {
                  "condition": {
                    "arguments": [
                      {
                        "id": 13540,
                        "name": "extension",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13532,
                        "src": "1457:9:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 13542,
                              "name": "IERC1155CreatorExtensionApproveTransfer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16055,
                              "src": "1473:39:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IERC1155CreatorExtensionApproveTransfer_$16055_$",
                                "typeString": "type(contract IERC1155CreatorExtensionApproveTransfer)"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_type$_t_contract$_IERC1155CreatorExtensionApproveTransfer_$16055_$",
                                "typeString": "type(contract IERC1155CreatorExtensionApproveTransfer)"
                              }
                            ],
                            "id": 13541,
                            "name": "type",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967269,
                            "src": "1468:4:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 13543,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1468:45:33",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_meta_type_t_contract$_IERC1155CreatorExtensionApproveTransfer_$16055",
                            "typeString": "type(contract IERC1155CreatorExtensionApproveTransfer)"
                          }
                        },
                        "id": 13544,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "1514:11:33",
                        "memberName": "interfaceId",
                        "nodeType": "MemberAccess",
                        "src": "1468:57:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      ],
                      "expression": {
                        "id": 13538,
                        "name": "ERC165Checker",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2326,
                        "src": "1425:13:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_ERC165Checker_$2326_$",
                          "typeString": "type(library ERC165Checker)"
                        }
                      },
                      "id": 13539,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "1439:17:33",
                      "memberName": "supportsInterface",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2182,
                      "src": "1425:31:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_bool_$",
                        "typeString": "function (address,bytes4) view returns (bool)"
                      }
                    },
                    "id": 13545,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1425:101:33",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 13558,
                  "nodeType": "IfStatement",
                  "src": "1421:249:33",
                  "trueBody": {
                    "id": 13557,
                    "nodeType": "Block",
                    "src": "1528:142:33",
                    "statements": [
                      {
                        "expression": {
                          "id": 13550,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 13546,
                              "name": "_extensionApproveTransfers",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13497,
                              "src": "1542:26:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 13548,
                            "indexExpression": {
                              "id": 13547,
                              "name": "extension",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13532,
                              "src": "1569:9:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1542:37:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 13549,
                            "name": "enabled",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13534,
                            "src": "1582:7:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "1542:47:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 13551,
                        "nodeType": "ExpressionStatement",
                        "src": "1542:47:33"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 13553,
                              "name": "extension",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13532,
                              "src": "1640:9:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 13554,
                              "name": "enabled",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13534,
                              "src": "1651:7:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 13552,
                            "name": "ExtensionApproveTransferUpdated",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14973,
                            "src": "1608:31:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bool_$returns$__$",
                              "typeString": "function (address,bool)"
                            }
                          },
                          "id": 13555,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1608:51:33",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13556,
                        "nodeType": "EmitStatement",
                        "src": "1603:56:33"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": {
              "id": 13530,
              "nodeType": "StructuredDocumentation",
              "src": "1247:70:33",
              "text": " @dev See {CreatorCore-_setApproveTransferExtension}"
            },
            "id": 13560,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_setApproveTransferExtension",
            "nameLocation": "1331:28:33",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 13536,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1402:8:33"
            },
            "parameters": {
              "id": 13535,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13532,
                  "mutability": "mutable",
                  "name": "extension",
                  "nameLocation": "1368:9:33",
                  "nodeType": "VariableDeclaration",
                  "scope": 13560,
                  "src": "1360:17:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 13531,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1360:7:33",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13534,
                  "mutability": "mutable",
                  "name": "enabled",
                  "nameLocation": "1384:7:33",
                  "nodeType": "VariableDeclaration",
                  "scope": 13560,
                  "src": "1379:12:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 13533,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1379:4:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1359:33:33"
            },
            "returnParameters": {
              "id": 13537,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1411:0:33"
            },
            "scope": 13854,
            "src": "1322:354:33",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 13615,
              "nodeType": "Block",
              "src": "1826:449:33",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 13571,
                            "name": "extension",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13563,
                            "src": "1865:9:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 13569,
                            "name": "_extensions",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12437,
                            "src": "1844:11:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_AddressSet_$3529_storage",
                              "typeString": "struct EnumerableSet.AddressSet storage ref"
                            }
                          },
                          "id": 13570,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "1856:8:33",
                          "memberName": "contains",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3610,
                          "src": "1844:20:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_struct$_AddressSet_$3529_storage_ptr_$_t_address_$returns$_t_bool_$attached_to$_t_struct$_AddressSet_$3529_storage_ptr_$",
                            "typeString": "function (struct EnumerableSet.AddressSet storage pointer,address) view returns (bool)"
                          }
                        },
                        "id": 13572,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1844:31:33",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "496e76616c696420657874656e73696f6e",
                        "id": 13573,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1877:19:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_39736ad8edb82cab8fab418c447e0b8998fe764b7748a15a1ca217315b23256b",
                          "typeString": "literal_string \"Invalid extension\""
                        },
                        "value": "Invalid extension"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_39736ad8edb82cab8fab418c447e0b8998fe764b7748a15a1ca217315b23256b",
                          "typeString": "literal_string \"Invalid extension\""
                        }
                      ],
                      "id": 13568,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "1836:7:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 13574,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1836:61:33",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13575,
                  "nodeType": "ExpressionStatement",
                  "src": "1836:61:33"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 13591,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 13582,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 13577,
                            "name": "permissions",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13565,
                            "src": "1915:11:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 13580,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1938:1:33",
                                "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": 13579,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1930:7:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 13578,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1930:7:33",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 13581,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1930:10:33",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1915:25:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "arguments": [
                            {
                              "id": 13585,
                              "name": "permissions",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13565,
                              "src": "1976:11:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 13587,
                                    "name": "IERC1155CreatorMintPermissions",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18396,
                                    "src": "1994:30:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC1155CreatorMintPermissions_$18396_$",
                                      "typeString": "type(contract IERC1155CreatorMintPermissions)"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_contract$_IERC1155CreatorMintPermissions_$18396_$",
                                      "typeString": "type(contract IERC1155CreatorMintPermissions)"
                                    }
                                  ],
                                  "id": 13586,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4294967269,
                                  "src": "1989:4:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 13588,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1989:36:33",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_contract$_IERC1155CreatorMintPermissions_$18396",
                                  "typeString": "type(contract IERC1155CreatorMintPermissions)"
                                }
                              },
                              "id": 13589,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "2026:11:33",
                              "memberName": "interfaceId",
                              "nodeType": "MemberAccess",
                              "src": "1989:48:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            ],
                            "expression": {
                              "id": 13583,
                              "name": "ERC165Checker",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2326,
                              "src": "1944:13:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_ERC165Checker_$2326_$",
                                "typeString": "type(library ERC165Checker)"
                              }
                            },
                            "id": 13584,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "1958:17:33",
                            "memberName": "supportsInterface",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2182,
                            "src": "1944:31:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_bool_$",
                              "typeString": "function (address,bytes4) view returns (bool)"
                            }
                          },
                          "id": 13590,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1944:94:33",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "1915:123:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "496e76616c69642061646472657373",
                        "id": 13592,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2040:17:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_1462473b7a4b33d32b109b815fd2324d00c9e5839b707ecf16d0ab5744f99226",
                          "typeString": "literal_string \"Invalid address\""
                        },
                        "value": "Invalid address"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_1462473b7a4b33d32b109b815fd2324d00c9e5839b707ecf16d0ab5744f99226",
                          "typeString": "literal_string \"Invalid address\""
                        }
                      ],
                      "id": 13576,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "1907:7:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 13593,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1907:151:33",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13594,
                  "nodeType": "ExpressionStatement",
                  "src": "1907:151:33"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 13599,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "baseExpression": {
                        "id": 13595,
                        "name": "_extensionPermissions",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13501,
                        "src": "2072:21:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                          "typeString": "mapping(address => address)"
                        }
                      },
                      "id": 13597,
                      "indexExpression": {
                        "id": 13596,
                        "name": "extension",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13563,
                        "src": "2094:9:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "2072:32:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "id": 13598,
                      "name": "permissions",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13565,
                      "src": "2108:11:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "2072:47:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 13614,
                  "nodeType": "IfStatement",
                  "src": "2068:201:33",
                  "trueBody": {
                    "id": 13613,
                    "nodeType": "Block",
                    "src": "2121:148:33",
                    "statements": [
                      {
                        "expression": {
                          "id": 13604,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 13600,
                              "name": "_extensionPermissions",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13501,
                              "src": "2135:21:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                                "typeString": "mapping(address => address)"
                              }
                            },
                            "id": 13602,
                            "indexExpression": {
                              "id": 13601,
                              "name": "extension",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13563,
                              "src": "2157:9:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "2135:32:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 13603,
                            "name": "permissions",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13565,
                            "src": "2170:11:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "2135:46:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 13605,
                        "nodeType": "ExpressionStatement",
                        "src": "2135:46:33"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 13607,
                              "name": "extension",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13563,
                              "src": "2223:9:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 13608,
                              "name": "permissions",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13565,
                              "src": "2234:11:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "expression": {
                                "id": 13609,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4294967281,
                                "src": "2247:3:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 13610,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "2251:6:33",
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "2247:10:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 13606,
                            "name": "MintPermissionsUpdated",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14935,
                            "src": "2200:22:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address,address)"
                            }
                          },
                          "id": 13611,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2200:58:33",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13612,
                        "nodeType": "EmitStatement",
                        "src": "2195:63:33"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": {
              "id": 13561,
              "nodeType": "StructuredDocumentation",
              "src": "1682:61:33",
              "text": " @dev Set mint permissions for an extension"
            },
            "id": 13616,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_setMintPermissions",
            "nameLocation": "1757:19:33",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 13566,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13563,
                  "mutability": "mutable",
                  "name": "extension",
                  "nameLocation": "1785:9:33",
                  "nodeType": "VariableDeclaration",
                  "scope": 13616,
                  "src": "1777:17:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 13562,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1777:7:33",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13565,
                  "mutability": "mutable",
                  "name": "permissions",
                  "nameLocation": "1804:11:33",
                  "nodeType": "VariableDeclaration",
                  "scope": 13616,
                  "src": "1796:19:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 13564,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1796:7:33",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1776:40:33"
            },
            "returnParameters": {
              "id": 13567,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1826:0:33"
            },
            "scope": 13854,
            "src": "1748:527:33",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 13654,
              "nodeType": "Block",
              "src": "2593:206:33",
              "statements": [
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 13637,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "baseExpression": {
                        "id": 13629,
                        "name": "_extensionPermissions",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13501,
                        "src": "2607:21:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                          "typeString": "mapping(address => address)"
                        }
                      },
                      "id": 13632,
                      "indexExpression": {
                        "expression": {
                          "id": 13630,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4294967281,
                          "src": "2629:3:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 13631,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "2633:6:33",
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "src": "2629:10:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "2607:33:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "arguments": [
                        {
                          "hexValue": "30",
                          "id": 13635,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2652:1:33",
                          "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": 13634,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "2644:7:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": {
                          "id": 13633,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2644:7:33",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 13636,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2644:10:33",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "2607:47:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 13653,
                  "nodeType": "IfStatement",
                  "src": "2603:190:33",
                  "trueBody": {
                    "id": 13652,
                    "nodeType": "Block",
                    "src": "2656:137:33",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 13645,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4294967281,
                                "src": "2748:3:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 13646,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "2752:6:33",
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "2748:10:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 13647,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13620,
                              "src": "2760:2:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            {
                              "id": 13648,
                              "name": "tokenIds",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13623,
                              "src": "2764:8:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 13649,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13626,
                              "src": "2774:7:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            ],
                            "expression": {
                              "arguments": [
                                {
                                  "baseExpression": {
                                    "id": 13639,
                                    "name": "_extensionPermissions",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13501,
                                    "src": "2701:21:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                                      "typeString": "mapping(address => address)"
                                    }
                                  },
                                  "id": 13642,
                                  "indexExpression": {
                                    "expression": {
                                      "id": 13640,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4294967281,
                                      "src": "2723:3:33",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 13641,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "2727:6:33",
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "src": "2723:10:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "2701:33:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 13638,
                                "name": "IERC1155CreatorMintPermissions",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18396,
                                "src": "2670:30:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC1155CreatorMintPermissions_$18396_$",
                                  "typeString": "type(contract IERC1155CreatorMintPermissions)"
                                }
                              },
                              "id": 13643,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2670:65:33",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC1155CreatorMintPermissions_$18396",
                                "typeString": "contract IERC1155CreatorMintPermissions"
                              }
                            },
                            "id": 13644,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "2736:11:33",
                            "memberName": "approveMint",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18395,
                            "src": "2670:77:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                              "typeString": "function (address,address[] memory,uint256[] memory,uint256[] memory) external"
                            }
                          },
                          "id": 13650,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2670:112:33",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13651,
                        "nodeType": "ExpressionStatement",
                        "src": "2670:112:33"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": {
              "id": 13617,
              "nodeType": "StructuredDocumentation",
              "src": "2281:193:33",
              "text": " If mint permissions have been set for an extension (extensions can mint by default),\n check if an extension can mint via the permission contract's approveMint function."
            },
            "id": 13655,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_checkMintPermissions",
            "nameLocation": "2488:21:33",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 13627,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13620,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "2527:2:33",
                  "nodeType": "VariableDeclaration",
                  "scope": 13655,
                  "src": "2510:19:33",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 13618,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "2510:7:33",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 13619,
                    "nodeType": "ArrayTypeName",
                    "src": "2510:9:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13623,
                  "mutability": "mutable",
                  "name": "tokenIds",
                  "nameLocation": "2548:8:33",
                  "nodeType": "VariableDeclaration",
                  "scope": 13655,
                  "src": "2531:25:33",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 13621,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "2531:7:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 13622,
                    "nodeType": "ArrayTypeName",
                    "src": "2531:9:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13626,
                  "mutability": "mutable",
                  "name": "amounts",
                  "nameLocation": "2575:7:33",
                  "nodeType": "VariableDeclaration",
                  "scope": 13655,
                  "src": "2558:24:33",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 13624,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "2558:7:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 13625,
                    "nodeType": "ArrayTypeName",
                    "src": "2558:9:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2509:74:33"
            },
            "returnParameters": {
              "id": 13628,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2593:0:33"
            },
            "scope": 13854,
            "src": "2479:320:33",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 13734,
              "nodeType": "Block",
              "src": "2954:627:33",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 13671,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 13668,
                            "name": "tokenIds",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13661,
                            "src": "2972:8:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                              "typeString": "uint256[] calldata"
                            }
                          },
                          "id": 13669,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "2981:6:33",
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "2972:15:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "hexValue": "30",
                          "id": 13670,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2990:1:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "2972:19:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "496e76616c696420696e707574",
                        "id": 13672,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2993:15:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_af39b50065ba9648c753f781fa674704d13ce8309cf446a262799d7aceba8e5b",
                          "typeString": "literal_string \"Invalid input\""
                        },
                        "value": "Invalid input"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_af39b50065ba9648c753f781fa674704d13ce8309cf446a262799d7aceba8e5b",
                          "typeString": "literal_string \"Invalid input\""
                        }
                      ],
                      "id": 13667,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "2964:7:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 13673,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2964:45:33",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13674,
                  "nodeType": "ExpressionStatement",
                  "src": "2964:45:33"
                },
                {
                  "assignments": [
                    13676
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 13676,
                      "mutability": "mutable",
                      "name": "extension",
                      "nameLocation": "3027:9:33",
                      "nodeType": "VariableDeclaration",
                      "scope": 13734,
                      "src": "3019:17:33",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 13675,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3019:7:33",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 13682,
                  "initialValue": {
                    "baseExpression": {
                      "id": 13677,
                      "name": "_tokensExtension",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13505,
                      "src": "3039:16:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                        "typeString": "mapping(uint256 => address)"
                      }
                    },
                    "id": 13681,
                    "indexExpression": {
                      "baseExpression": {
                        "id": 13678,
                        "name": "tokenIds",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13661,
                        "src": "3056:8:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[] calldata"
                        }
                      },
                      "id": 13680,
                      "indexExpression": {
                        "hexValue": "30",
                        "id": 13679,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3065:1:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "3056:11:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "3039:29:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3019:49:33"
                },
                {
                  "body": {
                    "id": 13705,
                    "nodeType": "Block",
                    "src": "3113:139:33",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 13697,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "baseExpression": {
                                  "id": 13691,
                                  "name": "_tokensExtension",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13505,
                                  "src": "3135:16:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                    "typeString": "mapping(uint256 => address)"
                                  }
                                },
                                "id": 13695,
                                "indexExpression": {
                                  "baseExpression": {
                                    "id": 13692,
                                    "name": "tokenIds",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13661,
                                    "src": "3152:8:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                      "typeString": "uint256[] calldata"
                                    }
                                  },
                                  "id": 13694,
                                  "indexExpression": {
                                    "id": 13693,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13684,
                                    "src": "3161:1:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "3152:11:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "3135:29:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "id": 13696,
                                "name": "extension",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13676,
                                "src": "3168:9:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "3135:42:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4d69736d61746368656420746f6b656e206f726967696e61746f7273",
                              "id": 13698,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3179:30:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_949602a3a8201646aa1cfd4aa9eeb487c03c2df49971f81c096e783331adde02",
                                "typeString": "literal_string \"Mismatched token originators\""
                              },
                              "value": "Mismatched token originators"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_949602a3a8201646aa1cfd4aa9eeb487c03c2df49971f81c096e783331adde02",
                                "typeString": "literal_string \"Mismatched token originators\""
                              }
                            ],
                            "id": 13690,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              4294967278,
                              4294967278
                            ],
                            "referencedDeclaration": 4294967278,
                            "src": "3127:7:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 13699,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3127:83:33",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13700,
                        "nodeType": "ExpressionStatement",
                        "src": "3127:83:33"
                      },
                      {
                        "id": 13704,
                        "nodeType": "UncheckedBlock",
                        "src": "3224:18:33",
                        "statements": [
                          {
                            "expression": {
                              "id": 13702,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "++",
                              "prefix": true,
                              "src": "3236:3:33",
                              "subExpression": {
                                "id": 13701,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13684,
                                "src": "3238:1:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 13703,
                            "nodeType": "ExpressionStatement",
                            "src": "3236:3:33"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 13689,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 13686,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13684,
                      "src": "3091:1:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "expression": {
                        "id": 13687,
                        "name": "tokenIds",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13661,
                        "src": "3095:8:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[] calldata"
                        }
                      },
                      "id": 13688,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "3104:6:33",
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "3095:15:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3091:19:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 13706,
                  "initializationExpression": {
                    "assignments": [
                      13684
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 13684,
                        "mutability": "mutable",
                        "name": "i",
                        "nameLocation": "3088:1:33",
                        "nodeType": "VariableDeclaration",
                        "scope": 13706,
                        "src": "3083:6:33",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13683,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "3083:4:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 13685,
                    "nodeType": "VariableDeclarationStatement",
                    "src": "3083:6:33"
                  },
                  "nodeType": "ForStatement",
                  "src": "3078:174:33"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 13712,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 13707,
                      "name": "extension",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13676,
                      "src": "3320:9:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "arguments": [
                        {
                          "hexValue": "30",
                          "id": 13710,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3341:1:33",
                          "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": 13709,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "3333:7:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": {
                          "id": 13708,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3333:7:33",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 13711,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3333:10:33",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "3320:23:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 13733,
                  "nodeType": "IfStatement",
                  "src": "3316:259:33",
                  "trueBody": {
                    "id": 13732,
                    "nodeType": "Block",
                    "src": "3345:230:33",
                    "statements": [
                      {
                        "condition": {
                          "arguments": [
                            {
                              "id": 13715,
                              "name": "extension",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13676,
                              "src": "3394:9:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 13717,
                                    "name": "IERC1155CreatorExtensionBurnable",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16074,
                                    "src": "3410:32:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC1155CreatorExtensionBurnable_$16074_$",
                                      "typeString": "type(contract IERC1155CreatorExtensionBurnable)"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_contract$_IERC1155CreatorExtensionBurnable_$16074_$",
                                      "typeString": "type(contract IERC1155CreatorExtensionBurnable)"
                                    }
                                  ],
                                  "id": 13716,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4294967269,
                                  "src": "3405:4:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 13718,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3405:38:33",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_contract$_IERC1155CreatorExtensionBurnable_$16074",
                                  "typeString": "type(contract IERC1155CreatorExtensionBurnable)"
                                }
                              },
                              "id": 13719,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "3444:11:33",
                              "memberName": "interfaceId",
                              "nodeType": "MemberAccess",
                              "src": "3405:50:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            ],
                            "expression": {
                              "id": 13713,
                              "name": "ERC165Checker",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2326,
                              "src": "3362:13:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_ERC165Checker_$2326_$",
                                "typeString": "type(library ERC165Checker)"
                              }
                            },
                            "id": 13714,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "3376:17:33",
                            "memberName": "supportsInterface",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2182,
                            "src": "3362:31:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_bool_$",
                              "typeString": "function (address,bytes4) view returns (bool)"
                            }
                          },
                          "id": 13720,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3362:94:33",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 13731,
                        "nodeType": "IfStatement",
                        "src": "3358:207:33",
                        "trueBody": {
                          "id": 13730,
                          "nodeType": "Block",
                          "src": "3458:107:33",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 13725,
                                    "name": "owner",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13658,
                                    "src": "3526:5:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 13726,
                                    "name": "tokenIds",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13661,
                                    "src": "3533:8:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                      "typeString": "uint256[] calldata"
                                    }
                                  },
                                  {
                                    "id": 13727,
                                    "name": "amounts",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13664,
                                    "src": "3543:7:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                      "typeString": "uint256[] calldata"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                      "typeString": "uint256[] calldata"
                                    },
                                    {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                      "typeString": "uint256[] calldata"
                                    }
                                  ],
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 13722,
                                        "name": "extension",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 13676,
                                        "src": "3508:9:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 13721,
                                      "name": "IERC1155CreatorExtensionBurnable",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16074,
                                      "src": "3475:32:33",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IERC1155CreatorExtensionBurnable_$16074_$",
                                        "typeString": "type(contract IERC1155CreatorExtensionBurnable)"
                                      }
                                    },
                                    "id": 13723,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3475:43:33",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC1155CreatorExtensionBurnable_$16074",
                                      "typeString": "contract IERC1155CreatorExtensionBurnable"
                                    }
                                  },
                                  "id": 13724,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "3519:6:33",
                                  "memberName": "onBurn",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 16073,
                                  "src": "3475:50:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                                    "typeString": "function (address,uint256[] memory,uint256[] memory) external"
                                  }
                                },
                                "id": 13728,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3475:76:33",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 13729,
                              "nodeType": "ExpressionStatement",
                              "src": "3475:76:33"
                            }
                          ]
                        }
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": {
              "id": 13656,
              "nodeType": "StructuredDocumentation",
              "src": "2805:36:33",
              "text": " Post burn actions"
            },
            "id": 13735,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_postBurn",
            "nameLocation": "2855:9:33",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 13665,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13658,
                  "mutability": "mutable",
                  "name": "owner",
                  "nameLocation": "2873:5:33",
                  "nodeType": "VariableDeclaration",
                  "scope": 13735,
                  "src": "2865:13:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 13657,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2865:7:33",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13661,
                  "mutability": "mutable",
                  "name": "tokenIds",
                  "nameLocation": "2899:8:33",
                  "nodeType": "VariableDeclaration",
                  "scope": 13735,
                  "src": "2880:27:33",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 13659,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "2880:7:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 13660,
                    "nodeType": "ArrayTypeName",
                    "src": "2880:9:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13664,
                  "mutability": "mutable",
                  "name": "amounts",
                  "nameLocation": "2928:7:33",
                  "nodeType": "VariableDeclaration",
                  "scope": 13735,
                  "src": "2909:26:33",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 13662,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "2909:7:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 13663,
                    "nodeType": "ArrayTypeName",
                    "src": "2909:9:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2864:72:33"
            },
            "returnParameters": {
              "id": 13666,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2954:0:33"
            },
            "scope": 13854,
            "src": "2846:735:33",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 13839,
              "nodeType": "Block",
              "src": "3743:809:33",
              "statements": [
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 13754,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 13749,
                      "name": "from",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13738,
                      "src": "3797:4:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "arguments": [
                        {
                          "hexValue": "30",
                          "id": 13752,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3813:1:33",
                          "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": 13751,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "3805:7:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": {
                          "id": 13750,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3805:7:33",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 13753,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3805:10:33",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "3797:18:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 13756,
                  "nodeType": "IfStatement",
                  "src": "3793:31:33",
                  "trueBody": {
                    "functionReturnParameters": 13748,
                    "id": 13755,
                    "nodeType": "Return",
                    "src": "3817:7:33"
                  }
                },
                {
                  "assignments": [
                    13758
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 13758,
                      "mutability": "mutable",
                      "name": "extension",
                      "nameLocation": "3842:9:33",
                      "nodeType": "VariableDeclaration",
                      "scope": 13839,
                      "src": "3834:17:33",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 13757,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3834:7:33",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 13764,
                  "initialValue": {
                    "baseExpression": {
                      "id": 13759,
                      "name": "_tokensExtension",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13505,
                      "src": "3854:16:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                        "typeString": "mapping(uint256 => address)"
                      }
                    },
                    "id": 13763,
                    "indexExpression": {
                      "baseExpression": {
                        "id": 13760,
                        "name": "tokenIds",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13743,
                        "src": "3871:8:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      "id": 13762,
                      "indexExpression": {
                        "hexValue": "30",
                        "id": 13761,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3880:1:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "3871:11:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "3854:29:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3834:49:33"
                },
                {
                  "body": {
                    "id": 13787,
                    "nodeType": "Block",
                    "src": "3929:139:33",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 13779,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "baseExpression": {
                                  "id": 13773,
                                  "name": "_tokensExtension",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13505,
                                  "src": "3951:16:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                    "typeString": "mapping(uint256 => address)"
                                  }
                                },
                                "id": 13777,
                                "indexExpression": {
                                  "baseExpression": {
                                    "id": 13774,
                                    "name": "tokenIds",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13743,
                                    "src": "3968:8:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  "id": 13776,
                                  "indexExpression": {
                                    "id": 13775,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13766,
                                    "src": "3977:1:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "3968:11:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "3951:29:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "id": 13778,
                                "name": "extension",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13758,
                                "src": "3984:9:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "3951:42:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4d69736d61746368656420746f6b656e206f726967696e61746f7273",
                              "id": 13780,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3995:30:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_949602a3a8201646aa1cfd4aa9eeb487c03c2df49971f81c096e783331adde02",
                                "typeString": "literal_string \"Mismatched token originators\""
                              },
                              "value": "Mismatched token originators"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_949602a3a8201646aa1cfd4aa9eeb487c03c2df49971f81c096e783331adde02",
                                "typeString": "literal_string \"Mismatched token originators\""
                              }
                            ],
                            "id": 13772,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              4294967278,
                              4294967278
                            ],
                            "referencedDeclaration": 4294967278,
                            "src": "3943:7:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 13781,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3943:83:33",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13782,
                        "nodeType": "ExpressionStatement",
                        "src": "3943:83:33"
                      },
                      {
                        "id": 13786,
                        "nodeType": "UncheckedBlock",
                        "src": "4040:18:33",
                        "statements": [
                          {
                            "expression": {
                              "id": 13784,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "++",
                              "prefix": true,
                              "src": "4052:3:33",
                              "subExpression": {
                                "id": 13783,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13766,
                                "src": "4054:1:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 13785,
                            "nodeType": "ExpressionStatement",
                            "src": "4052:3:33"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 13771,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 13768,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13766,
                      "src": "3907:1:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "expression": {
                        "id": 13769,
                        "name": "tokenIds",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13743,
                        "src": "3911:8:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      "id": 13770,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "3920:6:33",
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "3911:15:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3907:19:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 13788,
                  "initializationExpression": {
                    "assignments": [
                      13766
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 13766,
                        "mutability": "mutable",
                        "name": "i",
                        "nameLocation": "3904:1:33",
                        "nodeType": "VariableDeclaration",
                        "scope": 13788,
                        "src": "3899:6:33",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13765,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "3899:4:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 13767,
                    "nodeType": "VariableDeclarationStatement",
                    "src": "3899:6:33"
                  },
                  "nodeType": "ForStatement",
                  "src": "3894:174:33"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 13798,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 13794,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 13789,
                        "name": "extension",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13758,
                        "src": "4081:9:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "!=",
                      "rightExpression": {
                        "arguments": [
                          {
                            "hexValue": "30",
                            "id": 13792,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4102:1:33",
                            "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": 13791,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4094:7:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 13790,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "4094:7:33",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 13793,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4094:10:33",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "src": "4081:23:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "baseExpression": {
                        "id": 13795,
                        "name": "_extensionApproveTransfers",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13497,
                        "src": "4108:26:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                          "typeString": "mapping(address => bool)"
                        }
                      },
                      "id": 13797,
                      "indexExpression": {
                        "id": 13796,
                        "name": "extension",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13758,
                        "src": "4135:9:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "4108:37:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "4081:64:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 13820,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 13815,
                        "name": "_approveTransferBase",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12434,
                        "src": "4328:20:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "!=",
                      "rightExpression": {
                        "arguments": [
                          {
                            "hexValue": "30",
                            "id": 13818,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4360:1:33",
                            "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": 13817,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4352:7:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 13816,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "4352:7:33",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 13819,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4352:10:33",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "src": "4328:34:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 13837,
                    "nodeType": "IfStatement",
                    "src": "4324:222:33",
                    "trueBody": {
                      "id": 13836,
                      "nodeType": "Block",
                      "src": "4364:182:33",
                      "statements": [
                        {
                          "expression": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "expression": {
                                      "id": 13826,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4294967281,
                                      "src": "4464:3:33",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 13827,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "4468:6:33",
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "src": "4464:10:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 13828,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13738,
                                    "src": "4476:4:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 13829,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13740,
                                    "src": "4482:2:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 13830,
                                    "name": "tokenIds",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13743,
                                    "src": "4486:8:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  {
                                    "id": 13831,
                                    "name": "amounts",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13746,
                                    "src": "4496:7:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    },
                                    {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  ],
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 13823,
                                        "name": "_approveTransferBase",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 12434,
                                        "src": "4426:20:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 13822,
                                      "name": "IERC1155CreatorExtensionApproveTransfer",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16055,
                                      "src": "4386:39:33",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IERC1155CreatorExtensionApproveTransfer_$16055_$",
                                        "typeString": "type(contract IERC1155CreatorExtensionApproveTransfer)"
                                      }
                                    },
                                    "id": 13824,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "4386:61:33",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC1155CreatorExtensionApproveTransfer_$16055",
                                      "typeString": "contract IERC1155CreatorExtensionApproveTransfer"
                                    }
                                  },
                                  "id": 13825,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "4448:15:33",
                                  "memberName": "approveTransfer",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 16054,
                                  "src": "4386:77:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_bool_$",
                                    "typeString": "function (address,address,address,uint256[] memory,uint256[] memory) external returns (bool)"
                                  }
                                },
                                "id": 13832,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4386:118:33",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              {
                                "hexValue": "457874656e73696f6e20617070726f76616c206661696c757265",
                                "id": 13833,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4506:28:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_c3d60d7a20407b9f19afe96408b04a4d7e66044de3966b3dad84a73681c556f2",
                                  "typeString": "literal_string \"Extension approval failure\""
                                },
                                "value": "Extension approval failure"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_c3d60d7a20407b9f19afe96408b04a4d7e66044de3966b3dad84a73681c556f2",
                                  "typeString": "literal_string \"Extension approval failure\""
                                }
                              ],
                              "id": 13821,
                              "name": "require",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [
                                4294967278,
                                4294967278
                              ],
                              "referencedDeclaration": 4294967278,
                              "src": "4378:7:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                "typeString": "function (bool,string memory) pure"
                              }
                            },
                            "id": 13834,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4378:157:33",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 13835,
                          "nodeType": "ExpressionStatement",
                          "src": "4378:157:33"
                        }
                      ]
                    }
                  },
                  "id": 13838,
                  "nodeType": "IfStatement",
                  "src": "4077:469:33",
                  "trueBody": {
                    "id": 13814,
                    "nodeType": "Block",
                    "src": "4147:171:33",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "expression": {
                                    "id": 13804,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4294967281,
                                    "src": "4236:3:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 13805,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "4240:6:33",
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "src": "4236:10:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 13806,
                                  "name": "from",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13738,
                                  "src": "4248:4:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 13807,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13740,
                                  "src": "4254:2:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 13808,
                                  "name": "tokenIds",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13743,
                                  "src": "4258:8:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                {
                                  "id": 13809,
                                  "name": "amounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13746,
                                  "src": "4268:7:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  },
                                  {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                ],
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 13801,
                                      "name": "extension",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13758,
                                      "src": "4209:9:33",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 13800,
                                    "name": "IERC1155CreatorExtensionApproveTransfer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16055,
                                    "src": "4169:39:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC1155CreatorExtensionApproveTransfer_$16055_$",
                                      "typeString": "type(contract IERC1155CreatorExtensionApproveTransfer)"
                                    }
                                  },
                                  "id": 13802,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4169:50:33",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC1155CreatorExtensionApproveTransfer_$16055",
                                    "typeString": "contract IERC1155CreatorExtensionApproveTransfer"
                                  }
                                },
                                "id": 13803,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "4220:15:33",
                                "memberName": "approveTransfer",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 16054,
                                "src": "4169:66:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_bool_$",
                                  "typeString": "function (address,address,address,uint256[] memory,uint256[] memory) external returns (bool)"
                                }
                              },
                              "id": 13810,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4169:107:33",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "457874656e73696f6e20617070726f76616c206661696c757265",
                              "id": 13811,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4278:28:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c3d60d7a20407b9f19afe96408b04a4d7e66044de3966b3dad84a73681c556f2",
                                "typeString": "literal_string \"Extension approval failure\""
                              },
                              "value": "Extension approval failure"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c3d60d7a20407b9f19afe96408b04a4d7e66044de3966b3dad84a73681c556f2",
                                "typeString": "literal_string \"Extension approval failure\""
                              }
                            ],
                            "id": 13799,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              4294967278,
                              4294967278
                            ],
                            "referencedDeclaration": 4294967278,
                            "src": "4161:7:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 13812,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4161:146:33",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13813,
                        "nodeType": "ExpressionStatement",
                        "src": "4161:146:33"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": {
              "id": 13736,
              "nodeType": "StructuredDocumentation",
              "src": "3587:37:33",
              "text": " Approve a transfer"
            },
            "id": 13840,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_approveTransfer",
            "nameLocation": "3638:16:33",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 13747,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13738,
                  "mutability": "mutable",
                  "name": "from",
                  "nameLocation": "3663:4:33",
                  "nodeType": "VariableDeclaration",
                  "scope": 13840,
                  "src": "3655:12:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 13737,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3655:7:33",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13740,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "3677:2:33",
                  "nodeType": "VariableDeclaration",
                  "scope": 13840,
                  "src": "3669:10:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 13739,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3669:7:33",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13743,
                  "mutability": "mutable",
                  "name": "tokenIds",
                  "nameLocation": "3698:8:33",
                  "nodeType": "VariableDeclaration",
                  "scope": 13840,
                  "src": "3681:25:33",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 13741,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "3681:7:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 13742,
                    "nodeType": "ArrayTypeName",
                    "src": "3681:9:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13746,
                  "mutability": "mutable",
                  "name": "amounts",
                  "nameLocation": "3725:7:33",
                  "nodeType": "VariableDeclaration",
                  "scope": 13840,
                  "src": "3708:24:33",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 13744,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "3708:7:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 13745,
                    "nodeType": "ArrayTypeName",
                    "src": "3708:9:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3654:79:33"
            },
            "returnParameters": {
              "id": 13748,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3743:0:33"
            },
            "scope": 13854,
            "src": "3629:923:33",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "baseFunctions": [
              13472
            ],
            "body": {
              "id": 13852,
              "nodeType": "Block",
              "src": "4640:49:33",
              "statements": [
                {
                  "expression": {
                    "baseExpression": {
                      "id": 13848,
                      "name": "_tokensExtension",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13505,
                      "src": "4657:16:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                        "typeString": "mapping(uint256 => address)"
                      }
                    },
                    "id": 13850,
                    "indexExpression": {
                      "id": 13849,
                      "name": "tokenId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13842,
                      "src": "4674:7:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "4657:25:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 13847,
                  "id": 13851,
                  "nodeType": "Return",
                  "src": "4650:32:33"
                }
              ]
            },
            "id": 13853,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_tokenExtension",
            "nameLocation": "4567:15:33",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 13844,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "4614:8:33"
            },
            "parameters": {
              "id": 13843,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13842,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "4591:7:33",
                  "nodeType": "VariableDeclaration",
                  "scope": 13853,
                  "src": "4583:15:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 13841,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4583:7:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4582:17:33"
            },
            "returnParameters": {
              "id": 13847,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13846,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 13853,
                  "src": "4631:7:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 13845,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4631:7:33",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4630:9:33"
            },
            "scope": 13854,
            "src": "4558:131:33",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "scope": 13855,
        "src": "482:4209:33",
        "usedErrors": []
      }
    ],
    "src": "33:4658:33"
  },
  "compiler": {
    "name": "solc",
    "version": "0.8.19+commit.7dd6d404.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.4.12",
  "updatedAt": "2023-03-22T17:07:39.743Z",
  "devdoc": {
    "details": "Core ERC1155 creator implementation",
    "kind": "dev",
    "methods": {
      "blacklistExtension(address)": {
        "details": "blacklist an extension.  Can only be called by contract owner or admin. This function will destroy all ability to reference the metadata of any tokens created by the specified extension. It will also unregister the extension if needed. Returns True if removed, False if already removed."
      },
      "burn(address,uint256[],uint256[])": {
        "details": "burn tokens. Can only be called by token owner or approved address. On burn, calls back to the registered extension's onBurn method"
      },
      "getApproveTransfer()": {
        "details": "See {ICreatorCore-getApproveTransfer}."
      },
      "getExtensions()": {
        "details": "See {ICreatorCore-getExtensions}."
      },
      "getRoyalties(uint256)": {
        "details": "Get royalites of a token.  Returns list of receivers and basisPoints"
      },
      "mintBaseExisting(address[],uint256[],uint256[])": {
        "details": "batch mint existing token with no extension. Can only be called by an admin.",
        "params": {
          "amounts": "- Can be a single element array (all recipients get the same amount) or a multi-element array Requirements: If any of the parameters are multi-element arrays, they need to be the same length as other multi-element arrays Examples:    mintBaseExisting(['0x....1', '0x....2'], [1], [10])        Mints 10 of tokenId 1 to each of '0x....1' and '0x....2'.        mintBaseExisting(['0x....1', '0x....2'], [1, 2], [10, 20])        Mints 10 of tokenId 1 to '0x....1' and 20 of tokenId 2 to '0x....2'.        mintBaseExisting(['0x....1'], [1, 2], [10, 20])        Mints 10 of tokenId 1 and 20 of tokenId 2 to '0x....1'.        mintBaseExisting(['0x....1', '0x....2'], [1], [10, 20])        Mints 10 of tokenId 1 to '0x....1' and 20 of tokenId 1 to '0x....2'.    ",
          "to": "- Can be a single element array (all tokens go to same address) or multi-element array (single token to many recipients)",
          "tokenIds": "- Can be a single element array (all recipients get the same token) or a multi-element array"
        }
      },
      "mintBaseNew(address[],uint256[],string[])": {
        "details": "mint a token with no extension. Can only be called by an admin.",
        "params": {
          "amounts": "- Can be a single element array (all recipients get the same amount) or a multi-element array",
          "to": "- Can be a single element array (all tokens go to same address) or multi-element array (single token to many recipients)",
          "uris": "- If no elements, all tokens use the default uri.                   If any element is an empty string, the corresponding token uses the default uri. Requirements: If to is a multi-element array, then uris must be empty or single element array               If to is a multi-element array, then amounts must be a single element array or a multi-element array of the same size               If to is a single element array, uris must be empty or the same length as amounts Examples:    mintBaseNew(['0x....1', '0x....2'], [1], [])        Mints a single new token, and gives 1 each to '0x....1' and '0x....2'.  Token uses default uri.        mintBaseNew(['0x....1', '0x....2'], [1, 2], [])        Mints a single new token, and gives 1 to '0x....1' and 2 to '0x....2'.  Token uses default uri.        mintBaseNew(['0x....1'], [1, 2], [\"\", \"http://token2.com\"])        Mints two new tokens to '0x....1'. 1 of the first token, 2 of the second.  1st token uses default uri, second uses \"http://token2.com\".    "
        },
        "returns": {
          "_0": "Returns list of tokenIds minted"
        }
      },
      "mintExtensionExisting(address[],uint256[],uint256[])": {
        "details": "batch mint existing token from extension. Can only be called by a registered extension.",
        "params": {
          "amounts": "- Can be a single element array (all recipients get the same amount) or a multi-element array Requirements: If any of the parameters are multi-element arrays, they need to be the same length as other multi-element arrays Examples:    mintExtensionExisting(['0x....1', '0x....2'], [1], [10])        Mints 10 of tokenId 1 to each of '0x....1' and '0x....2'.        mintExtensionExisting(['0x....1', '0x....2'], [1, 2], [10, 20])        Mints 10 of tokenId 1 to '0x....1' and 20 of tokenId 2 to '0x....2'.        mintExtensionExisting(['0x....1'], [1, 2], [10, 20])        Mints 10 of tokenId 1 and 20 of tokenId 2 to '0x....1'.        mintExtensionExisting(['0x....1', '0x....2'], [1], [10, 20])        Mints 10 of tokenId 1 to '0x....1' and 20 of tokenId 1 to '0x....2'.    ",
          "to": "- Can be a single element array (all tokens go to same address) or multi-element array (single token to many recipients)",
          "tokenIds": "- Can be a single element array (all recipients get the same token) or a multi-element array"
        }
      },
      "mintExtensionNew(address[],uint256[],string[])": {
        "details": "mint a token from an extension. Can only be called by a registered extension.",
        "params": {
          "amounts": "- Can be a single element array (all recipients get the same amount) or a multi-element array",
          "to": "- Can be a single element array (all tokens go to same address) or multi-element array (single token to many recipients)",
          "uris": "- If no elements, all tokens use the default uri.                   If any element is an empty string, the corresponding token uses the default uri. Requirements: If to is a multi-element array, then uris must be empty or single element array               If to is a multi-element array, then amounts must be a single element array or a multi-element array of the same size               If to is a single element array, uris must be empty or the same length as amounts Examples:    mintExtensionNew(['0x....1', '0x....2'], [1], [])        Mints a single new token, and gives 1 each to '0x....1' and '0x....2'.  Token uses default uri.        mintExtensionNew(['0x....1', '0x....2'], [1, 2], [])        Mints a single new token, and gives 1 to '0x....1' and 2 to '0x....2'.  Token uses default uri.        mintExtensionNew(['0x....1'], [1, 2], [\"\", \"http://token2.com\"])        Mints two new tokens to '0x....1'. 1 of the first token, 2 of the second.  1st token uses default uri, second uses \"http://token2.com\".    "
        },
        "returns": {
          "_0": "Returns list of tokenIds minted"
        }
      },
      "registerExtension(address,string)": {
        "details": "add an extension.  Can only be called by contract owner or admin. extension address must point to a contract implementing ICreatorExtension. Returns True if newly added, False if already added."
      },
      "registerExtension(address,string,bool)": {
        "details": "add an extension.  Can only be called by contract owner or admin. extension address must point to a contract implementing ICreatorExtension. Returns True if newly added, False if already added."
      },
      "setApproveTransfer(address)": {
        "details": "Set the default approve transfer contract location."
      },
      "setApproveTransferExtension(bool)": {
        "details": "See {ICreatorCore-setApproveTransferExtension}."
      },
      "setBaseTokenURI(string)": {
        "details": "set the baseTokenURI for tokens with no extension.  Can only be called by owner/admin. For tokens with no uri configured, tokenURI will return \"uri+tokenId\""
      },
      "setBaseTokenURIExtension(string)": {
        "details": "set the baseTokenURI of an extension.  Can only be called by extension."
      },
      "setBaseTokenURIExtension(string,bool)": {
        "details": "set the baseTokenURI of an extension.  Can only be called by extension. For tokens with no uri configured, tokenURI will return \"uri+tokenId\""
      },
      "setMintPermissions(address,address)": {
        "details": "set a permissions contract for an extension.  Used to control minting."
      },
      "setRoyalties(address[],uint256[])": {
        "details": "Set default royalties"
      },
      "setRoyalties(uint256,address[],uint256[])": {
        "details": "Set royalties of a token"
      },
      "setRoyaltiesExtension(address,address[],uint256[])": {
        "details": "Set royalties of an extension"
      },
      "setTokenURI(uint256,string)": {
        "details": "set the tokenURI of a token with no extension.  Can only be called by owner/admin."
      },
      "setTokenURI(uint256[],string[])": {
        "details": "set the tokenURI of multiple tokens with no extension.  Can only be called by owner/admin."
      },
      "setTokenURIExtension(uint256,string)": {
        "details": "set the tokenURI of a token extension.  Can only be called by extension that minted token."
      },
      "setTokenURIExtension(uint256[],string[])": {
        "details": "set the tokenURI of a token extension for multiple tokens.  Can only be called by extension that minted token."
      },
      "setTokenURIPrefix(string)": {
        "details": "set the common prefix for tokens with no extension.  Can only be called by owner/admin. If configured, and a token has a uri set, tokenURI will return \"prefixURI+tokenURI\" Useful if you want to use ipfs/arweave"
      },
      "setTokenURIPrefixExtension(string)": {
        "details": "set the common prefix of an extension.  Can only be called by extension. If configured, and a token has a uri set, tokenURI will return \"prefixURI+tokenURI\" Useful if you want to use ipfs/arweave"
      },
      "supportsInterface(bytes4)": {
        "details": "See {IERC165-supportsInterface}."
      },
      "tokenExtension(uint256)": {
        "details": "get the extension of a given token"
      },
      "totalSupply(uint256)": {
        "details": "Total amount of tokens in with a given tokenId."
      },
      "unregisterExtension(address)": {
        "details": "add an extension.  Can only be called by contract owner or admin. Returns True if removed, False if already removed."
      }
    },
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {},
    "version": 1
  }
}