[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "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" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [], "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MINT_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "burnFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "subtractedValue", "type": "uint256" } ], "name": "decreaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "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": "uint256", "name": "index", "type": "uint256" } ], "name": "getRoleMember", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleMemberCount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "addedValue", "type": "uint256" } ], "name": "increaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "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" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" } ]
60806040523480156200001157600080fd5b5060408051808201825260078082526670724348414f5360c81b6020808401828152855180870190965292855284015281519192916200005491600391620001eb565b5080516200006a906004906020840190620001eb565b506200007c9150600090503362000082565b620002ce565b6200008e828262000092565b5050565b620000a98282620000d560201b6200070e1760201c565b6000828152600660209081526040909120620000d09183906200079462000179821b17901c565b505050565b60008281526005602090815260408083206001600160a01b038516845290915290205460ff166200008e5760008281526005602090815260408083206001600160a01b03851684529091529020805460ff19166001179055620001353390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600062000190836001600160a01b03841662000199565b90505b92915050565b6000818152600183016020526040812054620001e25750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562000193565b50600062000193565b828054620001f99062000291565b90600052602060002090601f0160209004810192826200021d576000855562000268565b82601f106200023857805160ff191683800117855562000268565b8280016001018555821562000268579182015b82811115620002685782518255916020019190600101906200024b565b50620002769291506200027a565b5090565b5b808211156200027657600081556001016200027b565b600181811c90821680620002a657607f821691505b60208210811415620002c857634e487b7160e01b600052602260045260246000fd5b50919050565b61155e80620002de6000396000f3fe608060405234801561001057600080fd5b50600436106101585760003560e01c806370a08231116100c3578063a457c2d71161007c578063a457c2d7146102ef578063a9059cbb14610302578063ca15c87314610315578063d547741f14610328578063dd62ed3e1461033b578063e9a9c8501461037457600080fd5b806370a082311461026557806379cc67901461028e5780639010d07c146102a157806391d14854146102cc57806395d89b41146102df578063a217fddf146102e757600080fd5b80632f2ff15d116101155780632f2ff15d146101f5578063313ce5671461020a57806336568abe14610219578063395093511461022c57806340c10f191461023f57806342966c681461025257600080fd5b806301ffc9a71461015d57806306fdde0314610185578063095ea7b31461019a57806318160ddd146101ad57806323b872dd146101bf578063248a9ca3146101d2575b600080fd5b61017061016b366004611376565b61039b565b60405190151581526020015b60405180910390f35b61018d6103c6565b60405161017c9190611413565b6101706101a83660046112f2565b610458565b6002545b60405190815260200161017c565b6101706101cd3660046112b7565b610470565b6101b16101e036600461131b565b60009081526005602052604090206001015490565b610208610203366004611333565b610494565b005b6040516012815260200161017c565b610208610227366004611333565b6104bf565b61017061023a3660046112f2565b610542565b61020861024d3660046112f2565b610581565b61020861026036600461131b565b6105b6565b6101b161027336600461126b565b6001600160a01b031660009081526020819052604090205490565b61020861029c3660046112f2565b6105c3565b6102b46102af366004611355565b6105d8565b6040516001600160a01b03909116815260200161017c565b6101706102da366004611333565b6105f7565b61018d610622565b6101b1600081565b6101706102fd3660046112f2565b610631565b6101706103103660046112f2565b6106c3565b6101b161032336600461131b565b6106d1565b610208610336366004611333565b6106e8565b6101b1610349366004611285565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6101b17f154c00819833dac601ee5ddded6fda79d9d8b506b911b3dbd54cdb95fe6c368681565b60006001600160e01b03198216635a05180f60e01b14806103c057506103c0826107a9565b92915050565b6060600380546103d5906114d7565b80601f0160208091040260200160405190810160405280929190818152602001828054610401906114d7565b801561044e5780601f106104235761010080835404028352916020019161044e565b820191906000526020600020905b81548152906001019060200180831161043157829003601f168201915b5050505050905090565b6000336104668185856107de565b5060019392505050565b60003361047e858285610902565b610489858585610994565b506001949350505050565b6000828152600560205260409020600101546104b08133610b62565b6104ba8383610bc6565b505050565b6001600160a01b03811633146105345760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b61053e8282610be8565b5050565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909190610466908290869061057c908790611446565b6107de565b7f154c00819833dac601ee5ddded6fda79d9d8b506b911b3dbd54cdb95fe6c36866105ac8133610b62565b6104ba8383610c0a565b6105c03382610ce9565b50565b6105ce823383610902565b61053e8282610ce9565b60008281526006602052604081206105f09083610e37565b9392505050565b60009182526005602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6060600480546103d5906114d7565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909190838110156106b65760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161052b565b61048982868684036107de565b600033610466818585610994565b60008181526006602052604081206103c090610e43565b6000828152600560205260409020600101546107048133610b62565b6104ba8383610be8565b61071882826105f7565b61053e5760008281526005602090815260408083206001600160a01b03851684529091529020805460ff191660011790556107503390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60006105f0836001600160a01b038416610e4d565b60006001600160e01b03198216637965db0b60e01b14806103c057506301ffc9a760e01b6001600160e01b03198316146103c0565b6001600160a01b0383166108405760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161052b565b6001600160a01b0382166108a15760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161052b565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03838116600090815260016020908152604080832093861683529290522054600019811461098e57818110156109815760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161052b565b61098e84848484036107de565b50505050565b6001600160a01b0383166109f85760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161052b565b6001600160a01b038216610a5a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161052b565b6001600160a01b03831660009081526020819052604090205481811015610ad25760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161052b565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290610b09908490611446565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610b5591815260200190565b60405180910390a361098e565b610b6c82826105f7565b61053e57610b84816001600160a01b03166014610e9c565b610b8f836020610e9c565b604051602001610ba092919061139e565b60408051601f198184030181529082905262461bcd60e51b825261052b91600401611413565b610bd0828261070e565b60008281526006602052604090206104ba9082610794565b610bf2828261107e565b60008281526006602052604090206104ba90826110e5565b6001600160a01b038216610c605760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161052b565b8060026000828254610c729190611446565b90915550506001600160a01b03821660009081526020819052604081208054839290610c9f908490611446565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b038216610d495760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161052b565b6001600160a01b03821660009081526020819052604090205481811015610dbd5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161052b565b6001600160a01b0383166000908152602081905260408120838303905560028054849290610dec90849061147d565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b60006105f083836110fa565b60006103c0825490565b6000818152600183016020526040812054610e94575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556103c0565b5060006103c0565b60606000610eab83600261145e565b610eb6906002611446565b67ffffffffffffffff811115610edc57634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015610f06576020820181803683370190505b509050600360fc1b81600081518110610f2f57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110610f6c57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a9053506000610f9084600261145e565b610f9b906001611446565b90505b600181111561102f576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110610fdd57634e487b7160e01b600052603260045260246000fd5b1a60f81b82828151811061100157634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a90535060049490941c93611028816114c0565b9050610f9e565b5083156105f05760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161052b565b61108882826105f7565b1561053e5760008281526005602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60006105f0836001600160a01b038416611132565b600082600001828154811061111f57634e487b7160e01b600052603260045260246000fd5b9060005260206000200154905092915050565b6000818152600183016020526040812054801561124557600061115660018361147d565b855490915060009061116a9060019061147d565b90508181146111eb57600086600001828154811061119857634e487b7160e01b600052603260045260246000fd5b90600052602060002001549050808760000184815481106111c957634e487b7160e01b600052603260045260246000fd5b6000918252602080832090910192909255918252600188019052604090208390555b855486908061120a57634e487b7160e01b600052603160045260246000fd5b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506103c0565b60009150506103c0565b80356001600160a01b038116811461126657600080fd5b919050565b60006020828403121561127c578081fd5b6105f08261124f565b60008060408385031215611297578081fd5b6112a08361124f565b91506112ae6020840161124f565b90509250929050565b6000806000606084860312156112cb578081fd5b6112d48461124f565b92506112e26020850161124f565b9150604084013590509250925092565b60008060408385031215611304578182fd5b61130d8361124f565b946020939093013593505050565b60006020828403121561132c578081fd5b5035919050565b60008060408385031215611345578182fd5b823591506112ae6020840161124f565b60008060408385031215611367578182fd5b50508035926020909101359150565b600060208284031215611387578081fd5b81356001600160e01b0319811681146105f0578182fd5b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516113d6816017850160208801611494565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351611407816028840160208801611494565b01602801949350505050565b6020815260008251806020840152611432816040850160208701611494565b601f01601f19169190910160400192915050565b6000821982111561145957611459611512565b500190565b600081600019048311821515161561147857611478611512565b500290565b60008282101561148f5761148f611512565b500390565b60005b838110156114af578181015183820152602001611497565b8381111561098e5750506000910152565b6000816114cf576114cf611512565b506000190190565b600181811c908216806114eb57607f821691505b6020821081141561150c57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fdfea2646970667358221220e8ef31142725ccf8e4335bd8f162301a83055485b4a1bd47128ea7e49155772b64736f6c63430008040033