{ "abi": [ { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "previousAdminRole", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "newAdminRole", "type": "bytes32" } ], "name": "RoleAdminChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleGranted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleRevoked", "type": "event" }, { "inputs": [], "name": "COLLECTION_CONTROLLER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "COLLECTION_OWNER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleAdmin", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "grantRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "hasRole", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "renounceRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "revokeRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" } ], "bytecode": { "object": "0x", "sourceMap": "", "linkReferences": {} }, "deployedBytecode": { "object": "0x", "sourceMap": "", "linkReferences": {} }, "methodIdentifiers": { "COLLECTION_CONTROLLER_ROLE()": "e46f29c8", "COLLECTION_OWNER_ROLE()": "98b70793", "DEFAULT_ADMIN_ROLE()": "a217fddf", "getRoleAdmin(bytes32)": "248a9ca3", "grantRole(bytes32,address)": "2f2ff15d", "hasRole(bytes32,address)": "91d14854", "renounceRole(bytes32,address)": "36568abe", "revokeRole(bytes32,address)": "d547741f", "supportsInterface(bytes4)": "01ffc9a7" }, "rawMetadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"COLLECTION_CONTROLLER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"COLLECTION_OWNER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/FleekAccessControl.sol\":\"FleekAccessControl\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eth-gas-reporter/=node_modules/eth-gas-reporter/\",\":forge-std/=lib/forge-std/src/\",\":hardhat-deploy/=node_modules/hardhat-deploy/\",\":hardhat/=node_modules/hardhat/\"],\"viaIR\":true},\"sources\":{\"contracts/FleekAccessControl.sol\":{\"keccak256\":\"0x40cbb25741c2d6e285ab2ccee87f38fab424ce3746a17bca274a23c098f5e5c6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f9d495490984bf70d90d9f48d9fbee2480f62b8d796d2b5cd623ff3ee632e47a\",\"dweb:/ipfs/QmXuMpMizsvU1QiEDD3cqs1wen9pdSqSNBeSb112pQDpKd\"]},\"node_modules/@openzeppelin/contracts/access/AccessControl.sol\":{\"keccak256\":\"0x67e3daf189111d6d5b0464ed09cf9f0605a22c4b965a7fcecd707101faff008a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cbbb1a75e4064d564bf69e74970eef35064e51fcc09cbf3589aee7faa60d6afe\",\"dweb:/ipfs/QmYfAtQwFSGmxomnyAV3tpBDbfDwiFXV61osWW2zzQVg5Q\"]},\"node_modules/@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb2c137c343ef0c4c7ce7b18c1d108afdc9d315a04e48307288d2d05adcbde3a\",\"dweb:/ipfs/QmUxhrAQM3MM3FF5j7AtcXLXguWCJBHJ14BRdVtuoQc8Fh\"]},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"node_modules/@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0xa4d1d62251f8574deb032a35fc948386a9b4de74b812d4f545a1ac120486b48a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c969013129ba9e651a20735ef659fef6d8a1139ea3607bd4b26ddea2d645634\",\"dweb:/ipfs/QmVhVa6LGuzAcB8qgDtVHRkucn4ihj5UZr8xBLcJkP6ucb\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"node_modules/@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa1e8e83cd0087785df04ac79fb395d9f3684caeaf973d9e2c71caef723a3a5d6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33bbf48cc069be677705037ba7520c22b1b622c23b33e1a71495f2d36549d40b\",\"dweb:/ipfs/Qmct36zWXv3j7LZB83uwbg7TXwnZSN1fqHNDZ93GG98bGz\"]}},\"version\":1}", "metadata": { "compiler": { "version": "0.8.17+commit.8df45f5f" }, "language": "Solidity", "output": { "abi": [ { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32", "indexed": true }, { "internalType": "bytes32", "name": "previousAdminRole", "type": "bytes32", "indexed": true }, { "internalType": "bytes32", "name": "newAdminRole", "type": "bytes32", "indexed": true } ], "type": "event", "name": "RoleAdminChanged", "anonymous": false }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32", "indexed": true }, { "internalType": "address", "name": "account", "type": "address", "indexed": true }, { "internalType": "address", "name": "sender", "type": "address", "indexed": true } ], "type": "event", "name": "RoleGranted", "anonymous": false }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32", "indexed": true }, { "internalType": "address", "name": "account", "type": "address", "indexed": true }, { "internalType": "address", "name": "sender", "type": "address", "indexed": true } ], "type": "event", "name": "RoleRevoked", "anonymous": false }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "COLLECTION_CONTROLLER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "COLLECTION_OWNER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ] }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "stateMutability": "view", "type": "function", "name": "getRoleAdmin", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ] }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "stateMutability": "nonpayable", "type": "function", "name": "grantRole" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "stateMutability": "view", "type": "function", "name": "hasRole", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ] }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "stateMutability": "nonpayable", "type": "function", "name": "renounceRole" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "stateMutability": "nonpayable", "type": "function", "name": "revokeRole" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "stateMutability": "view", "type": "function", "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ] } ], "devdoc": { "kind": "dev", "methods": { "getRoleAdmin(bytes32)": { "details": "Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}." }, "grantRole(bytes32,address)": { "details": "Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event." }, "hasRole(bytes32,address)": { "details": "Returns `true` if `account` has been granted `role`." }, "renounceRole(bytes32,address)": { "details": "Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`. May emit a {RoleRevoked} event." }, "revokeRole(bytes32,address)": { "details": "Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event." }, "supportsInterface(bytes4)": { "details": "See {IERC165-supportsInterface}." } }, "version": 1 }, "userdoc": { "kind": "user", "methods": {}, "version": 1 } }, "settings": { "remappings": [ ":@ensdomains/=node_modules/@ensdomains/", ":@openzeppelin/=node_modules/@openzeppelin/", ":ds-test/=lib/forge-std/lib/ds-test/src/", ":eth-gas-reporter/=node_modules/eth-gas-reporter/", ":forge-std/=lib/forge-std/src/", ":hardhat-deploy/=node_modules/hardhat-deploy/", ":hardhat/=node_modules/hardhat/" ], "optimizer": { "enabled": true, "runs": 200 }, "metadata": { "bytecodeHash": "ipfs" }, "compilationTarget": { "contracts/FleekAccessControl.sol": "FleekAccessControl" }, "libraries": {}, "viaIR": true }, "sources": { "contracts/FleekAccessControl.sol": { "keccak256": "0x40cbb25741c2d6e285ab2ccee87f38fab424ce3746a17bca274a23c098f5e5c6", "urls": [ "bzz-raw://f9d495490984bf70d90d9f48d9fbee2480f62b8d796d2b5cd623ff3ee632e47a", "dweb:/ipfs/QmXuMpMizsvU1QiEDD3cqs1wen9pdSqSNBeSb112pQDpKd" ], "license": "MIT" }, "node_modules/@openzeppelin/contracts/access/AccessControl.sol": { "keccak256": "0x67e3daf189111d6d5b0464ed09cf9f0605a22c4b965a7fcecd707101faff008a", "urls": [ "bzz-raw://cbbb1a75e4064d564bf69e74970eef35064e51fcc09cbf3589aee7faa60d6afe", "dweb:/ipfs/QmYfAtQwFSGmxomnyAV3tpBDbfDwiFXV61osWW2zzQVg5Q" ], "license": "MIT" }, "node_modules/@openzeppelin/contracts/access/IAccessControl.sol": { "keccak256": "0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57", "urls": [ "bzz-raw://bb2c137c343ef0c4c7ce7b18c1d108afdc9d315a04e48307288d2d05adcbde3a", "dweb:/ipfs/QmUxhrAQM3MM3FF5j7AtcXLXguWCJBHJ14BRdVtuoQc8Fh" ], "license": "MIT" }, "node_modules/@openzeppelin/contracts/utils/Context.sol": { "keccak256": "0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7", "urls": [ "bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92", "dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3" ], "license": "MIT" }, "node_modules/@openzeppelin/contracts/utils/Strings.sol": { "keccak256": "0xa4d1d62251f8574deb032a35fc948386a9b4de74b812d4f545a1ac120486b48a", "urls": [ "bzz-raw://8c969013129ba9e651a20735ef659fef6d8a1139ea3607bd4b26ddea2d645634", "dweb:/ipfs/QmVhVa6LGuzAcB8qgDtVHRkucn4ihj5UZr8xBLcJkP6ucb" ], "license": "MIT" }, "node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol": { "keccak256": "0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b", "urls": [ "bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d", "dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43" ], "license": "MIT" }, "node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol": { "keccak256": "0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1", "urls": [ "bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f", "dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy" ], "license": "MIT" }, "node_modules/@openzeppelin/contracts/utils/math/Math.sol": { "keccak256": "0xa1e8e83cd0087785df04ac79fb395d9f3684caeaf973d9e2c71caef723a3a5d6", "urls": [ "bzz-raw://33bbf48cc069be677705037ba7520c22b1b622c23b33e1a71495f2d36549d40b", "dweb:/ipfs/Qmct36zWXv3j7LZB83uwbg7TXwnZSN1fqHNDZ93GG98bGz" ], "license": "MIT" } }, "version": 1 }, "ast": { "absolutePath": "contracts/FleekAccessControl.sol", "id": 100, "exportedSymbols": { "AccessControl": [ 25701 ], "Context": [ 27279 ], "ERC165": [ 27552 ], "FleekAccessControl": [ 99 ], "IAccessControl": [ 25774 ], "IERC165": [ 27564 ], "Math": [ 28429 ], "Strings": [ 27528 ] }, "nodeType": "SourceUnit", "src": "35:1450:0", "nodes": [ { "id": 1, "nodeType": "PragmaDirective", "src": "35:23:0", "nodes": [], "literals": [ "solidity", "^", "0.8", ".7" ] }, { "id": 2, "nodeType": "ImportDirective", "src": "62:58:0", "nodes": [], "absolutePath": "node_modules/@openzeppelin/contracts/access/AccessControl.sol", "file": "@openzeppelin/contracts/access/AccessControl.sol", "nameLocation": "-1:-1:-1", "scope": 100, "sourceUnit": 25702, "symbolAliases": [], "unitAlias": "" }, { "id": 99, "nodeType": "ContractDefinition", "src": "124:1359:0", "nodes": [ { "id": 9, "nodeType": "VariableDeclaration", "src": "185:91:0", "nodes": [], "constant": true, "functionSelector": "98b70793", "mutability": "constant", "name": "COLLECTION_OWNER_ROLE", "nameLocation": "209:21:0", "scope": 99, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 5, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "185:7:0", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": { "arguments": [ { "hexValue": "434f4c4c454354494f4e5f4f574e45525f524f4c45", "id": 7, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "252:23:0", "typeDescriptions": { "typeIdentifier": "t_stringliteral_cac50f86c292f6863f130b9e1133a5f875e8e957fed41745b8fa2498550cbdfc", "typeString": "literal_string \"COLLECTION_OWNER_ROLE\"" }, "value": "COLLECTION_OWNER_ROLE" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_stringliteral_cac50f86c292f6863f130b9e1133a5f875e8e957fed41745b8fa2498550cbdfc", "typeString": "literal_string \"COLLECTION_OWNER_ROLE\"" } ], "id": 6, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "242:9:0", "typeDescriptions": { "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)" } }, "id": 8, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "242:34:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "visibility": "public" }, { "id": 14, "nodeType": "VariableDeclaration", "src": "283:101:0", "nodes": [], "constant": true, "functionSelector": "e46f29c8", "mutability": "constant", "name": "COLLECTION_CONTROLLER_ROLE", "nameLocation": "307:26:0", "scope": 99, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 10, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "283:7:0", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": { "arguments": [ { "hexValue": "434f4c4c454354494f4e5f434f4e54524f4c4c45525f524f4c45", "id": 12, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "355:28:0", "typeDescriptions": { "typeIdentifier": "t_stringliteral_54812023c8fe13756580f3420840aeb566f69714bea27346e22e4c654756d77e", "typeString": "literal_string \"COLLECTION_CONTROLLER_ROLE\"" }, "value": "COLLECTION_CONTROLLER_ROLE" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_stringliteral_54812023c8fe13756580f3420840aeb566f69714bea27346e22e4c654756d77e", "typeString": "literal_string \"COLLECTION_CONTROLLER_ROLE\"" } ], "id": 11, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "345:9:0", "typeDescriptions": { "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)" } }, "id": 13, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "345:39:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "visibility": "public" }, { "id": 29, "nodeType": "FunctionDefinition", "src": "393:145:0", "nodes": [], "body": { "id": 28, "nodeType": "Block", "src": "407:131:0", "nodes": [], "statements": [ { "expression": { "arguments": [ { "id": 18, "name": "COLLECTION_OWNER_ROLE", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9, "src": "432:21:0", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { "id": 19, "name": "DEFAULT_ADMIN_ROLE", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 25413, "src": "455:18:0", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } ], "id": 17, "name": "_setRoleAdmin", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 25637, "src": "418:13:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$", "typeString": "function (bytes32,bytes32)" } }, "id": 20, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "418:56:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 21, "nodeType": "ExpressionStatement", "src": "418:56:0" }, { "expression": { "arguments": [ { "id": 23, "name": "COLLECTION_OWNER_ROLE", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9, "src": "496:21:0", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { "expression": { "id": 24, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "519:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 25, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "523:6:0", "memberName": "sender", "nodeType": "MemberAccess", "src": "519:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 22, "name": "_grantRole", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 25669, "src": "485:10:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", "typeString": "function (bytes32,address)" } }, "id": 26, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "485:45:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 27, "nodeType": "ExpressionStatement", "src": "485:45:0" } ] }, "implemented": true, "kind": "constructor", "modifiers": [], "name": "", "nameLocation": "-1:-1:-1", "parameters": { "id": 15, "nodeType": "ParameterList", "parameters": [], "src": "404:2:0" }, "returnParameters": { "id": 16, "nodeType": "ParameterList", "parameters": [], "src": "407:0:0" }, "scope": 99, "stateMutability": "nonpayable", "virtual": false, "visibility": "internal" }, { "id": 42, "nodeType": "ModifierDefinition", "src": "546:208:0", "nodes": [], "body": { "id": 41, "nodeType": "Block", "src": "580:174:0", "nodes": [], "statements": [ { "expression": { "arguments": [ { "arguments": [ { "id": 33, "name": "COLLECTION_OWNER_ROLE", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9, "src": "621:21:0", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { "expression": { "id": 34, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "644:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 35, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "648:6:0", "memberName": "sender", "nodeType": "MemberAccess", "src": "644:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 32, "name": "hasRole", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 25465, "src": "613:7:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", "typeString": "function (bytes32,address) view returns (bool)" } }, "id": 36, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "613:42:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "hexValue": "466c65656b416363657373436f6e74726f6c3a206d757374206861766520636f6c6c656374696f6e206f776e657220726f6c65", "id": 37, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "670:53:0", "typeDescriptions": { "typeIdentifier": "t_stringliteral_e2f7bcd861b8b3babe383a057d0db9e517e2e430c25c479d92792ad042f2a71d", "typeString": "literal_string \"FleekAccessControl: must have collection owner role\"" }, "value": "FleekAccessControl: must have collection owner role" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_e2f7bcd861b8b3babe383a057d0db9e517e2e430c25c479d92792ad042f2a71d", "typeString": "literal_string \"FleekAccessControl: must have collection owner role\"" } ], "id": 31, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "591:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 38, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "591:143:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 39, "nodeType": "ExpressionStatement", "src": "591:143:0" }, { "id": 40, "nodeType": "PlaceholderStatement", "src": "745:1:0" } ] }, "name": "requireCollectionOwner", "nameLocation": "555:22:0", "parameters": { "id": 30, "nodeType": "ParameterList", "parameters": [], "src": "577:2:0" }, "virtual": false, "visibility": "internal" }, { "id": 61, "nodeType": "ModifierDefinition", "src": "762:286:0", "nodes": [], "body": { "id": 60, "nodeType": "Block", "src": "801:247:0", "nodes": [], "statements": [ { "expression": { "arguments": [ { "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 55, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "arguments": [ { "id": 46, "name": "COLLECTION_OWNER_ROLE", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9, "src": "842:21:0", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { "expression": { "id": 47, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "865:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 48, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "869:6:0", "memberName": "sender", "nodeType": "MemberAccess", "src": "865:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 45, "name": "hasRole", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 25465, "src": "834:7:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", "typeString": "function (bytes32,address) view returns (bool)" } }, "id": 49, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "834:42:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": { "arguments": [ { "id": 51, "name": "COLLECTION_CONTROLLER_ROLE", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 14, "src": "905:26:0", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { "expression": { "id": 52, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "933:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 53, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "937:6:0", "memberName": "sender", "nodeType": "MemberAccess", "src": "933:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 50, "name": "hasRole", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 25465, "src": "897:7:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", "typeString": "function (bytes32,address) view returns (bool)" } }, "id": 54, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "897:47:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "834:110:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "hexValue": "466c65656b416363657373436f6e74726f6c3a206d757374206861766520636f6c6c656374696f6e20636f6e74726f6c6c657220726f6c65", "id": 56, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "959:58:0", "typeDescriptions": { "typeIdentifier": "t_stringliteral_d6b0aded1501cd73a889058ce8d87aee71b2004894f8c7b6a24c4f7f9bd59c1e", "typeString": "literal_string \"FleekAccessControl: must have collection controller role\"" }, "value": "FleekAccessControl: must have collection controller role" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_d6b0aded1501cd73a889058ce8d87aee71b2004894f8c7b6a24c4f7f9bd59c1e", "typeString": "literal_string \"FleekAccessControl: must have collection controller role\"" } ], "id": 44, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "812:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 57, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "812:216:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 58, "nodeType": "ExpressionStatement", "src": "812:216:0" }, { "id": 59, "nodeType": "PlaceholderStatement", "src": "1039:1:0" } ] }, "name": "requireCollectionController", "nameLocation": "771:27:0", "parameters": { "id": 43, "nodeType": "ParameterList", "parameters": [], "src": "798:2:0" }, "virtual": false, "visibility": "internal" }, { "id": 79, "nodeType": "ModifierDefinition", "src": "1056:224:0", "nodes": [], "body": { "id": 78, "nodeType": "Block", "src": "1105:175:0", "nodes": [], "statements": [ { "expression": { "arguments": [ { "arguments": [ { "arguments": [ { "id": 68, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 63, "src": "1157:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "hexValue": "434f4e54524f4c4c4552", "id": 69, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1166:12:0", "typeDescriptions": { "typeIdentifier": "t_stringliteral_70546d1c92f8c2132ae23a23f5177aa8526356051c7510df99f50e012d221529", "typeString": "literal_string \"CONTROLLER\"" }, "value": "CONTROLLER" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_stringliteral_70546d1c92f8c2132ae23a23f5177aa8526356051c7510df99f50e012d221529", "typeString": "literal_string \"CONTROLLER\"" } ], "id": 67, "name": "_tokenRole", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 98, "src": "1146:10:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (uint256,string memory) pure returns (bytes32)" } }, "id": 70, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1146:33:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { "expression": { "id": 71, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1181:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 72, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1185:6:0", "memberName": "sender", "nodeType": "MemberAccess", "src": "1181:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 66, "name": "hasRole", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 25465, "src": "1138:7:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", "typeString": "function (bytes32,address) view returns (bool)" } }, "id": 73, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1138:54:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "hexValue": "466c65656b416363657373436f6e74726f6c3a206d757374206861766520746f6b656e20726f6c65", "id": 74, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1207:42:0", "typeDescriptions": { "typeIdentifier": "t_stringliteral_eb1c0c9ae9b08acb80c4120d36170cdc2082e24234001d93bd98c02d4e707db0", "typeString": "literal_string \"FleekAccessControl: must have token role\"" }, "value": "FleekAccessControl: must have token role" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_eb1c0c9ae9b08acb80c4120d36170cdc2082e24234001d93bd98c02d4e707db0", "typeString": "literal_string \"FleekAccessControl: must have token role\"" } ], "id": 65, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "1116:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 75, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1116:144:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 76, "nodeType": "ExpressionStatement", "src": "1116:144:0" }, { "id": 77, "nodeType": "PlaceholderStatement", "src": "1271:1:0" } ] }, "name": "requireTokenController", "nameLocation": "1065:22:0", "parameters": { "id": 64, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 63, "mutability": "mutable", "name": "tokenId", "nameLocation": "1096:7:0", "nodeType": "VariableDeclaration", "scope": 79, "src": "1088:15:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 62, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1088:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "1087:17:0" }, "virtual": false, "visibility": "internal" }, { "id": 98, "nodeType": "FunctionDefinition", "src": "1288:192:0", "nodes": [], "body": { "id": 97, "nodeType": "Block", "src": "1402:78:0", "nodes": [], "statements": [ { "expression": { "arguments": [ { "arguments": [ { "hexValue": "544f4b454e5f", "id": 91, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1447:8:0", "typeDescriptions": { "typeIdentifier": "t_stringliteral_60fbc03782a83adba6f0b2ae8b4d00c4465601a7a067bfaf89aa8f782a4226a4", "typeString": "literal_string \"TOKEN_\"" }, "value": "TOKEN_" }, { "id": 92, "name": "role", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 83, "src": "1457:4:0", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } }, { "id": 93, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 81, "src": "1463:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_stringliteral_60fbc03782a83adba6f0b2ae8b4d00c4465601a7a067bfaf89aa8f782a4226a4", "typeString": "literal_string \"TOKEN_\"" }, { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 89, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "1430:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, "id": 90, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "1434:12:0", "memberName": "encodePacked", "nodeType": "MemberAccess", "src": "1430:16:0", "typeDescriptions": { "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)" } }, "id": 94, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1430:41:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } ], "id": 88, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "1420:9:0", "typeDescriptions": { "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)" } }, "id": 95, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1420:52:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "functionReturnParameters": 87, "id": 96, "nodeType": "Return", "src": "1413:59:0" } ] }, "implemented": true, "kind": "function", "modifiers": [], "name": "_tokenRole", "nameLocation": "1297:10:0", "parameters": { "id": 84, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 81, "mutability": "mutable", "name": "tokenId", "nameLocation": "1326:7:0", "nodeType": "VariableDeclaration", "scope": 98, "src": "1318:15:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 80, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1318:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }, { "constant": false, "id": 83, "mutability": "mutable", "name": "role", "nameLocation": "1358:4:0", "nodeType": "VariableDeclaration", "scope": 98, "src": "1344:18:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { "id": 82, "name": "string", "nodeType": "ElementaryTypeName", "src": "1344:6:0", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "visibility": "internal" } ], "src": "1307:62:0" }, "returnParameters": { "id": 87, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 86, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 98, "src": "1393:7:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 85, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1393:7:0", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "visibility": "internal" } ], "src": "1392:9:0" }, "scope": 99, "stateMutability": "pure", "virtual": false, "visibility": "internal" } ], "abstract": true, "baseContracts": [ { "baseName": { "id": 3, "name": "AccessControl", "nameLocations": [ "164:13:0" ], "nodeType": "IdentifierPath", "referencedDeclaration": 25701, "src": "164:13:0" }, "id": 4, "nodeType": "InheritanceSpecifier", "src": "164:13:0" } ], "canonicalName": "FleekAccessControl", "contractDependencies": [], "contractKind": "contract", "fullyImplemented": true, "linearizedBaseContracts": [ 99, 25701, 27552, 27564, 25774, 27279 ], "name": "FleekAccessControl", "nameLocation": "142:18:0", "scope": 100, "usedErrors": [] } ], "license": "MIT" }, "id": 0 }