Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 18 from a total of 18 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Transfer | 24420434 | 35 days ago | IN | 0 ETH | 0.0000538 | ||||
| Transfer | 24339076 | 46 days ago | IN | 0 ETH | 0.00003218 | ||||
| Transfer | 24339056 | 46 days ago | IN | 0 ETH | 0.00003219 | ||||
| Transfer | 24174770 | 69 days ago | IN | 0 ETH | 0.00005382 | ||||
| Transfer | 24030296 | 89 days ago | IN | 0 ETH | 0.00002643 | ||||
| Transfer | 22424180 | 314 days ago | IN | 0 ETH | 0.00003693 | ||||
| Transfer | 22424143 | 314 days ago | IN | 0 ETH | 0.00003218 | ||||
| Transfer | 22424118 | 314 days ago | IN | 0 ETH | 0.00005381 | ||||
| Transfer | 22410554 | 316 days ago | IN | 0 ETH | 0.0000317 | ||||
| Transfer | 22410533 | 316 days ago | IN | 0 ETH | 0.00002764 | ||||
| Transfer | 22410505 | 316 days ago | IN | 0 ETH | 0.00003171 | ||||
| Transfer | 22410487 | 316 days ago | IN | 0 ETH | 0.00004621 | ||||
| Transfer | 22410461 | 316 days ago | IN | 0 ETH | 0.0000462 | ||||
| Transfer | 22404487 | 317 days ago | IN | 0 ETH | 0.00010207 | ||||
| Transfer | 22397060 | 318 days ago | IN | 0 ETH | 0.0001357 | ||||
| Transfer | 22397003 | 318 days ago | IN | 0 ETH | 0.0001357 | ||||
| Transfer | 22396989 | 318 days ago | IN | 0 ETH | 0.00014881 | ||||
| Transfer | 22367648 | 322 days ago | IN | 0 ETH | 0.00006087 |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
Whitestone
Compiler Version
v0.8.27+commit.40a35a09
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2025-04-28
*/
// SPDX-License-Identifier: MIT
// File: @openzeppelin/contracts/token/ERC20/IERC20.sol
// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/IERC20.sol)
pragma solidity ^0.8.20;
/**
* @dev Interface of the ERC-20 standard as defined in the ERC.
*/
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/IERC20Metadata.sol
// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/extensions/IERC20Metadata.sol)
pragma solidity ^0.8.20;
/**
* @dev Interface for the optional metadata functions from the ERC-20 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/utils/Context.sol
// 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: @openzeppelin/contracts/interfaces/draft-IERC6093.sol
// OpenZeppelin Contracts (last updated v5.1.0) (interfaces/draft-IERC6093.sol)
pragma solidity ^0.8.20;
/**
* @dev Standard ERC-20 Errors
* Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 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 ERC-721 Errors
* Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens.
*/
interface IERC721Errors {
/**
* @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-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 ERC-1155 Errors
* Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 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/token/ERC20/ERC20.sol
// OpenZeppelin Contracts (last updated v5.3.0) (token/ERC20/ERC20.sol)
pragma solidity ^0.8.20;
/**
* @dev Implementation of the {IERC20} interface.
*
* This implementation is agnostic to the way tokens are created. This means
* that a supply mechanism has to be added in a derived contract using {_mint}.
*
* TIP: For a detailed writeup see our guide
* https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How
* to implement supply mechanisms].
*
* The default value of {decimals} is 18. To change this, you should override
* this function so it returns a different value.
*
* We have followed general OpenZeppelin Contracts guidelines: functions revert
* instead returning `false` on failure. This behavior is nonetheless
* conventional and does not conflict with the expectations of ERC-20
* applications.
*/
abstract contract ERC20 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;
/**
* @dev Sets the values for {name} and {symbol}.
*
* Both values are immutable: they can only be set once during construction.
*/
constructor(string memory name_, string memory symbol_) {
_name = name_;
_symbol = symbol_;
}
/**
* @dev Returns the name of the token.
*/
function name() public view virtual returns (string memory) {
return _name;
}
/**
* @dev Returns the symbol of the token, usually a shorter version of the
* name.
*/
function symbol() public view virtual returns (string memory) {
return _symbol;
}
/**
* @dev Returns the number of decimals used to get its user representation.
* For example, if `decimals` equals `2`, a balance of `505` tokens should
* be displayed to a user as `5.05` (`505 / 10 ** 2`).
*
* Tokens usually opt for a value of 18, imitating the relationship between
* Ether and Wei. This is the default value returned by this function, unless
* it's overridden.
*
* NOTE: This information is only used for _display_ purposes: it in
* no way affects any of the arithmetic of the contract, including
* {IERC20-balanceOf} and {IERC20-transfer}.
*/
function decimals() public view virtual returns (uint8) {
return 18;
}
/**
* @dev See {IERC20-totalSupply}.
*/
function totalSupply() public view virtual returns (uint256) {
return _totalSupply;
}
/**
* @dev See {IERC20-balanceOf}.
*/
function balanceOf(address account) public view virtual returns (uint256) {
return _balances[account];
}
/**
* @dev See {IERC20-transfer}.
*
* Requirements:
*
* - `to` cannot be the zero address.
* - the caller must have a balance of at least `value`.
*/
function transfer(address to, uint256 value) public virtual returns (bool) {
address owner = _msgSender();
_transfer(owner, to, value);
return true;
}
/**
* @dev See {IERC20-allowance}.
*/
function allowance(address owner, address spender) public view virtual returns (uint256) {
return _allowances[owner][spender];
}
/**
* @dev See {IERC20-approve}.
*
* NOTE: If `value` is the maximum `uint256`, the allowance is not updated on
* `transferFrom`. This is semantically equivalent to an infinite approval.
*
* Requirements:
*
* - `spender` cannot be the zero address.
*/
function approve(address spender, uint256 value) public virtual returns (bool) {
address owner = _msgSender();
_approve(owner, spender, value);
return true;
}
/**
* @dev See {IERC20-transferFrom}.
*
* Skips emitting an {Approval} event indicating an allowance update. This is not
* required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve].
*
* NOTE: Does not update the allowance if the current allowance
* is the maximum `uint256`.
*
* Requirements:
*
* - `from` and `to` cannot be the zero address.
* - `from` must have a balance of at least `value`.
* - the caller must have allowance for ``from``'s tokens of at least
* `value`.
*/
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;
}
/**
* @dev Moves a `value` amount of tokens from `from` to `to`.
*
* This internal function is equivalent to {transfer}, and can be used to
* e.g. implement automatic token fees, slashing mechanisms, etc.
*
* Emits a {Transfer} event.
*
* NOTE: This function is not virtual, {_update} should be overridden instead.
*/
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);
}
/**
* @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`
* (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding
* this function.
*
* Emits a {Transfer} event.
*/
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);
}
/**
* @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).
* Relies on the `_update` mechanism
*
* Emits a {Transfer} event with `from` set to the zero address.
*
* NOTE: This function is not virtual, {_update} should be overridden instead.
*/
function _mint(address account, uint256 value) internal {
if (account == address(0)) {
revert ERC20InvalidReceiver(address(0));
}
_update(address(0), account, value);
}
/**
* @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.
* Relies on the `_update` mechanism.
*
* Emits a {Transfer} event with `to` set to the zero address.
*
* NOTE: This function is not virtual, {_update} should be overridden instead
*/
function _burn(address account, uint256 value) internal {
if (account == address(0)) {
revert ERC20InvalidSender(address(0));
}
_update(account, address(0), value);
}
/**
* @dev Sets `value` as the allowance of `spender` over the `owner`'s tokens.
*
* This internal function is equivalent to `approve`, and can be used to
* e.g. set automatic allowances for certain subsystems, etc.
*
* Emits an {Approval} event.
*
* Requirements:
*
* - `owner` cannot be the zero address.
* - `spender` cannot be the zero address.
*
* Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument.
*/
function _approve(address owner, address spender, uint256 value) internal {
_approve(owner, spender, value, true);
}
/**
* @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.
*
* By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by
* `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any
* `Approval` event during `transferFrom` operations.
*
* Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to
* true using the following override:
*
* ```solidity
* function _approve(address owner, address spender, uint256 value, bool) internal virtual override {
* super._approve(owner, spender, value, true);
* }
* ```
*
* Requirements are the same as {_approve}.
*/
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);
}
}
/**
* @dev Updates `owner`'s allowance for `spender` based on spent `value`.
*
* Does not update the allowance value in case of infinite allowance.
* Revert if not enough allowance is available.
*
* Does not emit an {Approval} event.
*/
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);
}
}
}
}
// File: @openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol
// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/extensions/ERC20Burnable.sol)
pragma solidity ^0.8.20;
/**
* @dev Extension of {ERC20} that allows token holders to destroy both their own
* tokens and those that they have an allowance for, in a way that can be
* recognized off-chain (via event analysis).
*/
abstract contract ERC20Burnable is Context, ERC20 {
/**
* @dev Destroys a `value` amount of tokens from the caller.
*
* See {ERC20-_burn}.
*/
function burn(uint256 value) public virtual {
_burn(_msgSender(), value);
}
/**
* @dev Destroys a `value` amount of tokens from `account`, deducting from
* the caller's allowance.
*
* See {ERC20-_burn} and {ERC20-allowance}.
*
* Requirements:
*
* - the caller must have allowance for ``accounts``'s tokens of at least
* `value`.
*/
function burnFrom(address account, uint256 value) public virtual {
_spendAllowance(account, _msgSender(), value);
_burn(account, value);
}
}
// File: @openzeppelin/contracts/utils/Pausable.sol
// OpenZeppelin Contracts (last updated v5.3.0) (utils/Pausable.sol)
pragma solidity ^0.8.20;
/**
* @dev Contract module which allows children to implement an emergency stop
* mechanism that can be triggered by an authorized account.
*
* This module is used through inheritance. It will make available the
* modifiers `whenNotPaused` and `whenPaused`, which can be applied to
* the functions of your contract. Note that they will not be pausable by
* simply including this module, only once the modifiers are put in place.
*/
abstract contract Pausable is Context {
bool private _paused;
/**
* @dev Emitted when the pause is triggered by `account`.
*/
event Paused(address account);
/**
* @dev Emitted when the pause is lifted by `account`.
*/
event Unpaused(address account);
/**
* @dev The operation failed because the contract is paused.
*/
error EnforcedPause();
/**
* @dev The operation failed because the contract is not paused.
*/
error ExpectedPause();
/**
* @dev Modifier to make a function callable only when the contract is not paused.
*
* Requirements:
*
* - The contract must not be paused.
*/
modifier whenNotPaused() {
_requireNotPaused();
_;
}
/**
* @dev Modifier to make a function callable only when the contract is paused.
*
* Requirements:
*
* - The contract must be paused.
*/
modifier whenPaused() {
_requirePaused();
_;
}
/**
* @dev Returns true if the contract is paused, and false otherwise.
*/
function paused() public view virtual returns (bool) {
return _paused;
}
/**
* @dev Throws if the contract is paused.
*/
function _requireNotPaused() internal view virtual {
if (paused()) {
revert EnforcedPause();
}
}
/**
* @dev Throws if the contract is not paused.
*/
function _requirePaused() internal view virtual {
if (!paused()) {
revert ExpectedPause();
}
}
/**
* @dev Triggers stopped state.
*
* Requirements:
*
* - The contract must not be paused.
*/
function _pause() internal virtual whenNotPaused {
_paused = true;
emit Paused(_msgSender());
}
/**
* @dev Returns to normal state.
*
* Requirements:
*
* - The contract must be paused.
*/
function _unpause() internal virtual whenPaused {
_paused = false;
emit Unpaused(_msgSender());
}
}
// File: @openzeppelin/contracts/token/ERC20/extensions/ERC20Pausable.sol
// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/extensions/ERC20Pausable.sol)
pragma solidity ^0.8.20;
/**
* @dev ERC-20 token with pausable token transfers, minting and burning.
*
* Useful for scenarios such as preventing trades until the end of an evaluation
* period, or having an emergency switch for freezing all token transfers in the
* event of a large bug.
*
* IMPORTANT: This contract does not include public pause and unpause functions. In
* addition to inheriting this contract, you must define both functions, invoking the
* {Pausable-_pause} and {Pausable-_unpause} internal functions, with appropriate
* access control, e.g. using {AccessControl} or {Ownable}. Not doing so will
* make the contract pause mechanism of the contract unreachable, and thus unusable.
*/
abstract contract ERC20Pausable is ERC20, Pausable {
/**
* @dev See {ERC20-_update}.
*
* Requirements:
*
* - the contract must not be paused.
*/
function _update(address from, address to, uint256 value) internal virtual override whenNotPaused {
super._update(from, to, value);
}
}
// File: @openzeppelin/contracts/access/Ownable.sol
// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)
pragma solidity ^0.8.20;
/**
* @dev Contract module which provides a basic access control mechanism, where
* there is an account (an owner) that can be granted exclusive access to
* specific functions.
*
* The initial owner is set to the address provided by the deployer. This can
* later be changed with {transferOwnership}.
*
* This module is used through inheritance. It will make available the modifier
* `onlyOwner`, which can be applied to your functions to restrict their use to
* the owner.
*/
abstract contract Ownable is Context {
address private _owner;
/**
* @dev The caller account is not authorized to perform an operation.
*/
error OwnableUnauthorizedAccount(address account);
/**
* @dev The owner is not a valid owner account. (eg. `address(0)`)
*/
error OwnableInvalidOwner(address owner);
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the address provided by the deployer as the initial owner.
*/
constructor(address initialOwner) {
if (initialOwner == address(0)) {
revert OwnableInvalidOwner(address(0));
}
_transferOwnership(initialOwner);
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
_checkOwner();
_;
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view virtual returns (address) {
return _owner;
}
/**
* @dev Throws if the sender is not the owner.
*/
function _checkOwner() internal view virtual {
if (owner() != _msgSender()) {
revert OwnableUnauthorizedAccount(_msgSender());
}
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby disabling any functionality that is only available to the owner.
*/
function renounceOwnership() public virtual onlyOwner {
_transferOwnership(address(0));
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Can only be called by the current owner.
*/
function transferOwnership(address newOwner) public virtual onlyOwner {
if (newOwner == address(0)) {
revert OwnableInvalidOwner(address(0));
}
_transferOwnership(newOwner);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Internal function without access restriction.
*/
function _transferOwnership(address newOwner) internal virtual {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}
// File: whst.sol
// Compatible with OpenZeppelin Contracts ^5.0.0
pragma solidity ^0.8.27;
contract Whitestone is ERC20, ERC20Burnable, ERC20Pausable, Ownable {
constructor(address recipient, address initialOwner)
ERC20("Whitestone", "WHST")
Ownable(initialOwner)
{
_mint(recipient, 50000000 * 10 ** decimals());
}
function pause() public onlyOwner {
_pause();
}
function unpause() public onlyOwner {
_unpause();
}
function mint(address to, uint256 amount) public onlyOwner {
_mint(to, amount);
}
// The following functions are overrides required by Solidity.
function _update(address from, address to, uint256 value)
internal
override(ERC20, ERC20Pausable)
{
super._update(from, to, value);
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"address","name":"initialOwner","type":"address"}],"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"},{"inputs":[],"name":"EnforcedPause","type":"error"},{"inputs":[],"name":"ExpectedPause","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","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":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","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":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","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"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
608060405234801561000f575f5ffd5b50604051612033380380612033833981810160405281019061003191906105de565b806040518060400160405280600a81526020017f576869746573746f6e65000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f574853540000000000000000000000000000000000000000000000000000000081525081600390816100ad9190610859565b5080600490816100bd9190610859565b5050505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610130575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016101279190610937565b60405180910390fd5b61013f8161017f60201b60201c565b506101788261015261024460201b60201c565b600a61015e9190610ab8565b6302faf08061016d9190610b02565b61024c60201b60201c565b5050610bd3565b5f600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f6012905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036102bc575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016102b39190610937565b60405180910390fd5b6102cd5f83836102d160201b60201c565b5050565b6102e28383836102e760201b60201c565b505050565b6102f561030b60201b60201c565b61030683838361035260201b60201c565b505050565b61031961056b60201b60201c565b15610350576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036103a2578060025f8282546103969190610b43565b92505081905550610470565b5f5f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561042b578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161042293929190610b85565b60405180910390fd5b8181035f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036104b7578060025f8282540392505081905550610501565b805f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161055e9190610bba565b60405180910390a3505050565b5f60055f9054906101000a900460ff16905090565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6105ad82610584565b9050919050565b6105bd816105a3565b81146105c7575f5ffd5b50565b5f815190506105d8816105b4565b92915050565b5f5f604083850312156105f4576105f3610580565b5b5f610601858286016105ca565b9250506020610612858286016105ca565b9150509250929050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061069757607f821691505b6020821081036106aa576106a9610653565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830261070c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826106d1565b61071686836106d1565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f61075a6107556107508461072e565b610737565b61072e565b9050919050565b5f819050919050565b61077383610740565b61078761077f82610761565b8484546106dd565b825550505050565b5f5f905090565b61079e61078f565b6107a981848461076a565b505050565b5b818110156107cc576107c15f82610796565b6001810190506107af565b5050565b601f821115610811576107e2816106b0565b6107eb846106c2565b810160208510156107fa578190505b61080e610806856106c2565b8301826107ae565b50505b505050565b5f82821c905092915050565b5f6108315f1984600802610816565b1980831691505092915050565b5f6108498383610822565b9150826002028217905092915050565b6108628261061c565b67ffffffffffffffff81111561087b5761087a610626565b5b6108858254610680565b6108908282856107d0565b5f60209050601f8311600181146108c1575f84156108af578287015190505b6108b9858261083e565b865550610920565b601f1984166108cf866106b0565b5f5b828110156108f6578489015182556001820191506020850194506020810190506108d1565b86831015610913578489015161090f601f891682610822565b8355505b6001600288020188555050505b505050505050565b610931816105a3565b82525050565b5f60208201905061094a5f830184610928565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f5f8291508390505b60018511156109d2578086048111156109ae576109ad610950565b5b60018516156109bd5780820291505b80810290506109cb8561097d565b9450610992565b94509492505050565b5f826109ea5760019050610aa5565b816109f7575f9050610aa5565b8160018114610a0d5760028114610a1757610a46565b6001915050610aa5565b60ff841115610a2957610a28610950565b5b8360020a915084821115610a4057610a3f610950565b5b50610aa5565b5060208310610133831016604e8410600b8410161715610a7b5782820a905083811115610a7657610a75610950565b5b610aa5565b610a888484846001610989565b92509050818404811115610a9f57610a9e610950565b5b81810290505b9392505050565b5f60ff82169050919050565b5f610ac28261072e565b9150610acd83610aac565b9250610afa7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846109db565b905092915050565b5f610b0c8261072e565b9150610b178361072e565b9250828202610b258161072e565b91508282048414831517610b3c57610b3b610950565b5b5092915050565b5f610b4d8261072e565b9150610b588361072e565b9250828201905080821115610b7057610b6f610950565b5b92915050565b610b7f8161072e565b82525050565b5f606082019050610b985f830186610928565b610ba56020830185610b76565b610bb26040830184610b76565b949350505050565b5f602082019050610bcd5f830184610b76565b92915050565b61145380610be05f395ff3fe608060405234801561000f575f5ffd5b5060043610610114575f3560e01c806370a08231116100a05780638da5cb5b1161006f5780638da5cb5b1461029257806395d89b41146102b0578063a9059cbb146102ce578063dd62ed3e146102fe578063f2fde38b1461032e57610114565b806370a0823114610232578063715018a61461026257806379cc67901461026c5780638456cb591461028857610114565b8063313ce567116100e7578063313ce567146101b45780633f4ba83a146101d257806340c10f19146101dc57806342966c68146101f85780635c975abb1461021457610114565b806306fdde0314610118578063095ea7b31461013657806318160ddd1461016657806323b872dd14610184575b5f5ffd5b61012061034a565b60405161012d91906110a1565b60405180910390f35b610150600480360381019061014b9190611152565b6103da565b60405161015d91906111aa565b60405180910390f35b61016e6103fc565b60405161017b91906111d2565b60405180910390f35b61019e600480360381019061019991906111eb565b610405565b6040516101ab91906111aa565b60405180910390f35b6101bc610433565b6040516101c99190611256565b60405180910390f35b6101da61043b565b005b6101f660048036038101906101f19190611152565b61044d565b005b610212600480360381019061020d919061126f565b610463565b005b61021c610477565b60405161022991906111aa565b60405180910390f35b61024c6004803603810190610247919061129a565b61048c565b60405161025991906111d2565b60405180910390f35b61026a6104d1565b005b61028660048036038101906102819190611152565b6104e4565b005b610290610504565b005b61029a610516565b6040516102a791906112d4565b60405180910390f35b6102b861053f565b6040516102c591906110a1565b60405180910390f35b6102e860048036038101906102e39190611152565b6105cf565b6040516102f591906111aa565b60405180910390f35b610318600480360381019061031391906112ed565b6105f1565b60405161032591906111d2565b60405180910390f35b6103486004803603810190610343919061129a565b610673565b005b60606003805461035990611358565b80601f016020809104026020016040519081016040528092919081815260200182805461038590611358565b80156103d05780601f106103a7576101008083540402835291602001916103d0565b820191905f5260205f20905b8154815290600101906020018083116103b357829003601f168201915b5050505050905090565b5f5f6103e46106f7565b90506103f18185856106fe565b600191505092915050565b5f600254905090565b5f5f61040f6106f7565b905061041c858285610710565b6104278585856107a3565b60019150509392505050565b5f6012905090565b610443610893565b61044b61091a565b565b610455610893565b61045f828261097b565b5050565b61047461046e6106f7565b826109fa565b50565b5f60055f9054906101000a900460ff16905090565b5f5f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6104d9610893565b6104e25f610a79565b565b6104f6826104f06106f7565b83610710565b61050082826109fa565b5050565b61050c610893565b610514610b3e565b565b5f600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461054e90611358565b80601f016020809104026020016040519081016040528092919081815260200182805461057a90611358565b80156105c55780601f1061059c576101008083540402835291602001916105c5565b820191905f5260205f20905b8154815290600101906020018083116105a857829003601f168201915b5050505050905090565b5f5f6105d96106f7565b90506105e68185856107a3565b600191505092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61067b610893565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036106eb575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016106e291906112d4565b60405180910390fd5b6106f481610a79565b50565b5f33905090565b61070b8383836001610ba0565b505050565b5f61071b84846105f1565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81101561079d578181101561078e578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161078593929190611388565b60405180910390fd5b61079c84848484035f610ba0565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610813575f6040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260040161080a91906112d4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610883575f6040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161087a91906112d4565b60405180910390fd5b61088e838383610d6f565b505050565b61089b6106f7565b73ffffffffffffffffffffffffffffffffffffffff166108b9610516565b73ffffffffffffffffffffffffffffffffffffffff1614610918576108dc6106f7565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161090f91906112d4565b60405180910390fd5b565b610922610d7f565b5f60055f6101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6109646106f7565b60405161097191906112d4565b60405180910390a1565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036109eb575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016109e291906112d4565b60405180910390fd5b6109f65f8383610d6f565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610a6a575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401610a6191906112d4565b60405180910390fd5b610a75825f83610d6f565b5050565b5f600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b610b46610dbf565b600160055f6101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610b896106f7565b604051610b9691906112d4565b60405180910390a1565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610c10575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401610c0791906112d4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610c80575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401610c7791906112d4565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015610d69578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610d6091906111d2565b60405180910390a35b50505050565b610d7a838383610e00565b505050565b610d87610477565b610dbd576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b610dc7610477565b15610dfe576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b610e08610dbf565b610e13838383610e18565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610e68578060025f828254610e5c91906113ea565b92505081905550610f36565b5f5f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610ef1578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401610ee893929190611388565b60405180910390fd5b8181035f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f7d578060025f8282540392505081905550610fc7565b805f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161102491906111d2565b60405180910390a3505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61107382611031565b61107d818561103b565b935061108d81856020860161104b565b61109681611059565b840191505092915050565b5f6020820190508181035f8301526110b98184611069565b905092915050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6110ee826110c5565b9050919050565b6110fe816110e4565b8114611108575f5ffd5b50565b5f81359050611119816110f5565b92915050565b5f819050919050565b6111318161111f565b811461113b575f5ffd5b50565b5f8135905061114c81611128565b92915050565b5f5f60408385031215611168576111676110c1565b5b5f6111758582860161110b565b92505060206111868582860161113e565b9150509250929050565b5f8115159050919050565b6111a481611190565b82525050565b5f6020820190506111bd5f83018461119b565b92915050565b6111cc8161111f565b82525050565b5f6020820190506111e55f8301846111c3565b92915050565b5f5f5f60608486031215611202576112016110c1565b5b5f61120f8682870161110b565b93505060206112208682870161110b565b92505060406112318682870161113e565b9150509250925092565b5f60ff82169050919050565b6112508161123b565b82525050565b5f6020820190506112695f830184611247565b92915050565b5f60208284031215611284576112836110c1565b5b5f6112918482850161113e565b91505092915050565b5f602082840312156112af576112ae6110c1565b5b5f6112bc8482850161110b565b91505092915050565b6112ce816110e4565b82525050565b5f6020820190506112e75f8301846112c5565b92915050565b5f5f60408385031215611303576113026110c1565b5b5f6113108582860161110b565b92505060206113218582860161110b565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061136f57607f821691505b6020821081036113825761138161132b565b5b50919050565b5f60608201905061139b5f8301866112c5565b6113a860208301856111c3565b6113b560408301846111c3565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6113f48261111f565b91506113ff8361111f565b9250828201905080821115611417576114166113bd565b5b9291505056fea26469706673582212204c4f4147eb9379afb6ba8d2111e77f0b6cc45f9d40edb1e9126e02faafcb110864736f6c634300081b003300000000000000000000000038ed76012ebafd8bcb0e3d53dbc284f180556c3d00000000000000000000000038ed76012ebafd8bcb0e3d53dbc284f180556c3d
Deployed Bytecode
0x608060405234801561000f575f5ffd5b5060043610610114575f3560e01c806370a08231116100a05780638da5cb5b1161006f5780638da5cb5b1461029257806395d89b41146102b0578063a9059cbb146102ce578063dd62ed3e146102fe578063f2fde38b1461032e57610114565b806370a0823114610232578063715018a61461026257806379cc67901461026c5780638456cb591461028857610114565b8063313ce567116100e7578063313ce567146101b45780633f4ba83a146101d257806340c10f19146101dc57806342966c68146101f85780635c975abb1461021457610114565b806306fdde0314610118578063095ea7b31461013657806318160ddd1461016657806323b872dd14610184575b5f5ffd5b61012061034a565b60405161012d91906110a1565b60405180910390f35b610150600480360381019061014b9190611152565b6103da565b60405161015d91906111aa565b60405180910390f35b61016e6103fc565b60405161017b91906111d2565b60405180910390f35b61019e600480360381019061019991906111eb565b610405565b6040516101ab91906111aa565b60405180910390f35b6101bc610433565b6040516101c99190611256565b60405180910390f35b6101da61043b565b005b6101f660048036038101906101f19190611152565b61044d565b005b610212600480360381019061020d919061126f565b610463565b005b61021c610477565b60405161022991906111aa565b60405180910390f35b61024c6004803603810190610247919061129a565b61048c565b60405161025991906111d2565b60405180910390f35b61026a6104d1565b005b61028660048036038101906102819190611152565b6104e4565b005b610290610504565b005b61029a610516565b6040516102a791906112d4565b60405180910390f35b6102b861053f565b6040516102c591906110a1565b60405180910390f35b6102e860048036038101906102e39190611152565b6105cf565b6040516102f591906111aa565b60405180910390f35b610318600480360381019061031391906112ed565b6105f1565b60405161032591906111d2565b60405180910390f35b6103486004803603810190610343919061129a565b610673565b005b60606003805461035990611358565b80601f016020809104026020016040519081016040528092919081815260200182805461038590611358565b80156103d05780601f106103a7576101008083540402835291602001916103d0565b820191905f5260205f20905b8154815290600101906020018083116103b357829003601f168201915b5050505050905090565b5f5f6103e46106f7565b90506103f18185856106fe565b600191505092915050565b5f600254905090565b5f5f61040f6106f7565b905061041c858285610710565b6104278585856107a3565b60019150509392505050565b5f6012905090565b610443610893565b61044b61091a565b565b610455610893565b61045f828261097b565b5050565b61047461046e6106f7565b826109fa565b50565b5f60055f9054906101000a900460ff16905090565b5f5f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6104d9610893565b6104e25f610a79565b565b6104f6826104f06106f7565b83610710565b61050082826109fa565b5050565b61050c610893565b610514610b3e565b565b5f600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461054e90611358565b80601f016020809104026020016040519081016040528092919081815260200182805461057a90611358565b80156105c55780601f1061059c576101008083540402835291602001916105c5565b820191905f5260205f20905b8154815290600101906020018083116105a857829003601f168201915b5050505050905090565b5f5f6105d96106f7565b90506105e68185856107a3565b600191505092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61067b610893565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036106eb575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016106e291906112d4565b60405180910390fd5b6106f481610a79565b50565b5f33905090565b61070b8383836001610ba0565b505050565b5f61071b84846105f1565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81101561079d578181101561078e578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161078593929190611388565b60405180910390fd5b61079c84848484035f610ba0565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610813575f6040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260040161080a91906112d4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610883575f6040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161087a91906112d4565b60405180910390fd5b61088e838383610d6f565b505050565b61089b6106f7565b73ffffffffffffffffffffffffffffffffffffffff166108b9610516565b73ffffffffffffffffffffffffffffffffffffffff1614610918576108dc6106f7565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161090f91906112d4565b60405180910390fd5b565b610922610d7f565b5f60055f6101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6109646106f7565b60405161097191906112d4565b60405180910390a1565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036109eb575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016109e291906112d4565b60405180910390fd5b6109f65f8383610d6f565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610a6a575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401610a6191906112d4565b60405180910390fd5b610a75825f83610d6f565b5050565b5f600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b610b46610dbf565b600160055f6101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610b896106f7565b604051610b9691906112d4565b60405180910390a1565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610c10575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401610c0791906112d4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610c80575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401610c7791906112d4565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015610d69578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610d6091906111d2565b60405180910390a35b50505050565b610d7a838383610e00565b505050565b610d87610477565b610dbd576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b610dc7610477565b15610dfe576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b610e08610dbf565b610e13838383610e18565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610e68578060025f828254610e5c91906113ea565b92505081905550610f36565b5f5f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610ef1578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401610ee893929190611388565b60405180910390fd5b8181035f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f7d578060025f8282540392505081905550610fc7565b805f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161102491906111d2565b60405180910390a3505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61107382611031565b61107d818561103b565b935061108d81856020860161104b565b61109681611059565b840191505092915050565b5f6020820190508181035f8301526110b98184611069565b905092915050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6110ee826110c5565b9050919050565b6110fe816110e4565b8114611108575f5ffd5b50565b5f81359050611119816110f5565b92915050565b5f819050919050565b6111318161111f565b811461113b575f5ffd5b50565b5f8135905061114c81611128565b92915050565b5f5f60408385031215611168576111676110c1565b5b5f6111758582860161110b565b92505060206111868582860161113e565b9150509250929050565b5f8115159050919050565b6111a481611190565b82525050565b5f6020820190506111bd5f83018461119b565b92915050565b6111cc8161111f565b82525050565b5f6020820190506111e55f8301846111c3565b92915050565b5f5f5f60608486031215611202576112016110c1565b5b5f61120f8682870161110b565b93505060206112208682870161110b565b92505060406112318682870161113e565b9150509250925092565b5f60ff82169050919050565b6112508161123b565b82525050565b5f6020820190506112695f830184611247565b92915050565b5f60208284031215611284576112836110c1565b5b5f6112918482850161113e565b91505092915050565b5f602082840312156112af576112ae6110c1565b5b5f6112bc8482850161110b565b91505092915050565b6112ce816110e4565b82525050565b5f6020820190506112e75f8301846112c5565b92915050565b5f5f60408385031215611303576113026110c1565b5b5f6113108582860161110b565b92505060206113218582860161110b565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061136f57607f821691505b6020821081036113825761138161132b565b5b50919050565b5f60608201905061139b5f8301866112c5565b6113a860208301856111c3565b6113b560408301846111c3565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6113f48261111f565b91506113ff8361111f565b9250828201905080821115611417576114166113bd565b5b9291505056fea26469706673582212204c4f4147eb9379afb6ba8d2111e77f0b6cc45f9d40edb1e9126e02faafcb110864736f6c634300081b0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000038ed76012ebafd8bcb0e3d53dbc284f180556c3d00000000000000000000000038ed76012ebafd8bcb0e3d53dbc284f180556c3d
-----Decoded View---------------
Arg [0] : recipient (address): 0x38eD76012eBAFd8bCB0e3D53DbC284F180556C3D
Arg [1] : initialOwner (address): 0x38eD76012eBAFd8bCB0e3D53DbC284F180556C3D
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 00000000000000000000000038ed76012ebafd8bcb0e3d53dbc284f180556c3d
Arg [1] : 00000000000000000000000038ed76012ebafd8bcb0e3d53dbc284f180556c3d
Deployed Bytecode Sourcemap
30915:761:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13018:91;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15311:190;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14120:99;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16111:249;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13971:84;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31257:65;;;:::i;:::-;;31330:95;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22990:89;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25345:86;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14282:118;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29970:103;;;:::i;:::-;;23408:161;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31188:61;;;:::i;:::-;;29295:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13228:95;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14605:182;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14850:142;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30228:220;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13018:91;13063:13;13096:5;13089:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13018:91;:::o;15311:190::-;15384:4;15401:13;15417:12;:10;:12::i;:::-;15401:28;;15440:31;15449:5;15456:7;15465:5;15440:8;:31::i;:::-;15489:4;15482:11;;;15311:190;;;;:::o;14120:99::-;14172:7;14199:12;;14192:19;;14120:99;:::o;16111:249::-;16198:4;16215:15;16233:12;:10;:12::i;:::-;16215:30;;16256:37;16272:4;16278:7;16287:5;16256:15;:37::i;:::-;16304:26;16314:4;16320:2;16324:5;16304:9;:26::i;:::-;16348:4;16341:11;;;16111:249;;;;;:::o;13971:84::-;14020:5;14045:2;14038:9;;13971:84;:::o;31257:65::-;29181:13;:11;:13::i;:::-;31304:10:::1;:8;:10::i;:::-;31257:65::o:0;31330:95::-;29181:13;:11;:13::i;:::-;31400:17:::1;31406:2;31410:6;31400:5;:17::i;:::-;31330:95:::0;;:::o;22990:89::-;23045:26;23051:12;:10;:12::i;:::-;23065:5;23045;:26::i;:::-;22990:89;:::o;25345:86::-;25392:4;25416:7;;;;;;;;;;;25409:14;;25345:86;:::o;14282:118::-;14347:7;14374:9;:18;14384:7;14374:18;;;;;;;;;;;;;;;;14367:25;;14282:118;;;:::o;29970:103::-;29181:13;:11;:13::i;:::-;30035:30:::1;30062:1;30035:18;:30::i;:::-;29970:103::o:0;23408:161::-;23484:45;23500:7;23509:12;:10;:12::i;:::-;23523:5;23484:15;:45::i;:::-;23540:21;23546:7;23555:5;23540;:21::i;:::-;23408:161;;:::o;31188:61::-;29181:13;:11;:13::i;:::-;31233:8:::1;:6;:8::i;:::-;31188:61::o:0;29295:87::-;29341:7;29368:6;;;;;;;;;;;29361:13;;29295:87;:::o;13228:95::-;13275:13;13308:7;13301:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13228:95;:::o;14605:182::-;14674:4;14691:13;14707:12;:10;:12::i;:::-;14691:28;;14730:27;14740:5;14747:2;14751:5;14730:9;:27::i;:::-;14775:4;14768:11;;;14605:182;;;;:::o;14850:142::-;14930:7;14957:11;:18;14969:5;14957:18;;;;;;;;;;;;;;;:27;14976:7;14957:27;;;;;;;;;;;;;;;;14950:34;;14850:142;;;;:::o;30228:220::-;29181:13;:11;:13::i;:::-;30333:1:::1;30313:22;;:8;:22;;::::0;30309:93:::1;;30387:1;30359:31;;;;;;;;;;;:::i;:::-;;;;;;;;30309:93;30412:28;30431:8;30412:18;:28::i;:::-;30228:220:::0;:::o;4337:98::-;4390:7;4417:10;4410:17;;4337:98;:::o;20170:130::-;20255:37;20264:5;20271:7;20280:5;20287:4;20255:8;:37::i;:::-;20170:130;;;:::o;21902:486::-;22002:24;22029:25;22039:5;22046:7;22029:9;:25::i;:::-;22002:52;;22088:17;22069:16;:36;22065:316;;;22145:5;22126:16;:24;22122:132;;;22205:7;22214:16;22232:5;22178:60;;;;;;;;;;;;;:::i;:::-;;;;;;;;22122:132;22297:57;22306:5;22313:7;22341:5;22322:16;:24;22348:5;22297:8;:57::i;:::-;22065:316;21991:397;21902:486;;;:::o;16745:308::-;16845:1;16829:18;;:4;:18;;;16825:88;;16898:1;16871:30;;;;;;;;;;;:::i;:::-;;;;;;;;16825:88;16941:1;16927:16;;:2;:16;;;16923:88;;16996:1;16967:32;;;;;;;;;;;:::i;:::-;;;;;;;;16923:88;17021:24;17029:4;17035:2;17039:5;17021:7;:24::i;:::-;16745:308;;;:::o;29460:166::-;29531:12;:10;:12::i;:::-;29520:23;;:7;:5;:7::i;:::-;:23;;;29516:103;;29594:12;:10;:12::i;:::-;29567:40;;;;;;;;;;;:::i;:::-;;;;;;;;29516:103;29460:166::o;26246:120::-;25209:16;:14;:16::i;:::-;26315:5:::1;26305:7;;:15;;;;;;;;;;;;;;;;;;26336:22;26345:12;:10;:12::i;:::-;26336:22;;;;;;:::i;:::-;;;;;;;;26246:120::o:0;18865:213::-;18955:1;18936:21;;:7;:21;;;18932:93;;19010:1;18981:32;;;;;;;;;;;:::i;:::-;;;;;;;;18932:93;19035:35;19051:1;19055:7;19064:5;19035:7;:35::i;:::-;18865:213;;:::o;19406:211::-;19496:1;19477:21;;:7;:21;;;19473:91;;19549:1;19522:30;;;;;;;;;;;:::i;:::-;;;;;;;;19473:91;19574:35;19582:7;19599:1;19603:5;19574:7;:35::i;:::-;19406:211;;:::o;30608:191::-;30682:16;30701:6;;;;;;;;;;;30682:25;;30727:8;30718:6;;:17;;;;;;;;;;;;;;;;;;30782:8;30751:40;;30772:8;30751:40;;;;;;;;;;;;30671:128;30608:191;:::o;25987:118::-;24950:19;:17;:19::i;:::-;26057:4:::1;26047:7;;:14;;;;;;;;;;;;;;;;;;26077:20;26084:12;:10;:12::i;:::-;26077:20;;;;;;:::i;:::-;;;;;;;;25987:118::o:0;21167:443::-;21297:1;21280:19;;:5;:19;;;21276:91;;21352:1;21323:32;;;;;;;;;;;:::i;:::-;;;;;;;;21276:91;21400:1;21381:21;;:7;:21;;;21377:92;;21454:1;21426:31;;;;;;;;;;;:::i;:::-;;;;;;;;21377:92;21509:5;21479:11;:18;21491:5;21479:18;;;;;;;;;;;;;;;:27;21498:7;21479:27;;;;;;;;;;;;;;;:35;;;;21529:9;21525:78;;;21576:7;21560:31;;21569:5;21560:31;;;21585:5;21560:31;;;;;;:::i;:::-;;;;;;;;21525:78;21167:443;;;;:::o;31503:170::-;31635:30;31649:4;31655:2;31659:5;31635:13;:30::i;:::-;31503:170;;;:::o;25713:130::-;25777:8;:6;:8::i;:::-;25772:64;;25809:15;;;;;;;;;;;;;;25772:64;25713:130::o;25504:132::-;25570:8;:6;:8::i;:::-;25566:63;;;25602:15;;;;;;;;;;;;;;25566:63;25504:132::o;27471:147::-;24950:19;:17;:19::i;:::-;27580:30:::1;27594:4;27600:2;27604:5;27580:13;:30::i;:::-;27471:147:::0;;;:::o;17377:1135::-;17483:1;17467:18;;:4;:18;;;17463:552;;17621:5;17605:12;;:21;;;;;;;:::i;:::-;;;;;;;;17463:552;;;17659:19;17681:9;:15;17691:4;17681:15;;;;;;;;;;;;;;;;17659:37;;17729:5;17715:11;:19;17711:117;;;17787:4;17793:11;17806:5;17762:50;;;;;;;;;;;;;:::i;:::-;;;;;;;;17711:117;17983:5;17969:11;:19;17951:9;:15;17961:4;17951:15;;;;;;;;;;;;;;;:37;;;;17644:371;17463:552;18045:1;18031:16;;:2;:16;;;18027:435;;18213:5;18197:12;;:21;;;;;;;;;;;18027:435;;;18430:5;18413:9;:13;18423:2;18413:13;;;;;;;;;;;;;;;;:22;;;;;;;;;;;18027:435;18494:2;18479:25;;18488:4;18479:25;;;18498:5;18479:25;;;;;;:::i;:::-;;;;;;;;17377: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:139::-;376:6;371:3;366;360:23;417:1;408:6;403:3;399:16;392:27;287:139;;;:::o;432:102::-;473:6;524:2;520:7;515:2;508:5;504:14;500:28;490:38;;432:102;;;:::o;540:377::-;628:3;656:39;689:5;656:39;:::i;:::-;711:71;775:6;770:3;711:71;:::i;:::-;704:78;;791:65;849:6;844:3;837:4;830:5;826:16;791:65;:::i;:::-;881:29;903:6;881:29;:::i;:::-;876:3;872:39;865:46;;632:285;540:377;;;;:::o;923:313::-;1036:4;1074:2;1063:9;1059:18;1051:26;;1123:9;1117:4;1113:20;1109:1;1098:9;1094:17;1087:47;1151:78;1224:4;1215:6;1151:78;:::i;:::-;1143:86;;923:313;;;;:::o;1323:117::-;1432:1;1429;1422:12;1569:126;1606:7;1646:42;1639:5;1635:54;1624:65;;1569:126;;;:::o;1701:96::-;1738:7;1767:24;1785:5;1767:24;:::i;:::-;1756:35;;1701:96;;;:::o;1803:122::-;1876:24;1894:5;1876:24;:::i;:::-;1869:5;1866:35;1856:63;;1915:1;1912;1905:12;1856:63;1803:122;:::o;1931:139::-;1977:5;2015:6;2002:20;1993:29;;2031:33;2058:5;2031:33;:::i;:::-;1931:139;;;;:::o;2076:77::-;2113:7;2142:5;2131:16;;2076:77;;;:::o;2159:122::-;2232:24;2250:5;2232:24;:::i;:::-;2225:5;2222:35;2212:63;;2271:1;2268;2261:12;2212:63;2159:122;:::o;2287:139::-;2333:5;2371:6;2358:20;2349:29;;2387:33;2414:5;2387:33;:::i;:::-;2287:139;;;;:::o;2432:474::-;2500:6;2508;2557:2;2545:9;2536:7;2532:23;2528:32;2525:119;;;2563:79;;:::i;:::-;2525:119;2683:1;2708:53;2753:7;2744:6;2733:9;2729:22;2708:53;:::i;:::-;2698:63;;2654:117;2810:2;2836:53;2881:7;2872:6;2861:9;2857:22;2836:53;:::i;:::-;2826:63;;2781:118;2432:474;;;;;:::o;2912:90::-;2946:7;2989:5;2982:13;2975:21;2964:32;;2912:90;;;:::o;3008:109::-;3089:21;3104:5;3089:21;:::i;:::-;3084:3;3077:34;3008:109;;:::o;3123:210::-;3210:4;3248:2;3237:9;3233:18;3225:26;;3261:65;3323:1;3312:9;3308:17;3299:6;3261:65;:::i;:::-;3123:210;;;;:::o;3339:118::-;3426:24;3444:5;3426:24;:::i;:::-;3421:3;3414:37;3339:118;;:::o;3463:222::-;3556:4;3594:2;3583:9;3579:18;3571:26;;3607:71;3675:1;3664:9;3660:17;3651:6;3607:71;:::i;:::-;3463:222;;;;:::o;3691:619::-;3768:6;3776;3784;3833:2;3821:9;3812:7;3808:23;3804:32;3801:119;;;3839:79;;:::i;:::-;3801:119;3959:1;3984:53;4029:7;4020:6;4009:9;4005:22;3984:53;:::i;:::-;3974:63;;3930:117;4086:2;4112:53;4157:7;4148:6;4137:9;4133:22;4112:53;:::i;:::-;4102:63;;4057:118;4214:2;4240:53;4285:7;4276:6;4265:9;4261:22;4240:53;:::i;:::-;4230:63;;4185:118;3691:619;;;;;:::o;4316:86::-;4351:7;4391:4;4384:5;4380:16;4369:27;;4316:86;;;:::o;4408:112::-;4491:22;4507:5;4491:22;:::i;:::-;4486:3;4479:35;4408:112;;:::o;4526:214::-;4615:4;4653:2;4642:9;4638:18;4630:26;;4666:67;4730:1;4719:9;4715:17;4706:6;4666:67;:::i;:::-;4526:214;;;;:::o;4746:329::-;4805:6;4854:2;4842:9;4833:7;4829:23;4825:32;4822:119;;;4860:79;;:::i;:::-;4822:119;4980:1;5005:53;5050:7;5041:6;5030:9;5026:22;5005:53;:::i;:::-;4995:63;;4951:117;4746:329;;;;:::o;5081:::-;5140:6;5189:2;5177:9;5168:7;5164:23;5160:32;5157:119;;;5195:79;;:::i;:::-;5157:119;5315:1;5340:53;5385:7;5376:6;5365:9;5361:22;5340:53;:::i;:::-;5330:63;;5286:117;5081:329;;;;:::o;5416:118::-;5503:24;5521:5;5503:24;:::i;:::-;5498:3;5491:37;5416:118;;:::o;5540:222::-;5633:4;5671:2;5660:9;5656:18;5648:26;;5684:71;5752:1;5741:9;5737:17;5728:6;5684:71;:::i;:::-;5540:222;;;;:::o;5768:474::-;5836:6;5844;5893:2;5881:9;5872:7;5868:23;5864:32;5861:119;;;5899:79;;:::i;:::-;5861:119;6019:1;6044:53;6089:7;6080:6;6069:9;6065:22;6044:53;:::i;:::-;6034:63;;5990:117;6146:2;6172:53;6217:7;6208:6;6197:9;6193:22;6172:53;:::i;:::-;6162:63;;6117:118;5768:474;;;;;:::o;6248:180::-;6296:77;6293:1;6286:88;6393:4;6390:1;6383:15;6417:4;6414:1;6407:15;6434:320;6478:6;6515:1;6509:4;6505:12;6495:22;;6562:1;6556:4;6552:12;6583:18;6573:81;;6639:4;6631:6;6627:17;6617:27;;6573:81;6701:2;6693:6;6690:14;6670:18;6667:38;6664:84;;6720:18;;:::i;:::-;6664:84;6485:269;6434:320;;;:::o;6760:442::-;6909:4;6947:2;6936:9;6932:18;6924:26;;6960:71;7028:1;7017:9;7013:17;7004:6;6960:71;:::i;:::-;7041:72;7109:2;7098:9;7094:18;7085:6;7041:72;:::i;:::-;7123;7191:2;7180:9;7176:18;7167:6;7123:72;:::i;:::-;6760:442;;;;;;:::o;7208:180::-;7256:77;7253:1;7246:88;7353:4;7350:1;7343:15;7377:4;7374:1;7367:15;7394:191;7434:3;7453:20;7471:1;7453:20;:::i;:::-;7448:25;;7487:20;7505:1;7487:20;:::i;:::-;7482:25;;7530:1;7527;7523:9;7516:16;;7551:3;7548:1;7545:10;7542:36;;;7558:18;;:::i;:::-;7542:36;7394:191;;;;:::o
Swarm Source
ipfs://4c4f4147eb9379afb6ba8d2111e77f0b6cc45f9d40edb1e9126e02faafcb1108
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
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.