Overview
CELO Balance
CELO Value
$0.00Multichain Info
Latest 17 from a total of 17 transactions
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Add | 57085759 | 12 days ago | IN | 0 CELO | 0.00336403 | ||||
| Add | 57085424 | 12 days ago | IN | 0 CELO | 0.00336403 | ||||
| Add | 57085380 | 12 days ago | IN | 0 CELO | 0.00336403 | ||||
| Add | 57085303 | 12 days ago | IN | 0 CELO | 0.00336403 | ||||
| Add | 57085254 | 12 days ago | IN | 0 CELO | 0.00336403 | ||||
| Add | 57085205 | 12 days ago | IN | 0 CELO | 0.00339196 | ||||
| Add | 57085155 | 12 days ago | IN | 0 CELO | 0.00336931 | ||||
| Add | 57085075 | 12 days ago | IN | 0 CELO | 0.00336403 | ||||
| Add | 57085021 | 12 days ago | IN | 0 CELO | 0.00336403 | ||||
| Add | 57084958 | 12 days ago | IN | 0 CELO | 0.00336403 | ||||
| Add | 57084855 | 12 days ago | IN | 0 CELO | 0.00336403 | ||||
| Add | 57084810 | 12 days ago | IN | 0 CELO | 0.00336403 | ||||
| Add | 57084765 | 12 days ago | IN | 0 CELO | 0.00336403 | ||||
| Add | 57084716 | 12 days ago | IN | 0 CELO | 0.00336403 | ||||
| Add | 57084670 | 12 days ago | IN | 0 CELO | 0.00336403 | ||||
| Add | 57084620 | 12 days ago | IN | 0 CELO | 0.00336403 | ||||
| Transfer Ownersh... | 57084592 | 12 days ago | IN | 0 CELO | 0.00074332 |
View more zero value Internal Transactions in Advanced View mode
Cross-Chain Transactions
Similar Match Source Code This contract matches the deployed Bytecode of the Source Code for Contract 0xa4022062...956A26080 The constructor portion of the code might be different and could alter the actual behaviour of the contract
Contract Source Code (Solidity)
/**
*Submitted for verification at celoscan.io on 2025-07-15
*/
pragma solidity >=0.8.0;
// SPDX-License-Identifier: AGPL-3.0-or-later
contract TokenUniqueSymbolIndex {
mapping(address => bool) isWriter;
mapping ( bytes32 => uint256 ) registry;
mapping ( address => bytes32 ) tokenIndex;
address[] tokens;
// Implements EIP173
address public owner;
// Implements Registry
bytes32[] public identifierList;
// Implements EIP173
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
// Implements AccountsIndex
event AddressKey(bytes32 indexed _symbol, address _token);
// Implements AccountsIndex
event AddressAdded(address _token);
// Implements AccountsIndexMutable
event AddressRemoved(address _token);
// Implements Writer
event WriterAdded(address _writer);
// Implements Writer
event WriterDeleted(address _writer);
constructor() {
owner = msg.sender;
tokens.push(address(0));
identifierList.push(bytes32(0));
}
// Implements AccountsIndex
function entry(uint256 _idx) public view returns ( address ) {
return tokens[_idx + 1];
}
// Implements RegistryClient
function addressOf(bytes32 _key) public view returns ( address ) {
uint256 idx;
idx = registry[_key];
return tokens[idx];
}
// Attempt to register the token at the given address.
// Will revet if symbol cannot be retrieved, or if symbol already exists.
function register(address _token) public returns (bool) {
require(isWriter[msg.sender] || msg.sender == owner, 'ERR_AXX');
bytes memory token_symbol;
bytes32 token_symbol_key;
uint256 idx;
(bool _ok, bytes memory _r) = _token.call(abi.encodeWithSignature('symbol()'));
require(_ok);
token_symbol = abi.decode(_r, (bytes));
require(token_symbol.length <= 32, 'ERR_TOKEN_SYMBOL_TOO_LONG');
token_symbol_key = bytes32(token_symbol);
idx = registry[token_symbol_key];
require(idx == 0);
registry[token_symbol_key] = tokens.length;
tokens.push(_token);
identifierList.push(token_symbol_key);
tokenIndex[_token] = token_symbol_key;
emit AddressKey(token_symbol_key, _token);
emit AddressAdded(_token);
return true;
}
// Implements AccountsIndex
function add(address _token) public returns (bool) {
return register(_token);
}
// Implements AccountsIndex
function time(address _token) public pure returns(uint256) {
_token;
return 0;
}
// Implements AccountsIndexMutable
function remove(address _token) external returns (bool) {
uint256 i;
uint256 l;
require(isWriter[msg.sender] || msg.sender == owner, 'ERR_AXX');
require(tokenIndex[_token] != bytes32(0), 'ERR_NOT_FOUND');
l = tokens.length - 1;
i = registry[tokenIndex[_token]];
if (i < l) {
tokens[i] = tokens[l];
identifierList[i] = identifierList[l];
}
registry[tokenIndex[tokens[i]]] = i;
tokens.pop();
identifierList.pop();
registry[tokenIndex[_token]] = 0;
tokenIndex[_token] = bytes32(0);
emit AddressRemoved(_token);
return true;
}
// Implements AccountsIndexMutable
function activate(address _token) public pure returns(bool) {
_token;
return false;
}
// Implements AccountsIndexMutable
function deactivate(address _token) public pure returns(bool) {
_token;
return false;
}
// Implements AccountsIndex
function entryCount() public view returns ( uint256 ) {
return tokens.length - 1;
}
// Implements EIP173
function transferOwnership(address _newOwner) public returns (bool) {
address oldOwner;
require(msg.sender == owner);
oldOwner = owner;
owner = _newOwner;
emit OwnershipTransferred(oldOwner, owner);
return true;
}
// Implements Writer
function addWriter(address _writer) public returns (bool) {
require(owner == msg.sender);
isWriter[_writer] = true;
emit WriterAdded(_writer);
return true;
}
// Implements Writer
function deleteWriter(address _writer) public returns (bool) {
require(owner == msg.sender);
delete isWriter[_writer];
emit WriterDeleted(_writer);
return true;
}
// Implements Registry
function identifier(uint256 _idx) public view returns(bytes32) {
return identifierList[_idx + 1];
}
// Implements Registry
function identifierCount() public view returns(uint256) {
return identifierList.length - 1;
}
// Implements AccountsIndex
function have(address _token) public view returns(bool) {
return tokenIndex[_token] != bytes32(0x0);
}
// Implements EIP165
function supportsInterface(bytes4 _sum) public pure returns (bool) {
if (_sum == 0xeffbf671) { // Registry
return true;
}
if (_sum == 0xb7bca625) { // AccountsIndex
return true;
}
if (_sum == 0x9479f0ae) { // AccountsIndexMutable
return true;
}
if (_sum == 0x01ffc9a7) { // EIP165
return true;
}
if (_sum == 0x9493f8b2) { // EIP173
return true;
}
if (_sum == 0x80c84bd6) { // Writer
return true;
}
return false;
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_token","type":"address"}],"name":"AddressAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"_symbol","type":"bytes32"},{"indexed":false,"internalType":"address","name":"_token","type":"address"}],"name":"AddressKey","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_token","type":"address"}],"name":"AddressRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_writer","type":"address"}],"name":"WriterAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_writer","type":"address"}],"name":"WriterDeleted","type":"event"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"activate","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"add","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_writer","type":"address"}],"name":"addWriter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_key","type":"bytes32"}],"name":"addressOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"deactivate","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_writer","type":"address"}],"name":"deleteWriter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_idx","type":"uint256"}],"name":"entry","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"entryCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"have","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_idx","type":"uint256"}],"name":"identifier","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"identifierCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"identifierList","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"register","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"remove","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_sum","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"time","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
0x6080604052348015600e575f5ffd5b50600480546001600160a01b031990811633179091556003805460018181019092557fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180549092169091556005805491820181555f9081527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db090910155610d0d806100995f395ff3fe608060405234801561000f575f5ffd5b5060043610610111575f3560e01c80634420e4861161009e578063bb34534c1161006e578063bb34534c14610230578063d56b7d4e14610243578063da2824a814610256578063e2095c0714610269578063f2fde38b1461027c575f5ffd5b80634420e486146101d15780635ae06f7e146101e45780637c67a3e2146101f75780638da5cb5b14610205575f5ffd5b80631c5a9d9c116100e45780631c5a9d9c1461017957806329092d0e1461018c5780633480c7041461019f5780633ea053eb146101795780633ef25013146101a7575f5ffd5b806301ffc9a7146101155780630a3b0a4f1461013d5780630cbb0f8314610150578063110c57b314610166575b5f5ffd5b610128610123366004610ae3565b61028f565b60405190151581526020015b60405180910390f35b61012861014b366004610b11565b610357565b610158610367565b604051908152602001610134565b610158610174366004610b37565b61037d565b610128610187366004610b11565b505f90565b61012861019a366004610b11565b61039c565b61015861064c565b6101286101b5366004610b11565b6001600160a01b03165f90815260026020526040902054151590565b6101286101df366004610b11565b61065d565b6101286101f2366004610b11565b6108f4565b610158610187366004610b11565b600454610218906001600160a01b031681565b6040516001600160a01b039091168152602001610134565b61021861023e366004610b37565b610966565b610158610251366004610b37565b6109a3565b610128610264366004610b11565b6109d1565b610218610277366004610b37565b610a3a565b61012861028a366004610b11565b610a72565b5f6001600160e01b0319821663effbf67160e01b036102b057506001919050565b6001600160e01b0319821663b7bca62560e01b036102d057506001919050565b6001600160e01b03198216634a3cf85760e11b036102f057506001919050565b6001600160e01b031982166301ffc9a760e01b0361031057506001919050565b6001600160e01b03198216634a49fc5960e11b0361033057506001919050565b6001600160e01b0319821663406425eb60e11b0361035057506001919050565b505f919050565b5f6103618261065d565b92915050565b6003545f9061037890600190610b62565b905090565b6005818154811061038c575f80fd5b5f91825260209091200154905081565b335f908152602081905260408120548190819060ff16806103c757506004546001600160a01b031633145b6104025760405162461bcd60e51b815260206004820152600760248201526608aa4a4be82b0b60cb1b60448201526064015b60405180910390fd5b6001600160a01b0384165f908152600260205260409020546104565760405162461bcd60e51b815260206004820152600d60248201526c11549497d393d517d193d55391609a1b60448201526064016103f9565b60035461046590600190610b62565b6001600160a01b0385165f9081526002602090815260408083205483526001909152902054925090508082101561053a57600381815481106104a9576104a9610b75565b5f91825260209091200154600380546001600160a01b0390921691849081106104d4576104d4610b75565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b031602179055506005818154811061051257610512610b75565b905f5260205f2001546005838154811061052e5761052e610b75565b5f918252602090912001555b8160015f60025f6003878154811061055457610554610b75565b5f9182526020808320909101546001600160a01b031683528281019390935260409182018120548452918301939093529101902055600380548061059a5761059a610b89565b5f8281526020902081015f1990810180546001600160a01b031916905501905560058054806105cb576105cb610b89565b5f82815260208082205f1990840181018390559092019092556001600160a01b03861680835260028083526040808520805486526001855281862086905583865291845293905591519182527f24a12366c02e13fe4a9e03d86a8952e85bb74a456c16e4a18b6d8295700b74bb910160405180910390a15060019392505050565b6005545f9061037890600190610b62565b335f9081526020819052604081205460ff168061068457506004546001600160a01b031633145b6106ba5760405162461bcd60e51b815260206004820152600760248201526608aa4a4be82b0b60cb1b60448201526064016103f9565b60408051600481526024810182526020810180516001600160e01b03166395d89b4160e01b17905290516060915f918291829182916001600160a01b038916916107049190610bbf565b5f604051808303815f865af19150503d805f811461073d576040519150601f19603f3d011682016040523d82523d5f602084013e610742565b606091505b509150915081610750575f5ffd5b808060200190518101906107649190610bee565b94506020855111156107b85760405162461bcd60e51b815260206004820152601960248201527f4552525f544f4b454e5f53594d424f4c5f544f4f5f4c4f4e470000000000000060448201526064016103f9565b6107c185610c9e565b5f81815260016020526040902054909450925082156107de575f5ffd5b600380545f8681526001602081815260408084208590558285019095557fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b90930180546001600160a01b0319166001600160a01b038d169081179091556005805492830190557f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db09091018890558082526002835290839020879055915191825285917f3465c39c7e9b14641553cf015fbfe670207bd64c689d17806d885bda47899feb910160405180910390a26040516001600160a01b03881681527fa226db3f664042183ee0281230bba26cbf7b5057e50aee7f25a175ff45ce4d7f9060200160405180910390a15060019695505050505050565b6004545f906001600160a01b0316331461090c575f5ffd5b6001600160a01b0382165f8181526020818152604091829020805460ff1916905590519182527f9002f14780245e47491e7a2caae4712e7cea2e298e4e76c6916845145b90a51c91015b60405180910390a1506001919050565b5f81815260016020526040812054600380548290811061098857610988610b75565b5f918252602090912001546001600160a01b03169392505050565b5f60056109b1836001610cc4565b815481106109c1576109c1610b75565b905f5260205f2001549050919050565b6004545f906001600160a01b031633146109e9575f5ffd5b6001600160a01b0382165f8181526020818152604091829020805460ff1916600117905590519182527f6ff3aa2ea7b53070f6d9d07a445d338d89e8edef44250ffa8be19f53910d4a2e9101610956565b5f6003610a48836001610cc4565b81548110610a5857610a58610b75565b5f918252602090912001546001600160a01b031692915050565b6004545f9081906001600160a01b03163314610a8c575f5ffd5b50600480546001600160a01b038481166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a350600192915050565b5f60208284031215610af3575f5ffd5b81356001600160e01b031981168114610b0a575f5ffd5b9392505050565b5f60208284031215610b21575f5ffd5b81356001600160a01b0381168114610b0a575f5ffd5b5f60208284031215610b47575f5ffd5b5035919050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561036157610361610b4e565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52603160045260245ffd5b5f5b83811015610bb7578181015183820152602001610b9f565b50505f910152565b5f8251610bd0818460208701610b9d565b9190910192915050565b634e487b7160e01b5f52604160045260245ffd5b5f60208284031215610bfe575f5ffd5b815167ffffffffffffffff811115610c14575f5ffd5b8201601f81018413610c24575f5ffd5b805167ffffffffffffffff811115610c3e57610c3e610bda565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610c6d57610c6d610bda565b604052818152828201602001861015610c84575f5ffd5b610c95826020830160208601610b9d565b95945050505050565b80516020808301519190811015610cbe575f198160200360031b1b821691505b50919050565b8082018082111561036157610361610b4e56fea2646970667358221220d811ffbef95008430fdbcbd1be577e494df5922ae3360428964028d20a97be2e64736f6c634300081e00336decb85d010080000000000000000000000000d08913a93c2c28b2bf6717264378c57083a5ef5c0000000000000000000000005523058cdffe5f3c1eadadd5015e55c6e00fb43900000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x608060405234801561000f575f5ffd5b5060043610610111575f3560e01c80634420e4861161009e578063bb34534c1161006e578063bb34534c14610230578063d56b7d4e14610243578063da2824a814610256578063e2095c0714610269578063f2fde38b1461027c575f5ffd5b80634420e486146101d15780635ae06f7e146101e45780637c67a3e2146101f75780638da5cb5b14610205575f5ffd5b80631c5a9d9c116100e45780631c5a9d9c1461017957806329092d0e1461018c5780633480c7041461019f5780633ea053eb146101795780633ef25013146101a7575f5ffd5b806301ffc9a7146101155780630a3b0a4f1461013d5780630cbb0f8314610150578063110c57b314610166575b5f5ffd5b610128610123366004610ae3565b61028f565b60405190151581526020015b60405180910390f35b61012861014b366004610b11565b610357565b610158610367565b604051908152602001610134565b610158610174366004610b37565b61037d565b610128610187366004610b11565b505f90565b61012861019a366004610b11565b61039c565b61015861064c565b6101286101b5366004610b11565b6001600160a01b03165f90815260026020526040902054151590565b6101286101df366004610b11565b61065d565b6101286101f2366004610b11565b6108f4565b610158610187366004610b11565b600454610218906001600160a01b031681565b6040516001600160a01b039091168152602001610134565b61021861023e366004610b37565b610966565b610158610251366004610b37565b6109a3565b610128610264366004610b11565b6109d1565b610218610277366004610b37565b610a3a565b61012861028a366004610b11565b610a72565b5f6001600160e01b0319821663effbf67160e01b036102b057506001919050565b6001600160e01b0319821663b7bca62560e01b036102d057506001919050565b6001600160e01b03198216634a3cf85760e11b036102f057506001919050565b6001600160e01b031982166301ffc9a760e01b0361031057506001919050565b6001600160e01b03198216634a49fc5960e11b0361033057506001919050565b6001600160e01b0319821663406425eb60e11b0361035057506001919050565b505f919050565b5f6103618261065d565b92915050565b6003545f9061037890600190610b62565b905090565b6005818154811061038c575f80fd5b5f91825260209091200154905081565b335f908152602081905260408120548190819060ff16806103c757506004546001600160a01b031633145b6104025760405162461bcd60e51b815260206004820152600760248201526608aa4a4be82b0b60cb1b60448201526064015b60405180910390fd5b6001600160a01b0384165f908152600260205260409020546104565760405162461bcd60e51b815260206004820152600d60248201526c11549497d393d517d193d55391609a1b60448201526064016103f9565b60035461046590600190610b62565b6001600160a01b0385165f9081526002602090815260408083205483526001909152902054925090508082101561053a57600381815481106104a9576104a9610b75565b5f91825260209091200154600380546001600160a01b0390921691849081106104d4576104d4610b75565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b031602179055506005818154811061051257610512610b75565b905f5260205f2001546005838154811061052e5761052e610b75565b5f918252602090912001555b8160015f60025f6003878154811061055457610554610b75565b5f9182526020808320909101546001600160a01b031683528281019390935260409182018120548452918301939093529101902055600380548061059a5761059a610b89565b5f8281526020902081015f1990810180546001600160a01b031916905501905560058054806105cb576105cb610b89565b5f82815260208082205f1990840181018390559092019092556001600160a01b03861680835260028083526040808520805486526001855281862086905583865291845293905591519182527f24a12366c02e13fe4a9e03d86a8952e85bb74a456c16e4a18b6d8295700b74bb910160405180910390a15060019392505050565b6005545f9061037890600190610b62565b335f9081526020819052604081205460ff168061068457506004546001600160a01b031633145b6106ba5760405162461bcd60e51b815260206004820152600760248201526608aa4a4be82b0b60cb1b60448201526064016103f9565b60408051600481526024810182526020810180516001600160e01b03166395d89b4160e01b17905290516060915f918291829182916001600160a01b038916916107049190610bbf565b5f604051808303815f865af19150503d805f811461073d576040519150601f19603f3d011682016040523d82523d5f602084013e610742565b606091505b509150915081610750575f5ffd5b808060200190518101906107649190610bee565b94506020855111156107b85760405162461bcd60e51b815260206004820152601960248201527f4552525f544f4b454e5f53594d424f4c5f544f4f5f4c4f4e470000000000000060448201526064016103f9565b6107c185610c9e565b5f81815260016020526040902054909450925082156107de575f5ffd5b600380545f8681526001602081815260408084208590558285019095557fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b90930180546001600160a01b0319166001600160a01b038d169081179091556005805492830190557f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db09091018890558082526002835290839020879055915191825285917f3465c39c7e9b14641553cf015fbfe670207bd64c689d17806d885bda47899feb910160405180910390a26040516001600160a01b03881681527fa226db3f664042183ee0281230bba26cbf7b5057e50aee7f25a175ff45ce4d7f9060200160405180910390a15060019695505050505050565b6004545f906001600160a01b0316331461090c575f5ffd5b6001600160a01b0382165f8181526020818152604091829020805460ff1916905590519182527f9002f14780245e47491e7a2caae4712e7cea2e298e4e76c6916845145b90a51c91015b60405180910390a1506001919050565b5f81815260016020526040812054600380548290811061098857610988610b75565b5f918252602090912001546001600160a01b03169392505050565b5f60056109b1836001610cc4565b815481106109c1576109c1610b75565b905f5260205f2001549050919050565b6004545f906001600160a01b031633146109e9575f5ffd5b6001600160a01b0382165f8181526020818152604091829020805460ff1916600117905590519182527f6ff3aa2ea7b53070f6d9d07a445d338d89e8edef44250ffa8be19f53910d4a2e9101610956565b5f6003610a48836001610cc4565b81548110610a5857610a58610b75565b5f918252602090912001546001600160a01b031692915050565b6004545f9081906001600160a01b03163314610a8c575f5ffd5b50600480546001600160a01b038481166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a350600192915050565b5f60208284031215610af3575f5ffd5b81356001600160e01b031981168114610b0a575f5ffd5b9392505050565b5f60208284031215610b21575f5ffd5b81356001600160a01b0381168114610b0a575f5ffd5b5f60208284031215610b47575f5ffd5b5035919050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561036157610361610b4e565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52603160045260245ffd5b5f5b83811015610bb7578181015183820152602001610b9f565b50505f910152565b5f8251610bd0818460208701610b9d565b9190910192915050565b634e487b7160e01b5f52604160045260245ffd5b5f60208284031215610bfe575f5ffd5b815167ffffffffffffffff811115610c14575f5ffd5b8201601f81018413610c24575f5ffd5b805167ffffffffffffffff811115610c3e57610c3e610bda565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610c6d57610c6d610bda565b604052818152828201602001861015610c84575f5ffd5b610c95826020830160208601610b9d565b95945050505050565b80516020808301519190811015610cbe575f198160200360031b1b821691505b50919050565b8082018082111561036157610361610b4e56fea2646970667358221220d811ffbef95008430fdbcbd1be577e494df5922ae3360428964028d20a97be2e64736f6c634300081e0033
Deployed Bytecode Sourcemap
77:4956:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4551:479;;;;;;:::i;:::-;;:::i;:::-;;;470:14:1;;463:22;445:41;;433:2;418:18;4551:479:0;;;;;;;;2211:84;;;;;;:::i;:::-;;:::i;3352:88::-;;;:::i;:::-;;;934:25:1;;;922:2;907:18;3352:88:0;788:177:1;334:31:0;;;;;;:::i;:::-;;:::i;3085:93::-;;;;;;:::i;:::-;-1:-1:-1;3139:4:0;;3085:93;2460:583;;;;;;:::i;:::-;;:::i;4282:98::-;;;:::i;4416:107::-;;;;;;:::i;:::-;-1:-1:-1;;;;;4484:18:0;4466:4;4484:18;;;:10;:18;;;;;;:34;;;4416:107;1398:778;;;;;;:::i;:::-;;:::i;3938:180::-;;;;;;:::i;:::-;;:::i;2330:88::-;;;;;;:::i;283:20::-;;;;;-1:-1:-1;;;;;283:20:0;;;;;;-1:-1:-1;;;;;1501:32:1;;;1483:51;;1471:2;1456:18;283:20:0;1337:203:1;1124:136:0;;;;;;:::i;:::-;;:::i;4148:104::-;;;;;;:::i;:::-;;:::i;3735:175::-;;;;;;:::i;:::-;;:::i;994:94::-;;;;;;:::i;:::-;;:::i;3468:239::-;;;;;;:::i;:::-;;:::i;4551:479::-;4612:4;-1:-1:-1;;;;;;4627:18:0;;-1:-1:-1;;;4627:18:0;4623:59;;-1:-1:-1;4672:4:0;;4551:479;-1:-1:-1;4551:479:0:o;4623:59::-;-1:-1:-1;;;;;;4690:18:0;;-1:-1:-1;;;4690:18:0;4686:65;;-1:-1:-1;4741:4:0;;4551:479;-1:-1:-1;4551:479:0:o;4686:65::-;-1:-1:-1;;;;;;4759:18:0;;-1:-1:-1;;;4759:18:0;4755:71;;-1:-1:-1;4816:4:0;;4551:479;-1:-1:-1;4551:479:0:o;4755:71::-;-1:-1:-1;;;;;;4834:18:0;;-1:-1:-1;;;4834:18:0;4830:57;;-1:-1:-1;4877:4:0;;4551:479;-1:-1:-1;4551:479:0:o;4830:57::-;-1:-1:-1;;;;;;4895:18:0;;-1:-1:-1;;;4895:18:0;4891:57;;-1:-1:-1;4938:4:0;;4551:479;-1:-1:-1;4551:479:0:o;4891:57::-;-1:-1:-1;;;;;;4956:18:0;;-1:-1:-1;;;4956:18:0;4952:57;;-1:-1:-1;4999:4:0;;4551:479;-1:-1:-1;4551:479:0:o;4952:57::-;-1:-1:-1;5020:5:0;;4551:479;-1:-1:-1;4551:479:0:o;2211:84::-;2256:4;2274:16;2283:6;2274:8;:16::i;:::-;2267:23;2211:84;-1:-1:-1;;2211:84:0:o;3352:88::-;3418:6;:13;3396:7;;3418:17;;3434:1;;3418:17;:::i;:::-;3411:24;;3352:88;:::o;334:31::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;334:31:0;:::o;2460:583::-;2568:10;2510:4;2559:20;;;;;;;;;;;2510:4;;;;2559:20;;;:43;;-1:-1:-1;2597:5:0;;-1:-1:-1;;;;;2597:5:0;2583:10;:19;2559:43;2551:63;;;;-1:-1:-1;;;2551:63:0;;2197:2:1;2551:63:0;;;2179:21:1;2236:1;2216:18;;;2209:29;-1:-1:-1;;;2254:18:1;;;2247:37;2301:18;;2551:63:0;;;;;;;;;-1:-1:-1;;;;;2627:18:0;;2657:1;2627:18;;;:10;:18;;;;;;2619:58;;;;-1:-1:-1;;;2619:58:0;;2532:2:1;2619:58:0;;;2514:21:1;2571:2;2551:18;;;2544:30;-1:-1:-1;;;2590:18:1;;;2583:43;2643:18;;2619:58:0;2330:337:1;2619:58:0;2688:6;:13;:17;;2704:1;;2688:17;:::i;:::-;-1:-1:-1;;;;;2723:18:0;;2714:28;2723:18;;;:10;:18;;;;;;;;;2714:28;;:8;:28;;;;;;;-1:-1:-1;2684:21:0;-1:-1:-1;2751:5:0;;;2747:87;;;2776:6;2783:1;2776:9;;;;;;;;:::i;:::-;;;;;;;;;;;2764:6;:9;;-1:-1:-1;;;;;2776:9:0;;;;2771:1;;2764:9;;;;;;:::i;:::-;;;;;;;;;:21;;;;;-1:-1:-1;;;;;2764:21:0;;;;;-1:-1:-1;;;;;2764:21:0;;;;;;2811:14;2826:1;2811:17;;;;;;;;:::i;:::-;;;;;;;;;2791:14;2806:1;2791:17;;;;;;;;:::i;:::-;;;;;;;;;;:37;2747:87;2872:1;2838:8;:31;2847:10;:21;2858:6;2865:1;2858:9;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;2858:9:0;2847:21;;;;;;;;;;;;;;;;2838:31;;;;;;;;;;;;;:35;2878:6;:12;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;2878:12:0;;;;;-1:-1:-1;;;;;;2878:12:0;;;;;;2895:14;:20;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;2895:20:0;;;;;;;;;;;;;;-1:-1:-1;;;;;2929:18:0;;;;;:10;:18;;;;;;;;;2920:28;;2895:20;2920:28;;;;;:32;;;2957:18;;;;;;:31;;;3000:22;;1483:51:1;;;3000:22:0;;1456:18:1;3000:22:0;;;;;;;-1:-1:-1;3034:4:0;;2460:583;-1:-1:-1;;;2460:583:0:o;4282:98::-;4350:14;:21;4329:7;;4350:25;;4374:1;;4350:25;:::i;1398:778::-;1476:10;1448:4;1467:20;;;;;;;;;;;;;;:43;;-1:-1:-1;1505:5:0;;-1:-1:-1;;;;;1505:5:0;1491:10;:19;1467:43;1459:63;;;;-1:-1:-1;;;1459:63:0;;2197:2:1;1459:63:0;;;2179:21:1;2236:1;2216:18;;;2209:29;-1:-1:-1;;;2254:18:1;;;2247:37;2301:18;;1459:63:0;1995:330:1;1459:63:0;1648:35;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1648:35:0;-1:-1:-1;;;1648:35:0;;;1636:48;;1529:25;;1559:24;;;;;;;;-1:-1:-1;;;;;1636:11:0;;;:48;;1648:35;1636:48;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1606:78;;;;1697:3;1689:12;;;;;;1734:2;1723:23;;;;;;;;;;;;:::i;:::-;1708:38;;1782:2;1759:12;:19;:25;;1751:63;;;;-1:-1:-1;;;1751:63:0;;4737:2:1;1751:63:0;;;4719:21:1;4776:2;4756:18;;;4749:30;4815:27;4795:18;;;4788:55;4860:18;;1751:63:0;4535:349:1;1751:63:0;1838:21;1846:12;1838:21;:::i;:::-;1872:26;;;;:8;:26;;;;;;1819:40;;-1:-1:-1;1872:26:0;-1:-1:-1;1911:8:0;;1903:17;;;;;;1956:6;:13;;1927:26;;;;:8;:26;;;;;;;;:42;;;1974:19;;;;;;;;;;;;-1:-1:-1;;;;;;1974:19:0;-1:-1:-1;;;;;1974:19:0;;;;;;;;1998:14;:37;;;;;;;;;;;;;;2040:18;;;:10;:18;;;;;;:37;;;2089:36;;1483:51:1;;;1927:26:0;;2089:36;;1456:18:1;2089:36:0;;;;;;;2135:20;;-1:-1:-1;;;;;1501:32:1;;1483:51;;2135:20:0;;1471:2:1;1456:18;2135:20:0;;;;;;;-1:-1:-1;2167:4:0;;1398:778;-1:-1:-1;;;;;;1398:778:0:o;3938:180::-;4012:5;;3993:4;;-1:-1:-1;;;;;4012:5:0;4021:10;4012:19;4004:28;;;;;;-1:-1:-1;;;;;4044:17:0;;:8;:17;;;;;;;;;;;;4037:24;;-1:-1:-1;;4037:24:0;;;4073:22;;1483:51:1;;;4073:22:0;;1456:18:1;4073:22:0;;;;;;;;-1:-1:-1;4109:4:0;;3938:180;-1:-1:-1;3938:180:0:o;1124:136::-;1179:7;1218:14;;;:8;:14;;;;;;1244:6;:11;;1218:14;;1244:11;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;1244:11:0;;1124:136;-1:-1:-1;;;1124:136:0:o;4148:104::-;4202:7;4223:14;4238:8;:4;4245:1;4238:8;:::i;:::-;4223:24;;;;;;;;:::i;:::-;;;;;;;;;4216:31;;4148:104;;;:::o;3735:175::-;3806:5;;3787:4;;-1:-1:-1;;;;;3806:5:0;3815:10;3806:19;3798:28;;;;;;-1:-1:-1;;;;;3831:17:0;;:8;:17;;;;;;;;;;;;:24;;-1:-1:-1;;3831:24:0;3851:4;3831:24;;;3867:20;;1483:51:1;;;3867:20:0;;1456:18:1;3867:20:0;1337:203:1;994:94:0;1045:7;1067:6;1074:8;:4;1081:1;1074:8;:::i;:::-;1067:16;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;1067:16:0;;994:94;-1:-1:-1;;994:94:0:o;3468:239::-;3586:5;;3530:4;;;;-1:-1:-1;;;;;3586:5:0;3572:10;:19;3564:28;;;;;;-1:-1:-1;3608:5:0;;;-1:-1:-1;;;;;3618:17:0;;;-1:-1:-1;;;;;;3618:17:0;;;;;;;3647:37;;3608:5;;;3618:17;3608:5;;3647:37;;3608:5;;3647:37;-1:-1:-1;3698:4:0;;3468:239;-1:-1:-1;;3468:239:0:o;14:286:1:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:1;;209:43;;199:71;;266:1;263;256:12;199:71;289:5;14:286;-1:-1:-1;;;14:286:1:o;497:::-;556:6;609:2;597:9;588:7;584:23;580:32;577:52;;;625:1;622;615:12;577:52;651:23;;-1:-1:-1;;;;;703:31:1;;693:42;;683:70;;749:1;746;739:12;970:180;1029:6;1082:2;1070:9;1061:7;1057:23;1053:32;1050:52;;;1098:1;1095;1088:12;1050:52;-1:-1:-1;1121:23:1;;970:180;-1:-1:-1;970:180:1:o;1730:127::-;1791:10;1786:3;1782:20;1779:1;1772:31;1822:4;1819:1;1812:15;1846:4;1843:1;1836:15;1862:128;1929:9;;;1950:11;;;1947:37;;;1964:18;;:::i;2672:127::-;2733:10;2728:3;2724:20;2721:1;2714:31;2764:4;2761:1;2754:15;2788:4;2785:1;2778:15;2804:127;2865:10;2860:3;2856:20;2853:1;2846:31;2896:4;2893:1;2886:15;2920:4;2917:1;2910:15;2936:250;3021:1;3031:113;3045:6;3042:1;3039:13;3031:113;;;3121:11;;;3115:18;3102:11;;;3095:39;3067:2;3060:10;3031:113;;;-1:-1:-1;;3178:1:1;3160:16;;3153:27;2936:250::o;3191:287::-;3320:3;3358:6;3352:13;3374:66;3433:6;3428:3;3421:4;3413:6;3409:17;3374:66;:::i;:::-;3456:16;;;;;3191:287;-1:-1:-1;;3191:287:1:o;3483:127::-;3544:10;3539:3;3535:20;3532:1;3525:31;3575:4;3572:1;3565:15;3599:4;3596:1;3589:15;3615:915;3694:6;3747:2;3735:9;3726:7;3722:23;3718:32;3715:52;;;3763:1;3760;3753:12;3715:52;3796:9;3790:16;3829:18;3821:6;3818:30;3815:50;;;3861:1;3858;3851:12;3815:50;3884:22;;3937:4;3929:13;;3925:27;-1:-1:-1;3915:55:1;;3966:1;3963;3956:12;3915:55;3999:2;3993:9;4025:18;4017:6;4014:30;4011:56;;;4047:18;;:::i;:::-;4096:2;4090:9;4188:2;4150:17;;-1:-1:-1;;4146:31:1;;;4179:2;4142:40;4138:54;4126:67;;4223:18;4208:34;;4244:22;;;4205:62;4202:88;;;4270:18;;:::i;:::-;4306:2;4299:22;4330;;;4371:15;;;4388:2;4367:24;4364:37;-1:-1:-1;4361:57:1;;;4414:1;4411;4404:12;4361:57;4427:72;4492:6;4487:2;4479:6;4475:15;4470:2;4466;4462:11;4427:72;:::i;:::-;4518:6;3615:915;-1:-1:-1;;;;;3615:915:1:o;4889:297::-;5007:12;;5054:4;5043:16;;;5037:23;;5007:12;5072:16;;5069:111;;;5166:1;5162:6;5152;5146:4;5142:17;5139:1;5135:25;5131:38;5124:5;5120:50;5111:59;;5069:111;;4889:297;;;:::o;5191:125::-;5256:9;;;5277:10;;;5274:36;;;5290:18;;:::i
Swarm Source
ipfs://d811ffbef95008430fdbcbd1be577e494df5922ae3360428964028d20a97be2e
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.