[ { "inputs": [ { "internalType": "contract RoleStore", "name": "_roleStore", "type": "address" }, { "internalType": "contract DataStore", "name": "_dataStore", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "EmptyHoldingAddress", "type": "error" }, { "inputs": [], "name": "EmptyReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" } ], "name": "EmptyTokenTranferGasLimit", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "msgSender", "type": "address" } ], "name": "InvalidNativeTokenSender", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "SelfTransferNotSupported", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" }, { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "TokenTransferError", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "msgSender", "type": "address" }, { "internalType": "string", "name": "role", "type": "string" } ], "name": "Unauthorized", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "dataStore", "outputs": [ { "internalType": "contract DataStore", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "subtractedValue", "type": "uint256" } ], "name": "decreaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "addedValue", "type": "uint256" } ], "name": "increaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "roleStore", "outputs": [ { "internalType": "contract RoleStore", "name": "", "type": "address" } ], "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" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" }, { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferOut", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" }, { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "bool", "name": "shouldUnwrapNativeToken", "type": "bool" } ], "name": "transferOut", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferOutNativeToken", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
60c06040523480156200001157600080fd5b5060405162001c5f38038062001c5f8339810160408190526200003491620000cd565b8181816040518060400160405280600a81526020016911d3560813585c9ad95d60b21b81525060405180604001604052806002815260200161474d60f01b8152508160039081620000869190620001b1565b506004620000958282620001b1565b5050506001600160a01b039081166080521660a052506200027d915050565b6001600160a01b0381168114620000ca57600080fd5b50565b60008060408385031215620000e157600080fd5b8251620000ee81620000b4565b60208401519092506200010181620000b4565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200013757607f821691505b6020821081036200015857634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620001ac57600081815260208120601f850160051c81016020861015620001875750805b601f850160051c820191505b81811015620001a85782815560010162000193565b5050505b505050565b81516001600160401b03811115620001cd57620001cd6200010c565b620001e581620001de845462000122565b846200015e565b602080601f8311600181146200021d5760008415620002045750858301515b600019600386901b1c1916600185901b178555620001a8565b600085815260208120601f198616915b828110156200024e578886015182559484019460019091019084016200022d565b50858210156200026d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a051611993620002cc6000396000818160e9015281816102d3015281816105da01528181610754015281816108900152610c4101526000818161029201526107c701526119936000f3fe6080604052600436106100dd5760003560e01c806306fdde031461014a578063078d3b7914610175578063095ea7b31461019557806318160ddd146101c557806323b872dd146101e45780632fb1260514610204578063313ce56714610224578063395093511461024057806340c10f19146102605780634a4a7b0414610280578063660d0d67146102c157806370a08231146102f557806395d89b411461032b5780639dc29fac14610340578063a457c2d714610360578063a9059cbb14610380578063d443ca94146103a0578063dd62ed3e146103c057600080fd5b3661014557600061010d7f00000000000000000000000000000000000000000000000000000000000000006103e0565b9050336001600160a01b03821614610143573360405163738d28df60e11b815260040161013a9190611548565b60405180910390fd5b005b600080fd5b34801561015657600080fd5b5061015f610493565b60405161016c91906115ac565b60405180910390f35b34801561018157600080fd5b506101436101903660046115db565b610525565b3480156101a157600080fd5b506101b56101b036600461161c565b610585565b604051901515815260200161016c565b3480156101d157600080fd5b506002545b60405190815260200161016c565b3480156101f057600080fd5b506101b56101ff3660046115db565b61059d565b34801561021057600080fd5b5061014361021f366004611656565b6105c1565b34801561023057600080fd5b506040516012815260200161016c565b34801561024c57600080fd5b506101b561025b36600461161c565b610645565b34801561026c57600080fd5b5061014361027b36600461161c565b610667565b34801561028c57600080fd5b506102b47f000000000000000000000000000000000000000000000000000000000000000081565b60405161016c9190611548565b3480156102cd57600080fd5b506102b47f000000000000000000000000000000000000000000000000000000000000000081565b34801561030157600080fd5b506101d66103103660046116a9565b6001600160a01b031660009081526020819052604090205490565b34801561033757600080fd5b5061015f610687565b34801561034c57600080fd5b5061014361035b36600461161c565b610696565b34801561036c57600080fd5b506101b561037b36600461161c565b6106b2565b34801561038c57600080fd5b506101b561039b36600461161c565b61072d565b3480156103ac57600080fd5b506101436103bb36600461161c565b61073b565b3480156103cc57600080fd5b506101d66103db3660046116c6565b610785565b6000816001600160a01b03166321f8a7216040516020016104189060208082526003908201526215d39560ea1b604082015260600190565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b815260040161044c91815260200190565b602060405180830381865afa158015610469573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061048d91906116ff565b92915050565b6060600380546104a29061171c565b80601f01602080910402602001604051908101604052809291908181526020018280546104ce9061171c565b801561051b5780601f106104f05761010080835404028352916020019161051b565b820191906000526020600020905b8154815290600101906020018083116104fe57829003601f168201915b5050505050905090565b61057560405160200161053790611756565b604051602081830303815290604052805190602001206040518060400160405280600a81526020016921a7a72a2927a62622a960b11b8152506107b0565b610580838383610860565b505050565b6000336105938185856108b7565b5060019392505050565b6000336105ab8582856109db565b6105b6858585610a55565b506001949350505050565b6105d360405160200161053790611756565b60006105fe7f00000000000000000000000000000000000000000000000000000000000000006103e0565b9050806001600160a01b0316856001600160a01b031614801561061e5750815b156106335761062e858585610c11565b61063e565b61063e858585610860565b5050505050565b6000336105938185856106588383610785565b6106629190611790565b6108b7565b61067960405160200161053790611756565b6106838282610c68565b5050565b6060600480546104a29061171c565b6106a860405160200161053790611756565b6106838282610d35565b600033816106c08286610785565b9050838110156107205760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161013a565b6105b682868684036108b7565b600033610593818585610a55565b61074d60405160200161053790611756565b60006107787f00000000000000000000000000000000000000000000000000000000000000006103e0565b9050610580818484610c11565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b60405163ac4ab3fb60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ac4ab3fb906107fe90339086906004016117a3565b602060405180830381865afa15801561081b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083f91906117bc565b61068357338160405163a35b150b60e01b815260040161013a9291906117d9565b306001600160a01b0383160361088b5781604051637387c8a960e11b815260040161013a9190611548565b6105807f0000000000000000000000000000000000000000000000000000000000000000848484610e71565b6001600160a01b0383166109195760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161013a565b6001600160a01b03821661097a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161013a565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006109e78484610785565b90506000198114610a4f5781811015610a425760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161013a565b610a4f84848484036108b7565b50505050565b6001600160a01b038316610ab95760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161013a565b6001600160a01b038216610b1b5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161013a565b6001600160a01b03831660009081526020819052604090205481811015610b935760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161013a565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290610bca908490611790565b92505081905550826001600160a01b0316846001600160a01b031660008051602061193e83398151915284604051610c0491815260200190565b60405180910390a3610a4f565b306001600160a01b03831603610c3c5781604051637387c8a960e11b815260040161013a9190611548565b6105807f00000000000000000000000000000000000000000000000000000000000000008484846110be565b6001600160a01b038216610cbe5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161013a565b8060026000828254610cd09190611790565b90915550506001600160a01b03821660009081526020819052604081208054839290610cfd908490611790565b90915550506040518181526001600160a01b0383169060009060008051602061193e8339815191529060200160405180910390a35050565b6001600160a01b038216610d955760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161013a565b6001600160a01b03821660009081526020819052604090205481811015610e095760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161013a565b6001600160a01b0383166000908152602081905260408120838303905560028054849290610e38908490611805565b90915550506040518281526000906001600160a01b0385169060008051602061193e8339815191529060200160405180910390a3505050565b8015610a4f57610e808261121e565b6000846001600160a01b031663bd02d0f5610e9a86611245565b6040518263ffffffff1660e01b8152600401610eb891815260200190565b602060405180830381865afa158015610ed5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ef99190611818565b905080600003610f1e5783604051634fe14bfd60e11b815260040161013a9190611548565b6000610f2c858585856112cd565b5090508015610f3c575050610a4f565b6000866001600160a01b03166321f8a721604051602001610f80906020808252600f908201526e484f4c44494e475f4144445245535360881b604082015260600190565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b8152600401610fb491815260200190565b602060405180830381865afa158015610fd1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff591906116ff565b90506001600160a01b03811661101e57604051633a6de2f560e21b815260040160405180910390fd5b60008061102d888488886112cd565b915091508115611041575050505050610a4f565b600061104c82611435565b5090507fc9f14d9a0a9b46470c7c0b6c508f8283abaab7f795f153953c58cd4250824dae8183604051611080929190611831565b60405180910390a160405163012f3b8f60e71b81526001600160a01b03808b166004830152891660248201526044810188905260640161013a565b50565b8015610a4f576110cd8261121e565b604051632e1a7d4d60e01b8152600481018290526001600160a01b03841690632e1a7d4d90602401600060405180830381600087803b15801561110f57600080fd5b505af1158015611123573d6000803e3d6000fd5b505050506000846001600160a01b031663bd02d0f5604051602001611179906020808252601f908201527f4e41544956455f544f4b454e5f5452414e534645525f4741535f4c494d495400604082015260600190565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004016111ad91815260200190565b602060405180830381865afa1580156111ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ee9190611818565b90506000806000806000868887f19050801561120b575050610a4f565b6112168685856114c5565b505050505050565b6001600160a01b0381166110bb5760405163d551823d60e01b815260040160405180910390fd5b6000604051602001611283906020808252601890820152771513d2d15397d514905394d1915497d1d054d7d31253525560421b604082015260600190565b60408051601f198184030181528282528051602091820120908301526001600160a01b03841690820152606001604051602081830303815290604052805190602001209050919050565b60006060600063a9059cbb60e01b86866040516024016112ee9291906117a3565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b0383818316178352505050509050600080886001600160a01b0316868460405161133f919061185f565b60006040518083038160008787f1925050503d806000811461137d576040519150601f19603f3d011682016040523d82523d6000602084013e611382565b606091505b509150915081156114235780516000036113e0576001600160a01b0389163b6113e05760006040518060400160405280601481526020017310d85b1b081d1bc81b9bdb8b58dbdb9d1c9858dd60621b8152509450945050505061142c565b6000815111801561140257508080602001905181019061140091906117bc565b155b156114155760009450925061142c915050565b60019450925061142c915050565b60009450925050505b94509492505050565b6060600060448351101561145c575050604080516020810190915260008082529092909150565b6000611469846020015190565b90506307b9e43360e51b6001600160e01b03198216016114a8576004840193508380602001905181019061149d9190611891565b946001945092505050565b600060405180602001604052806000815250909250925050915091565b806000036114d257505050565b6114db8261121e565b60006114e6846103e0565b9050806001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b15801561152357600080fd5b505af1158015611537573d6000803e3d6000fd5b5050505050610a4f84828585610e71565b6001600160a01b0391909116815260200190565b60005b8381101561157757818101518382015260200161155f565b50506000910152565b6000815180845261159881602086016020860161155c565b601f01601f19169290920160200192915050565b6020815260006115bf6020830184611580565b9392505050565b6001600160a01b03811681146110bb57600080fd5b6000806000606084860312156115f057600080fd5b83356115fb816115c6565b9250602084013561160b816115c6565b929592945050506040919091013590565b6000806040838503121561162f57600080fd5b823561163a816115c6565b946020939093013593505050565b80151581146110bb57600080fd5b6000806000806080858703121561166c57600080fd5b8435611677816115c6565b93506020850135611687816115c6565b925060408501359150606085013561169e81611648565b939692955090935050565b6000602082840312156116bb57600080fd5b81356115bf816115c6565b600080604083850312156116d957600080fd5b82356116e4816115c6565b915060208301356116f4816115c6565b809150509250929050565b60006020828403121561171157600080fd5b81516115bf816115c6565b600181811c9082168061173057607f821691505b60208210810361175057634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252600a908201526921a7a72a2927a62622a960b11b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082018082111561048d5761048d61177a565b6001600160a01b03929092168252602082015260400190565b6000602082840312156117ce57600080fd5b81516115bf81611648565b6001600160a01b03831681526040602082018190526000906117fd90830184611580565b949350505050565b8181038181111561048d5761048d61177a565b60006020828403121561182a57600080fd5b5051919050565b6040815260006118446040830185611580565b82810360208401526118568185611580565b95945050505050565b6000825161187181846020870161155c565b9190910192915050565b634e487b7160e01b600052604160045260246000fd5b6000602082840312156118a357600080fd5b81516001600160401b03808211156118ba57600080fd5b818401915084601f8301126118ce57600080fd5b8151818111156118e0576118e061187b565b604051601f8201601f19908116603f011681019083821181831017156119085761190861187b565b8160405282815287602084870101111561192157600080fd5b61193283602083016020880161155c565b97965050505050505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220bd1cf1ff4fa5cce3dc61f56e2493418850c0fd47194c74f8bf32afa9a0870b3064736f6c63430008120033000000000000000000000000a44f830b6a2b6fa76657a3b92c1fe74fcb7c6afd0000000000000000000000002f0b22339414aded7d5f06f9d604c7ff5b2fe3f6