Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
PinkyFinance
Compiler Version
v0.8.22+commit.4fc1097e
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-01-02 */ // Sources flattened with hardhat v2.18.2 https://hardhat.org // SPDX-License-Identifier: MIT // File @openzeppelin/contracts/token/ERC20/[email protected] // Original license: SPDX_License_Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.20; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval( address indexed owner, address indexed spender, uint256 value ); /** * @dev Returns the value of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the value of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves a `value` amount of tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 value) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance( address owner, address spender ) external view returns (uint256); /** * @dev Sets a `value` amount of tokens as the allowance of `spender` over the * caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 value) external returns (bool); /** * @dev Moves a `value` amount of tokens from `from` to `to` using the * allowance mechanism. `value` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 value ) external returns (bool); } // File @openzeppelin/contracts/token/ERC20/extensions/[email protected] // Original license: SPDX_License_Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/extensions/IERC20Metadata.sol) pragma solidity ^0.8.20; /** * @dev Interface for the optional metadata functions from the ERC20 standard. */ interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } // File @openzeppelin/contracts/interfaces/[email protected] // Original license: SPDX_License_Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC6093.sol) pragma solidity ^0.8.20; /** * @dev Standard ERC20 Errors * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens. */ interface IERC20Errors { /** * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers. * @param sender Address whose tokens are being transferred. * @param balance Current balance for the interacting account. * @param needed Minimum amount required to perform a transfer. */ error ERC20InsufficientBalance( address sender, uint256 balance, uint256 needed ); /** * @dev Indicates a failure with the token `sender`. Used in transfers. * @param sender Address whose tokens are being transferred. */ error ERC20InvalidSender(address sender); /** * @dev Indicates a failure with the token `receiver`. Used in transfers. * @param receiver Address to which tokens are being transferred. */ error ERC20InvalidReceiver(address receiver); /** * @dev Indicates a failure with the `spender`ΓÇÖs `allowance`. Used in transfers. * @param spender Address that may be allowed to operate on tokens without being their owner. * @param allowance Amount of tokens a `spender` is allowed to operate with. * @param needed Minimum amount required to perform a transfer. */ error ERC20InsufficientAllowance( address spender, uint256 allowance, uint256 needed ); /** * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals. * @param approver Address initiating an approval operation. */ error ERC20InvalidApprover(address approver); /** * @dev Indicates a failure with the `spender` to be approved. Used in approvals. * @param spender Address that may be allowed to operate on tokens without being their owner. */ error ERC20InvalidSpender(address spender); } /** * @dev Standard ERC721 Errors * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens. */ interface IERC721Errors { /** * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20. * Used in balance queries. * @param owner Address of the current owner of a token. */ error ERC721InvalidOwner(address owner); /** * @dev Indicates a `tokenId` whose `owner` is the zero address. * @param tokenId Identifier number of a token. */ error ERC721NonexistentToken(uint256 tokenId); /** * @dev Indicates an error related to the ownership over a particular token. Used in transfers. * @param sender Address whose tokens are being transferred. * @param tokenId Identifier number of a token. * @param owner Address of the current owner of a token. */ error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner); /** * @dev Indicates a failure with the token `sender`. Used in transfers. * @param sender Address whose tokens are being transferred. */ error ERC721InvalidSender(address sender); /** * @dev Indicates a failure with the token `receiver`. Used in transfers. * @param receiver Address to which tokens are being transferred. */ error ERC721InvalidReceiver(address receiver); /** * @dev Indicates a failure with the `operator`ΓÇÖs approval. Used in transfers. * @param operator Address that may be allowed to operate on tokens without being their owner. * @param tokenId Identifier number of a token. */ error ERC721InsufficientApproval(address operator, uint256 tokenId); /** * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals. * @param approver Address initiating an approval operation. */ error ERC721InvalidApprover(address approver); /** * @dev Indicates a failure with the `operator` to be approved. Used in approvals. * @param operator Address that may be allowed to operate on tokens without being their owner. */ error ERC721InvalidOperator(address operator); } /** * @dev Standard ERC1155 Errors * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens. */ interface IERC1155Errors { /** * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers. * @param sender Address whose tokens are being transferred. * @param balance Current balance for the interacting account. * @param needed Minimum amount required to perform a transfer. * @param tokenId Identifier number of a token. */ error ERC1155InsufficientBalance( address sender, uint256 balance, uint256 needed, uint256 tokenId ); /** * @dev Indicates a failure with the token `sender`. Used in transfers. * @param sender Address whose tokens are being transferred. */ error ERC1155InvalidSender(address sender); /** * @dev Indicates a failure with the token `receiver`. Used in transfers. * @param receiver Address to which tokens are being transferred. */ error ERC1155InvalidReceiver(address receiver); /** * @dev Indicates a failure with the `operator`ΓÇÖs approval. Used in transfers. * @param operator Address that may be allowed to operate on tokens without being their owner. * @param owner Address of the current owner of a token. */ error ERC1155MissingApprovalForAll(address operator, address owner); /** * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals. * @param approver Address initiating an approval operation. */ error ERC1155InvalidApprover(address approver); /** * @dev Indicates a failure with the `operator` to be approved. Used in approvals. * @param operator Address that may be allowed to operate on tokens without being their owner. */ error ERC1155InvalidOperator(address operator); /** * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation. * Used in batch transfers. * @param idsLength Length of the array of token identifiers * @param valuesLength Length of the array of token amounts */ error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength); } // File @openzeppelin/contracts/utils/[email protected] // Original license: SPDX_License_Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol) pragma solidity ^0.8.20; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } function _contextSuffixLength() internal view virtual returns (uint256) { return 0; } } // File contracts/Pinky.sol // Original license: SPDX_License_Identifier: MIT pragma solidity ^0.8.20; contract PinkyFinance is Context, IERC20, IERC20Metadata, IERC20Errors { mapping(address account => uint256) private _balances; mapping(address account => mapping(address spender => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; uint8 private _decimals; constructor() { _name = "Pinky Finance"; _symbol = "PINKY"; _decimals = 18; _mint(_msgSender(), 1e7 * 10 ** _decimals); } function name() public view virtual returns (string memory) { return _name; } function symbol() public view virtual returns (string memory) { return _symbol; } function decimals() public view virtual returns (uint8) { return _decimals; } function totalSupply() public view virtual returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual returns (uint256) { return _balances[account]; } function transfer(address to, uint256 value) public virtual returns (bool) { address owner = _msgSender(); _transfer(owner, to, value); return true; } function allowance( address owner, address spender ) public view virtual returns (uint256) { return _allowances[owner][spender]; } function approve( address spender, uint256 value ) public virtual returns (bool) { address owner = _msgSender(); _approve(owner, spender, value); return true; } function transferFrom( address from, address to, uint256 value ) public virtual returns (bool) { address spender = _msgSender(); _spendAllowance(from, spender, value); _transfer(from, to, value); return true; } function _transfer(address from, address to, uint256 value) internal { if (from == address(0)) { revert ERC20InvalidSender(address(0)); } if (to == address(0)) { revert ERC20InvalidReceiver(address(0)); } _update(from, to, value); } function _update(address from, address to, uint256 value) internal virtual { if (from == address(0)) { // Overflow check required: The rest of the code assumes that totalSupply never overflows _totalSupply += value; } else { uint256 fromBalance = _balances[from]; if (fromBalance < value) { revert ERC20InsufficientBalance(from, fromBalance, value); } unchecked { // Overflow not possible: value <= fromBalance <= totalSupply. _balances[from] = fromBalance - value; } } if (to == address(0)) { unchecked { // Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply. _totalSupply -= value; } } else { unchecked { // Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256. _balances[to] += value; } } emit Transfer(from, to, value); } function _mint(address account, uint256 value) internal { if (account == address(0)) { revert ERC20InvalidReceiver(address(0)); } _update(address(0), account, value); } function _burn(address account, uint256 value) internal { if (account == address(0)) { revert ERC20InvalidSender(address(0)); } _update(account, address(0), value); } function _approve(address owner, address spender, uint256 value) internal { _approve(owner, spender, value, true); } function _approve( address owner, address spender, uint256 value, bool emitEvent ) internal virtual { if (owner == address(0)) { revert ERC20InvalidApprover(address(0)); } if (spender == address(0)) { revert ERC20InvalidSpender(address(0)); } _allowances[owner][spender] = value; if (emitEvent) { emit Approval(owner, spender, value); } } function _spendAllowance( address owner, address spender, uint256 value ) internal virtual { uint256 currentAllowance = allowance(owner, spender); if (currentAllowance != type(uint256).max) { if (currentAllowance < value) { revert ERC20InsufficientAllowance( spender, currentAllowance, value ); } unchecked { _approve(owner, spender, currentAllowance - value, false); } } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","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":"value","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":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"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":"value","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":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405234801562000010575f80fd5b506040518060400160405280600d81526020017f50696e6b792046696e616e6365000000000000000000000000000000000000008152506003908162000057919062000626565b506040518060400160405280600581526020017f50494e4b59000000000000000000000000000000000000000000000000000000815250600490816200009e919062000626565b50601260055f6101000a81548160ff021916908360ff16021790555062000107620000ce6200010d60201b60201c565b60055f9054906101000a900460ff16600a620000eb919062000893565b62989680620000fb9190620008e3565b6200011460201b60201c565b62000a2c565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000187575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016200017e919062000970565b60405180910390fd5b6200019a5f83836200019e60201b60201c565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603620001f2578060025f828254620001e591906200098b565b92505081905550620002c3565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156200027e578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016200027593929190620009d6565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200030c578060025f828254039250508190555062000356565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620003b5919062000a11565b60405180910390a3505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200043e57607f821691505b602082108103620004545762000453620003f9565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620004b87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200047b565b620004c486836200047b565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f6200050e620005086200050284620004dc565b620004e5565b620004dc565b9050919050565b5f819050919050565b6200052983620004ee565b62000541620005388262000515565b84845462000487565b825550505050565b5f90565b6200055762000549565b620005648184846200051e565b505050565b5b818110156200058b576200057f5f826200054d565b6001810190506200056a565b5050565b601f821115620005da57620005a4816200045a565b620005af846200046c565b81016020851015620005bf578190505b620005d7620005ce856200046c565b83018262000569565b50505b505050565b5f82821c905092915050565b5f620005fc5f1984600802620005df565b1980831691505092915050565b5f620006168383620005eb565b9150826002028217905092915050565b6200063182620003c2565b67ffffffffffffffff8111156200064d576200064c620003cc565b5b62000659825462000426565b620006668282856200058f565b5f60209050601f8311600181146200069c575f841562000687578287015190505b62000693858262000609565b86555062000702565b601f198416620006ac866200045a565b5f5b82811015620006d557848901518255600182019150602085019450602081019050620006ae565b86831015620006f55784890151620006f1601f891682620005eb565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562000794578086048111156200076c576200076b6200070a565b5b60018516156200077c5780820291505b80810290506200078c8562000737565b94506200074c565b94509492505050565b5f82620007ae576001905062000880565b81620007bd575f905062000880565b8160018114620007d65760028114620007e15762000817565b600191505062000880565b60ff841115620007f657620007f56200070a565b5b8360020a91508482111562000810576200080f6200070a565b5b5062000880565b5060208310610133831016604e8410600b8410161715620008515782820a9050838111156200084b576200084a6200070a565b5b62000880565b62000860848484600162000743565b925090508184048111156200087a57620008796200070a565b5b81810290505b9392505050565b5f60ff82169050919050565b5f6200089f82620004dc565b9150620008ac8362000887565b9250620008db7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200079d565b905092915050565b5f620008ef82620004dc565b9150620008fc83620004dc565b92508282026200090c81620004dc565b915082820484148315176200092657620009256200070a565b5b5092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000958826200092d565b9050919050565b6200096a816200094c565b82525050565b5f602082019050620009855f8301846200095f565b92915050565b5f6200099782620004dc565b9150620009a483620004dc565b9250828201905080821115620009bf57620009be6200070a565b5b92915050565b620009d081620004dc565b82525050565b5f606082019050620009eb5f8301866200095f565b620009fa6020830185620009c5565b62000a096040830184620009c5565b949350505050565b5f60208201905062000a265f830184620009c5565b92915050565b610e088062000a3a5f395ff3fe608060405234801561000f575f80fd5b5060043610610091575f3560e01c8063313ce56711610064578063313ce5671461013157806370a082311461014f57806395d89b411461017f578063a9059cbb1461019d578063dd62ed3e146101cd57610091565b806306fdde0314610095578063095ea7b3146100b357806318160ddd146100e357806323b872dd14610101575b5f80fd5b61009d6101fd565b6040516100aa9190610a81565b60405180910390f35b6100cd60048036038101906100c89190610b32565b61028d565b6040516100da9190610b8a565b60405180910390f35b6100eb6102af565b6040516100f89190610bb2565b60405180910390f35b61011b60048036038101906101169190610bcb565b6102b8565b6040516101289190610b8a565b60405180910390f35b6101396102e6565b6040516101469190610c36565b60405180910390f35b61016960048036038101906101649190610c4f565b6102fb565b6040516101769190610bb2565b60405180910390f35b610187610340565b6040516101949190610a81565b60405180910390f35b6101b760048036038101906101b29190610b32565b6103d0565b6040516101c49190610b8a565b60405180910390f35b6101e760048036038101906101e29190610c7a565b6103f2565b6040516101f49190610bb2565b60405180910390f35b60606003805461020c90610ce5565b80601f016020809104026020016040519081016040528092919081815260200182805461023890610ce5565b80156102835780601f1061025a57610100808354040283529160200191610283565b820191905f5260205f20905b81548152906001019060200180831161026657829003601f168201915b5050505050905090565b5f80610297610474565b90506102a481858561047b565b600191505092915050565b5f600254905090565b5f806102c2610474565b90506102cf85828561048d565b6102da85858561051f565b60019150509392505050565b5f60055f9054906101000a900460ff16905090565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b60606004805461034f90610ce5565b80601f016020809104026020016040519081016040528092919081815260200182805461037b90610ce5565b80156103c65780601f1061039d576101008083540402835291602001916103c6565b820191905f5260205f20905b8154815290600101906020018083116103a957829003601f168201915b5050505050905090565b5f806103da610474565b90506103e781858561051f565b600191505092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b610488838383600161060f565b505050565b5f61049884846103f2565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610519578181101561050a578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161050193929190610d24565b60405180910390fd5b61051884848484035f61060f565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361058f575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016105869190610d59565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036105ff575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016105f69190610d59565b60405180910390fd5b61060a8383836107de565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361067f575f6040517fe602df050000000000000000000000000000000000000000000000000000000081526004016106769190610d59565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036106ef575f6040517f94280d620000000000000000000000000000000000000000000000000000000081526004016106e69190610d59565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555080156107d8578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516107cf9190610bb2565b60405180910390a35b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361082e578060025f8282546108229190610d9f565b925050819055506108fc565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156108b7578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016108ae93929190610d24565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610943578060025f828254039250508190555061098d565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516109ea9190610bb2565b60405180910390a3505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015610a2e578082015181840152602081019050610a13565b5f8484015250505050565b5f601f19601f8301169050919050565b5f610a53826109f7565b610a5d8185610a01565b9350610a6d818560208601610a11565b610a7681610a39565b840191505092915050565b5f6020820190508181035f830152610a998184610a49565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610ace82610aa5565b9050919050565b610ade81610ac4565b8114610ae8575f80fd5b50565b5f81359050610af981610ad5565b92915050565b5f819050919050565b610b1181610aff565b8114610b1b575f80fd5b50565b5f81359050610b2c81610b08565b92915050565b5f8060408385031215610b4857610b47610aa1565b5b5f610b5585828601610aeb565b9250506020610b6685828601610b1e565b9150509250929050565b5f8115159050919050565b610b8481610b70565b82525050565b5f602082019050610b9d5f830184610b7b565b92915050565b610bac81610aff565b82525050565b5f602082019050610bc55f830184610ba3565b92915050565b5f805f60608486031215610be257610be1610aa1565b5b5f610bef86828701610aeb565b9350506020610c0086828701610aeb565b9250506040610c1186828701610b1e565b9150509250925092565b5f60ff82169050919050565b610c3081610c1b565b82525050565b5f602082019050610c495f830184610c27565b92915050565b5f60208284031215610c6457610c63610aa1565b5b5f610c7184828501610aeb565b91505092915050565b5f8060408385031215610c9057610c8f610aa1565b5b5f610c9d85828601610aeb565b9250506020610cae85828601610aeb565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680610cfc57607f821691505b602082108103610d0f57610d0e610cb8565b5b50919050565b610d1e81610ac4565b82525050565b5f606082019050610d375f830186610d15565b610d446020830185610ba3565b610d516040830184610ba3565b949350505050565b5f602082019050610d6c5f830184610d15565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610da982610aff565b9150610db483610aff565b9250828201905080821115610dcc57610dcb610d72565b5b9291505056fea26469706673582212202f751b62d711f515ab84270ee2251d6a919d4af3bdca623740b99e9e87d5984264736f6c63430008160033
Deployed Bytecode
0x608060405234801561000f575f80fd5b5060043610610091575f3560e01c8063313ce56711610064578063313ce5671461013157806370a082311461014f57806395d89b411461017f578063a9059cbb1461019d578063dd62ed3e146101cd57610091565b806306fdde0314610095578063095ea7b3146100b357806318160ddd146100e357806323b872dd14610101575b5f80fd5b61009d6101fd565b6040516100aa9190610a81565b60405180910390f35b6100cd60048036038101906100c89190610b32565b61028d565b6040516100da9190610b8a565b60405180910390f35b6100eb6102af565b6040516100f89190610bb2565b60405180910390f35b61011b60048036038101906101169190610bcb565b6102b8565b6040516101289190610b8a565b60405180910390f35b6101396102e6565b6040516101469190610c36565b60405180910390f35b61016960048036038101906101649190610c4f565b6102fb565b6040516101769190610bb2565b60405180910390f35b610187610340565b6040516101949190610a81565b60405180910390f35b6101b760048036038101906101b29190610b32565b6103d0565b6040516101c49190610b8a565b60405180910390f35b6101e760048036038101906101e29190610c7a565b6103f2565b6040516101f49190610bb2565b60405180910390f35b60606003805461020c90610ce5565b80601f016020809104026020016040519081016040528092919081815260200182805461023890610ce5565b80156102835780601f1061025a57610100808354040283529160200191610283565b820191905f5260205f20905b81548152906001019060200180831161026657829003601f168201915b5050505050905090565b5f80610297610474565b90506102a481858561047b565b600191505092915050565b5f600254905090565b5f806102c2610474565b90506102cf85828561048d565b6102da85858561051f565b60019150509392505050565b5f60055f9054906101000a900460ff16905090565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b60606004805461034f90610ce5565b80601f016020809104026020016040519081016040528092919081815260200182805461037b90610ce5565b80156103c65780601f1061039d576101008083540402835291602001916103c6565b820191905f5260205f20905b8154815290600101906020018083116103a957829003601f168201915b5050505050905090565b5f806103da610474565b90506103e781858561051f565b600191505092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b610488838383600161060f565b505050565b5f61049884846103f2565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610519578181101561050a578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161050193929190610d24565b60405180910390fd5b61051884848484035f61060f565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361058f575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016105869190610d59565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036105ff575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016105f69190610d59565b60405180910390fd5b61060a8383836107de565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361067f575f6040517fe602df050000000000000000000000000000000000000000000000000000000081526004016106769190610d59565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036106ef575f6040517f94280d620000000000000000000000000000000000000000000000000000000081526004016106e69190610d59565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555080156107d8578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516107cf9190610bb2565b60405180910390a35b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361082e578060025f8282546108229190610d9f565b925050819055506108fc565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156108b7578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016108ae93929190610d24565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610943578060025f828254039250508190555061098d565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516109ea9190610bb2565b60405180910390a3505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015610a2e578082015181840152602081019050610a13565b5f8484015250505050565b5f601f19601f8301169050919050565b5f610a53826109f7565b610a5d8185610a01565b9350610a6d818560208601610a11565b610a7681610a39565b840191505092915050565b5f6020820190508181035f830152610a998184610a49565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610ace82610aa5565b9050919050565b610ade81610ac4565b8114610ae8575f80fd5b50565b5f81359050610af981610ad5565b92915050565b5f819050919050565b610b1181610aff565b8114610b1b575f80fd5b50565b5f81359050610b2c81610b08565b92915050565b5f8060408385031215610b4857610b47610aa1565b5b5f610b5585828601610aeb565b9250506020610b6685828601610b1e565b9150509250929050565b5f8115159050919050565b610b8481610b70565b82525050565b5f602082019050610b9d5f830184610b7b565b92915050565b610bac81610aff565b82525050565b5f602082019050610bc55f830184610ba3565b92915050565b5f805f60608486031215610be257610be1610aa1565b5b5f610bef86828701610aeb565b9350506020610c0086828701610aeb565b9250506040610c1186828701610b1e565b9150509250925092565b5f60ff82169050919050565b610c3081610c1b565b82525050565b5f602082019050610c495f830184610c27565b92915050565b5f60208284031215610c6457610c63610aa1565b5b5f610c7184828501610aeb565b91505092915050565b5f8060408385031215610c9057610c8f610aa1565b5b5f610c9d85828601610aeb565b9250506020610cae85828601610aeb565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680610cfc57607f821691505b602082108103610d0f57610d0e610cb8565b5b50919050565b610d1e81610ac4565b82525050565b5f606082019050610d375f830186610d15565b610d446020830185610ba3565b610d516040830184610ba3565b949350505050565b5f602082019050610d6c5f830184610d15565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610da982610aff565b9150610db483610aff565b9250828201905080821115610dcc57610dcb610d72565b5b9291505056fea26469706673582212202f751b62d711f515ab84270ee2251d6a919d4af3bdca623740b99e9e87d5984264736f6c63430008160033
Deployed Bytecode Sourcemap
11996:5086:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12532:91;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13431:215;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12833:99;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13654:283;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12734:91;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12940:118;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12631:95;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13066:182;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13256:167;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12532:91;12577:13;12610:5;12603:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12532:91;:::o;13431:215::-;13529:4;13546:13;13562:12;:10;:12::i;:::-;13546:28;;13585:31;13594:5;13601:7;13610:5;13585:8;:31::i;:::-;13634:4;13627:11;;;13431:215;;;;:::o;12833:99::-;12885:7;12912:12;;12905:19;;12833:99;:::o;13654:283::-;13775:4;13792:15;13810:12;:10;:12::i;:::-;13792:30;;13833:37;13849:4;13855:7;13864:5;13833:15;:37::i;:::-;13881:26;13891:4;13897:2;13901:5;13881:9;:26::i;:::-;13925:4;13918:11;;;13654:283;;;;;:::o;12734:91::-;12783:5;12808:9;;;;;;;;;;;12801:16;;12734:91;:::o;12940:118::-;13005:7;13032:9;:18;13042:7;13032:18;;;;;;;;;;;;;;;;13025:25;;12940:118;;;:::o;12631:95::-;12678:13;12711:7;12704:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12631:95;:::o;13066:182::-;13135:4;13152:13;13168:12;:10;:12::i;:::-;13152:28;;13191:27;13201:5;13208:2;13212:5;13191:9;:27::i;:::-;13236:4;13229:11;;;13066:182;;;;:::o;13256:167::-;13361:7;13388:11;:18;13400:5;13388:18;;;;;;;;;;;;;;;:27;13407:7;13388:27;;;;;;;;;;;;;;;;13381:34;;13256:167;;;;:::o;11563:98::-;11616:7;11643:10;11636:17;;11563:98;:::o;15844:130::-;15929:37;15938:5;15945:7;15954:5;15961:4;15929:8;:37::i;:::-;15844:130;;;:::o;16476:603::-;16610:24;16637:25;16647:5;16654:7;16637:9;:25::i;:::-;16610:52;;16697:17;16677:16;:37;16673:399;;16754:5;16735:16;:24;16731:214;;;16836:7;16866:16;16905:5;16787:142;;;;;;;;;;;;;:::i;:::-;;;;;;;;16731:214;16988:57;16997:5;17004:7;17032:5;17013:16;:24;17039:5;16988:8;:57::i;:::-;16673:399;16599:480;16476:603;;;:::o;13945:308::-;14045:1;14029:18;;:4;:18;;;14025:88;;14098:1;14071:30;;;;;;;;;;;:::i;:::-;;;;;;;;14025:88;14141:1;14127:16;;:2;:16;;;14123:88;;14196:1;14167:32;;;;;;;;;;;:::i;:::-;;;;;;;;14123:88;14221:24;14229:4;14235:2;14239:5;14221:7;:24::i;:::-;13945:308;;;:::o;15982:486::-;16155:1;16138:19;;:5;:19;;;16134:91;;16210:1;16181:32;;;;;;;;;;;:::i;:::-;;;;;;;;16134:91;16258:1;16239:21;;:7;:21;;;16235:92;;16312:1;16284:31;;;;;;;;;;;:::i;:::-;;;;;;;;16235:92;16367:5;16337:11;:18;16349:5;16337:18;;;;;;;;;;;;;;;:27;16356:7;16337:27;;;;;;;;;;;;;;;:35;;;;16387:9;16383:78;;;16434:7;16418:31;;16427:5;16418:31;;;16443:5;16418:31;;;;;;:::i;:::-;;;;;;;;16383:78;15982:486;;;;:::o;14261:1135::-;14367:1;14351:18;;:4;:18;;;14347:552;;14505:5;14489:12;;:21;;;;;;;:::i;:::-;;;;;;;;14347:552;;;14543:19;14565:9;:15;14575:4;14565:15;;;;;;;;;;;;;;;;14543:37;;14613:5;14599:11;:19;14595:117;;;14671:4;14677:11;14690:5;14646:50;;;;;;;;;;;;;:::i;:::-;;;;;;;;14595:117;14867:5;14853:11;:19;14835:9;:15;14845:4;14835:15;;;;;;;;;;;;;;;:37;;;;14528:371;14347:552;14929:1;14915:16;;:2;:16;;;14911:435;;15097:5;15081:12;;:21;;;;;;;;;;;14911:435;;;15314:5;15297:9;:13;15307:2;15297:13;;;;;;;;;;;;;;;;:22;;;;;;;;;;;14911:435;15378:2;15363:25;;15372:4;15363:25;;;15382:5;15363:25;;;;;;:::i;:::-;;;;;;;;14261:1135;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:329::-;4912:6;4961:2;4949:9;4940:7;4936:23;4932:32;4929:119;;;4967:79;;:::i;:::-;4929:119;5087:1;5112:53;5157:7;5148:6;5137:9;5133:22;5112:53;:::i;:::-;5102:63;;5058:117;4853:329;;;;:::o;5188:474::-;5256:6;5264;5313:2;5301:9;5292:7;5288:23;5284:32;5281:119;;;5319:79;;:::i;:::-;5281:119;5439:1;5464:53;5509:7;5500:6;5489:9;5485:22;5464:53;:::i;:::-;5454:63;;5410:117;5566:2;5592:53;5637:7;5628:6;5617:9;5613:22;5592:53;:::i;:::-;5582:63;;5537:118;5188:474;;;;;:::o;5668:180::-;5716:77;5713:1;5706:88;5813:4;5810:1;5803:15;5837:4;5834:1;5827:15;5854:320;5898:6;5935:1;5929:4;5925:12;5915:22;;5982:1;5976:4;5972:12;6003:18;5993:81;;6059:4;6051:6;6047:17;6037:27;;5993:81;6121:2;6113:6;6110:14;6090:18;6087:38;6084:84;;6140:18;;:::i;:::-;6084:84;5905:269;5854:320;;;:::o;6180:118::-;6267:24;6285:5;6267:24;:::i;:::-;6262:3;6255:37;6180:118;;:::o;6304:442::-;6453:4;6491:2;6480:9;6476:18;6468:26;;6504:71;6572:1;6561:9;6557:17;6548:6;6504:71;:::i;:::-;6585:72;6653:2;6642:9;6638:18;6629:6;6585:72;:::i;:::-;6667;6735:2;6724:9;6720:18;6711:6;6667:72;:::i;:::-;6304:442;;;;;;:::o;6752:222::-;6845:4;6883:2;6872:9;6868:18;6860:26;;6896:71;6964:1;6953:9;6949:17;6940:6;6896:71;:::i;:::-;6752:222;;;;:::o;6980:180::-;7028:77;7025:1;7018:88;7125:4;7122:1;7115:15;7149:4;7146:1;7139:15;7166:191;7206:3;7225:20;7243:1;7225:20;:::i;:::-;7220:25;;7259:20;7277:1;7259:20;:::i;:::-;7254:25;;7302:1;7299;7295:9;7288:16;;7323:3;7320:1;7317:10;7314:36;;;7330:18;;:::i;:::-;7314:36;7166:191;;;;:::o
Swarm Source
ipfs://2f751b62d711f515ab84270ee2251d6a919d4af3bdca623740b99e9e87d59842
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
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.