Overview
S Balance
S Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 778 transactions
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Approve | 59686828 | 22 days ago | IN | 0 S | 0.00271419 | ||||
| Approve | 59572836 | 23 days ago | IN | 0 S | 0.00271419 | ||||
| Approve | 59135779 | 30 days ago | IN | 0 S | 0.00271485 | ||||
| Approve | 59135378 | 30 days ago | IN | 0 S | 0.00271485 | ||||
| Approve | 59115838 | 30 days ago | IN | 0 S | 0.00234755 | ||||
| Approve | 58852527 | 33 days ago | IN | 0 S | 0.00236315 | ||||
| Approve | 58759611 | 34 days ago | IN | 0 S | 0.00297756 | ||||
| Approve | 58639050 | 36 days ago | IN | 0 S | 0.00271419 | ||||
| Approve | 58629566 | 36 days ago | IN | 0 S | 0.0024813 | ||||
| Approve | 58619147 | 36 days ago | IN | 0 S | 0.00236315 | ||||
| Transfer | 58585108 | 36 days ago | IN | 0 S | 0.00179025 | ||||
| Transfer | 58585089 | 36 days ago | IN | 0 S | 0.0016269 | ||||
| Approve | 58531061 | 37 days ago | IN | 0 S | 0.00271419 | ||||
| Approve | 58441318 | 38 days ago | IN | 0 S | 0.00271485 | ||||
| Approve | 58441215 | 38 days ago | IN | 0 S | 0.00271485 | ||||
| Approve | 57895162 | 44 days ago | IN | 0 S | 0.00271419 | ||||
| Transfer | 57866665 | 45 days ago | IN | 0 S | 0.00277711 | ||||
| Approve | 57782504 | 46 days ago | IN | 0 S | 0.00236315 | ||||
| Transfer | 57390330 | 51 days ago | IN | 0 S | 0.00151668 | ||||
| Transfer | 57390323 | 51 days ago | IN | 0 S | 0.00202647 | ||||
| Transfer | 57390298 | 51 days ago | IN | 0 S | 0.00202647 | ||||
| Transfer | 57390265 | 51 days ago | IN | 0 S | 0.00202581 | ||||
| Transfer | 57390205 | 51 days ago | IN | 0 S | 0.00202647 | ||||
| Transfer | 57390173 | 51 days ago | IN | 0 S | 0.00202581 | ||||
| Approve | 57325512 | 52 days ago | IN | 0 S | 0.00236315 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Cross-Chain Transactions
Loading...
Loading
Contract Name:
BLADE
Compiler Version
v0.8.30+commit.73712a01
Contract Source Code (Solidity)
/**
*Submitted for verification at SonicScan.org on 2025-05-27
*/
/*
>>>> Razors Edge Into Tomorrow <<<<
@@@@@@@@ @@ @@@@@@ @@@@@@@ @@@@@@
@@@ @ @@@ @ @@@ @ @@ % =@@ @
@@@ . @@@ @ @@@ @ @@ @ =@@ @
@@@ % @@@ @ @@@ % @@ % =@@ %
@@@ @@@ @@@ @ @@@ @ @@@ . @@@
@@@ @@@@ @@@ @ @@@ @@ @ @@ @@ @@@@@@@
@@@ @@@@ @@@ @ @@@ @@@ @ @@@ @@ @
@@@ @@@ @ @@@ @@@ @ @@@ @@ @
@@@ @@@@@@ @ @@@ @@@ @ @@@ @@ @
@@@ @@@@ @ @@@ @@@ @ @@@ @@ @
@@@ @@@@ @@ @ @@@ @ @@@ @@ @==
@@@ @@@@ @@ @@@@@@@@@@ @ @@@ @@ @@@@@@@@
@@@ @@ @@ @@@ @ @@ @
@@@ @@ @@ @@@ @ @@ @
@@@ @@ @@ @@@ @ @@ @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#
*/
// 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/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: Blade.sol
/*
>>>> Razors Edge Into Tomorrow <<<<
@@@@@@@@ @@ @@@@@@ @@@@@@@ @@@@@@
@@@ @ @@@ @ @@@ @ @@ % =@@ @
@@@ . @@@ @ @@@ @ @@ @ =@@ @
@@@ % @@@ @ @@@ % @@ % =@@ %
@@@ @@@ @@@ @ @@@ @ @@@ . @@@
@@@ @@@@ @@@ @ @@@ @@ @ @@ @@ @@@@@@@
@@@ @@@@ @@@ @ @@@ @@@ @ @@@ @@ @
@@@ @@@ @ @@@ @@@ @ @@@ @@ @
@@@ @@@@@@ @ @@@ @@@ @ @@@ @@ @
@@@ @@@@ @ @@@ @@@ @ @@@ @@ @
@@@ @@@@ @@ @ @@@ @ @@@ @@ @==
@@@ @@@@ @@ @@@@@@@@@@ @ @@@ @@ @@@@@@@@
@@@ @@ @@ @@@ @ @@ @
@@@ @@ @@ @@@ @ @@ @
@@@ @@ @@ @@@ @ @@ @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#
*/
pragma solidity ^0.8.0;
contract BLADE is ERC20, Ownable {
uint8 public constant DECIMALS = 18;
uint256 public constant TOTAL_SUPPLY = 1_000_000_000 * (10 ** uint256(DECIMALS));
constructor() ERC20("Blade", "BLADE") Ownable(msg.sender) {
_mint(msg.sender, TOTAL_SUPPLY);
}
function burn(uint256 amount) public {
_burn(msg.sender, amount);
}
function burnFrom(address account, uint256 amount) public virtual {
require(allowance(account, msg.sender) >= amount, "ERC20: burn amount exceeds allowance");
_approve(account, msg.sender, allowance(account, msg.sender) - amount);
_burn(account, amount);
}
// The renounceOwnership function is inherited from Ownable.
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"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"},{"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":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DECIMALS","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TOTAL_SUPPLY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"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":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"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":"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"}]Contract Creation Code
608060405234801561000f575f5ffd5b50336040518060400160405280600581526020017f426c6164650000000000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f424c414445000000000000000000000000000000000000000000000000000000815250816003908161008c91906106f1565b50806004908161009c91906106f1565b5050505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361010f575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161010691906107ff565b60405180910390fd5b61011e8161015360201b60201c565b5061014e33601260ff16600a6101349190610974565b633b9aca0061014391906109be565b61021660201b60201c565b610a8f565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610286575f6040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161027d91906107ff565b60405180910390fd5b6102975f838361029b60201b60201c565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036102eb578060025f8282546102df91906109ff565b925050819055506103b9565b5f5f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610374578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161036b93929190610a41565b60405180910390fd5b8181035f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610400578060025f828254039250508190555061044a565b805f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516104a79190610a76565b60405180910390a3505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061052f57607f821691505b602082108103610542576105416104eb565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026105a47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610569565b6105ae8683610569565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f6105f26105ed6105e8846105c6565b6105cf565b6105c6565b9050919050565b5f819050919050565b61060b836105d8565b61061f610617826105f9565b848454610575565b825550505050565b5f5f905090565b610636610627565b610641818484610602565b505050565b5b81811015610664576106595f8261062e565b600181019050610647565b5050565b601f8211156106a95761067a81610548565b6106838461055a565b81016020851015610692578190505b6106a661069e8561055a565b830182610646565b50505b505050565b5f82821c905092915050565b5f6106c95f19846008026106ae565b1980831691505092915050565b5f6106e183836106ba565b9150826002028217905092915050565b6106fa826104b4565b67ffffffffffffffff811115610713576107126104be565b5b61071d8254610518565b610728828285610668565b5f60209050601f831160018114610759575f8415610747578287015190505b61075185826106d6565b8655506107b8565b601f19841661076786610548565b5f5b8281101561078e57848901518255600182019150602085019450602081019050610769565b868310156107ab57848901516107a7601f8916826106ba565b8355505b6001600288020188555050505b505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6107e9826107c0565b9050919050565b6107f9816107df565b82525050565b5f6020820190506108125f8301846107f0565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f5f8291508390505b600185111561089a5780860481111561087657610875610818565b5b60018516156108855780820291505b808102905061089385610845565b945061085a565b94509492505050565b5f826108b2576001905061096d565b816108bf575f905061096d565b81600181146108d557600281146108df5761090e565b600191505061096d565b60ff8411156108f1576108f0610818565b5b8360020a91508482111561090857610907610818565b5b5061096d565b5060208310610133831016604e8410600b84101617156109435782820a90508381111561093e5761093d610818565b5b61096d565b6109508484846001610851565b9250905081840481111561096757610966610818565b5b81810290505b9392505050565b5f61097e826105c6565b9150610989836105c6565b92506109b67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846108a3565b905092915050565b5f6109c8826105c6565b91506109d3836105c6565b92508282026109e1816105c6565b915082820484148315176109f8576109f7610818565b5b5092915050565b5f610a09826105c6565b9150610a14836105c6565b9250828201905080821115610a2c57610a2b610818565b5b92915050565b610a3b816105c6565b82525050565b5f606082019050610a545f8301866107f0565b610a616020830185610a32565b610a6e6040830184610a32565b949350505050565b5f602082019050610a895f830184610a32565b92915050565b6114e380610a9c5f395ff3fe608060405234801561000f575f5ffd5b50600436106100fe575f3560e01c8063715018a61161009557806395d89b411161006457806395d89b4114610288578063a9059cbb146102a6578063dd62ed3e146102d6578063f2fde38b14610306576100fe565b8063715018a61461022657806379cc6790146102305780638da5cb5b1461024c578063902d55a51461026a576100fe565b80632e0f2625116100d15780632e0f26251461019e578063313ce567146101bc57806342966c68146101da57806370a08231146101f6576100fe565b806306fdde0314610102578063095ea7b31461012057806318160ddd1461015057806323b872dd1461016e575b5f5ffd5b61010a610322565b6040516101179190610eb6565b60405180910390f35b61013a60048036038101906101359190610f67565b6103b2565b6040516101479190610fbf565b60405180910390f35b6101586103d4565b6040516101659190610fe7565b60405180910390f35b61018860048036038101906101839190611000565b6103dd565b6040516101959190610fbf565b60405180910390f35b6101a661040b565b6040516101b3919061106b565b60405180910390f35b6101c4610410565b6040516101d1919061106b565b60405180910390f35b6101f460048036038101906101ef9190611084565b610418565b005b610210600480360381019061020b91906110af565b610425565b60405161021d9190610fe7565b60405180910390f35b61022e61046a565b005b61024a60048036038101906102459190610f67565b61047d565b005b6102546104f6565b60405161026191906110e9565b60405180910390f35b61027261051e565b60405161027f9190610fe7565b60405180910390f35b610290610541565b60405161029d9190610eb6565b60405180910390f35b6102c060048036038101906102bb9190610f67565b6105d1565b6040516102cd9190610fbf565b60405180910390f35b6102f060048036038101906102eb9190611102565b6105f3565b6040516102fd9190610fe7565b60405180910390f35b610320600480360381019061031b91906110af565b610675565b005b6060600380546103319061116d565b80601f016020809104026020016040519081016040528092919081815260200182805461035d9061116d565b80156103a85780601f1061037f576101008083540402835291602001916103a8565b820191905f5260205f20905b81548152906001019060200180831161038b57829003601f168201915b5050505050905090565b5f5f6103bc6106f9565b90506103c9818585610700565b600191505092915050565b5f600254905090565b5f5f6103e76106f9565b90506103f4858285610712565b6103ff8585856107a5565b60019150509392505050565b601281565b5f6012905090565b6104223382610895565b50565b5f5f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610472610914565b61047b5f61099b565b565b8061048883336105f3565b10156104c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104c09061120d565b60405180910390fd5b6104e88233836104d986336105f3565b6104e39190611258565b610700565b6104f28282610895565b5050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b601260ff16600a61052f91906113ba565b633b9aca0061053e9190611404565b81565b6060600480546105509061116d565b80601f016020809104026020016040519081016040528092919081815260200182805461057c9061116d565b80156105c75780601f1061059e576101008083540402835291602001916105c7565b820191905f5260205f20905b8154815290600101906020018083116105aa57829003601f168201915b5050505050905090565b5f5f6105db6106f9565b90506105e88185856107a5565b600191505092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61067d610914565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036106ed575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016106e491906110e9565b60405180910390fd5b6106f68161099b565b50565b5f33905090565b61070d8383836001610a5e565b505050565b5f61071d84846105f3565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81101561079f5781811015610790578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161078793929190611445565b60405180910390fd5b61079e84848484035f610a5e565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610815575f6040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260040161080c91906110e9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610885575f6040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161087c91906110e9565b60405180910390fd5b610890838383610c2d565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610905575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016108fc91906110e9565b60405180910390fd5b610910825f83610c2d565b5050565b61091c6106f9565b73ffffffffffffffffffffffffffffffffffffffff1661093a6104f6565b73ffffffffffffffffffffffffffffffffffffffff16146109995761095d6106f9565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161099091906110e9565b60405180910390fd5b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610ace575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401610ac591906110e9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610b3e575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401610b3591906110e9565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015610c27578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610c1e9190610fe7565b60405180910390a35b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610c7d578060025f828254610c71919061147a565b92505081905550610d4b565b5f5f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610d06578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401610cfd93929190611445565b60405180910390fd5b8181035f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d92578060025f8282540392505081905550610ddc565b805f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610e399190610fe7565b60405180910390a3505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610e8882610e46565b610e928185610e50565b9350610ea2818560208601610e60565b610eab81610e6e565b840191505092915050565b5f6020820190508181035f830152610ece8184610e7e565b905092915050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610f0382610eda565b9050919050565b610f1381610ef9565b8114610f1d575f5ffd5b50565b5f81359050610f2e81610f0a565b92915050565b5f819050919050565b610f4681610f34565b8114610f50575f5ffd5b50565b5f81359050610f6181610f3d565b92915050565b5f5f60408385031215610f7d57610f7c610ed6565b5b5f610f8a85828601610f20565b9250506020610f9b85828601610f53565b9150509250929050565b5f8115159050919050565b610fb981610fa5565b82525050565b5f602082019050610fd25f830184610fb0565b92915050565b610fe181610f34565b82525050565b5f602082019050610ffa5f830184610fd8565b92915050565b5f5f5f6060848603121561101757611016610ed6565b5b5f61102486828701610f20565b935050602061103586828701610f20565b925050604061104686828701610f53565b9150509250925092565b5f60ff82169050919050565b61106581611050565b82525050565b5f60208201905061107e5f83018461105c565b92915050565b5f6020828403121561109957611098610ed6565b5b5f6110a684828501610f53565b91505092915050565b5f602082840312156110c4576110c3610ed6565b5b5f6110d184828501610f20565b91505092915050565b6110e381610ef9565b82525050565b5f6020820190506110fc5f8301846110da565b92915050565b5f5f6040838503121561111857611117610ed6565b5b5f61112585828601610f20565b925050602061113685828601610f20565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061118457607f821691505b60208210810361119757611196611140565b5b50919050565b7f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f775f8201527f616e636500000000000000000000000000000000000000000000000000000000602082015250565b5f6111f7602483610e50565b91506112028261119d565b604082019050919050565b5f6020820190508181035f830152611224816111eb565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61126282610f34565b915061126d83610f34565b92508282039050818111156112855761128461122b565b5b92915050565b5f8160011c9050919050565b5f5f8291508390505b60018511156112e0578086048111156112bc576112bb61122b565b5b60018516156112cb5780820291505b80810290506112d98561128b565b94506112a0565b94509492505050565b5f826112f857600190506113b3565b81611305575f90506113b3565b816001811461131b576002811461132557611354565b60019150506113b3565b60ff8411156113375761133661122b565b5b8360020a91508482111561134e5761134d61122b565b5b506113b3565b5060208310610133831016604e8410600b84101617156113895782820a9050838111156113845761138361122b565b5b6113b3565b6113968484846001611297565b925090508184048111156113ad576113ac61122b565b5b81810290505b9392505050565b5f6113c482610f34565b91506113cf83610f34565b92506113fc7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846112e9565b905092915050565b5f61140e82610f34565b915061141983610f34565b925082820261142781610f34565b9150828204841483151761143e5761143d61122b565b5b5092915050565b5f6060820190506114585f8301866110da565b6114656020830185610fd8565b6114726040830184610fd8565b949350505050565b5f61148482610f34565b915061148f83610f34565b92508282019050808211156114a7576114a661122b565b5b9291505056fea2646970667358221220033e75754533dc8fa43de12c1fea235e75cf0bad05c2981e162e0e5831a72e2864736f6c634300081e0033
Deployed Bytecode
0x608060405234801561000f575f5ffd5b50600436106100fe575f3560e01c8063715018a61161009557806395d89b411161006457806395d89b4114610288578063a9059cbb146102a6578063dd62ed3e146102d6578063f2fde38b14610306576100fe565b8063715018a61461022657806379cc6790146102305780638da5cb5b1461024c578063902d55a51461026a576100fe565b80632e0f2625116100d15780632e0f26251461019e578063313ce567146101bc57806342966c68146101da57806370a08231146101f6576100fe565b806306fdde0314610102578063095ea7b31461012057806318160ddd1461015057806323b872dd1461016e575b5f5ffd5b61010a610322565b6040516101179190610eb6565b60405180910390f35b61013a60048036038101906101359190610f67565b6103b2565b6040516101479190610fbf565b60405180910390f35b6101586103d4565b6040516101659190610fe7565b60405180910390f35b61018860048036038101906101839190611000565b6103dd565b6040516101959190610fbf565b60405180910390f35b6101a661040b565b6040516101b3919061106b565b60405180910390f35b6101c4610410565b6040516101d1919061106b565b60405180910390f35b6101f460048036038101906101ef9190611084565b610418565b005b610210600480360381019061020b91906110af565b610425565b60405161021d9190610fe7565b60405180910390f35b61022e61046a565b005b61024a60048036038101906102459190610f67565b61047d565b005b6102546104f6565b60405161026191906110e9565b60405180910390f35b61027261051e565b60405161027f9190610fe7565b60405180910390f35b610290610541565b60405161029d9190610eb6565b60405180910390f35b6102c060048036038101906102bb9190610f67565b6105d1565b6040516102cd9190610fbf565b60405180910390f35b6102f060048036038101906102eb9190611102565b6105f3565b6040516102fd9190610fe7565b60405180910390f35b610320600480360381019061031b91906110af565b610675565b005b6060600380546103319061116d565b80601f016020809104026020016040519081016040528092919081815260200182805461035d9061116d565b80156103a85780601f1061037f576101008083540402835291602001916103a8565b820191905f5260205f20905b81548152906001019060200180831161038b57829003601f168201915b5050505050905090565b5f5f6103bc6106f9565b90506103c9818585610700565b600191505092915050565b5f600254905090565b5f5f6103e76106f9565b90506103f4858285610712565b6103ff8585856107a5565b60019150509392505050565b601281565b5f6012905090565b6104223382610895565b50565b5f5f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610472610914565b61047b5f61099b565b565b8061048883336105f3565b10156104c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104c09061120d565b60405180910390fd5b6104e88233836104d986336105f3565b6104e39190611258565b610700565b6104f28282610895565b5050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b601260ff16600a61052f91906113ba565b633b9aca0061053e9190611404565b81565b6060600480546105509061116d565b80601f016020809104026020016040519081016040528092919081815260200182805461057c9061116d565b80156105c75780601f1061059e576101008083540402835291602001916105c7565b820191905f5260205f20905b8154815290600101906020018083116105aa57829003601f168201915b5050505050905090565b5f5f6105db6106f9565b90506105e88185856107a5565b600191505092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61067d610914565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036106ed575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016106e491906110e9565b60405180910390fd5b6106f68161099b565b50565b5f33905090565b61070d8383836001610a5e565b505050565b5f61071d84846105f3565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81101561079f5781811015610790578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161078793929190611445565b60405180910390fd5b61079e84848484035f610a5e565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610815575f6040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260040161080c91906110e9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610885575f6040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161087c91906110e9565b60405180910390fd5b610890838383610c2d565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610905575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016108fc91906110e9565b60405180910390fd5b610910825f83610c2d565b5050565b61091c6106f9565b73ffffffffffffffffffffffffffffffffffffffff1661093a6104f6565b73ffffffffffffffffffffffffffffffffffffffff16146109995761095d6106f9565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161099091906110e9565b60405180910390fd5b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610ace575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401610ac591906110e9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610b3e575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401610b3591906110e9565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015610c27578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610c1e9190610fe7565b60405180910390a35b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610c7d578060025f828254610c71919061147a565b92505081905550610d4b565b5f5f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610d06578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401610cfd93929190611445565b60405180910390fd5b8181035f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d92578060025f8282540392505081905550610ddc565b805f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610e399190610fe7565b60405180910390a3505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610e8882610e46565b610e928185610e50565b9350610ea2818560208601610e60565b610eab81610e6e565b840191505092915050565b5f6020820190508181035f830152610ece8184610e7e565b905092915050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610f0382610eda565b9050919050565b610f1381610ef9565b8114610f1d575f5ffd5b50565b5f81359050610f2e81610f0a565b92915050565b5f819050919050565b610f4681610f34565b8114610f50575f5ffd5b50565b5f81359050610f6181610f3d565b92915050565b5f5f60408385031215610f7d57610f7c610ed6565b5b5f610f8a85828601610f20565b9250506020610f9b85828601610f53565b9150509250929050565b5f8115159050919050565b610fb981610fa5565b82525050565b5f602082019050610fd25f830184610fb0565b92915050565b610fe181610f34565b82525050565b5f602082019050610ffa5f830184610fd8565b92915050565b5f5f5f6060848603121561101757611016610ed6565b5b5f61102486828701610f20565b935050602061103586828701610f20565b925050604061104686828701610f53565b9150509250925092565b5f60ff82169050919050565b61106581611050565b82525050565b5f60208201905061107e5f83018461105c565b92915050565b5f6020828403121561109957611098610ed6565b5b5f6110a684828501610f53565b91505092915050565b5f602082840312156110c4576110c3610ed6565b5b5f6110d184828501610f20565b91505092915050565b6110e381610ef9565b82525050565b5f6020820190506110fc5f8301846110da565b92915050565b5f5f6040838503121561111857611117610ed6565b5b5f61112585828601610f20565b925050602061113685828601610f20565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061118457607f821691505b60208210810361119757611196611140565b5b50919050565b7f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f775f8201527f616e636500000000000000000000000000000000000000000000000000000000602082015250565b5f6111f7602483610e50565b91506112028261119d565b604082019050919050565b5f6020820190508181035f830152611224816111eb565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61126282610f34565b915061126d83610f34565b92508282039050818111156112855761128461122b565b5b92915050565b5f8160011c9050919050565b5f5f8291508390505b60018511156112e0578086048111156112bc576112bb61122b565b5b60018516156112cb5780820291505b80810290506112d98561128b565b94506112a0565b94509492505050565b5f826112f857600190506113b3565b81611305575f90506113b3565b816001811461131b576002811461132557611354565b60019150506113b3565b60ff8411156113375761133661122b565b5b8360020a91508482111561134e5761134d61122b565b5b506113b3565b5060208310610133831016604e8410600b84101617156113895782820a9050838111156113845761138361122b565b5b6113b3565b6113968484846001611297565b925090508184048111156113ad576113ac61122b565b5b81810290505b9392505050565b5f6113c482610f34565b91506113cf83610f34565b92506113fc7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846112e9565b905092915050565b5f61140e82610f34565b915061141983610f34565b925082820261142781610f34565b9150828204841483151761143e5761143d61122b565b5b5092915050565b5f6060820190506114585f8301866110da565b6114656020830185610fd8565b6114726040830184610fd8565b949350505050565b5f61148482610f34565b915061148f83610f34565b92508282019050808211156114a7576114a661122b565b5b9291505056fea2646970667358221220033e75754533dc8fa43de12c1fea235e75cf0bad05c2981e162e0e5831a72e2864736f6c634300081e0033
Deployed Bytecode Sourcemap
28509:735:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14440:91;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16733:190;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15542:99;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17533:249;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28549:35;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15393:84;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28796:81;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15704:118;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26162:103;;;:::i;:::-;;28885:288;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25487:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28591:80;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14650:95;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16027:182;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16272:142;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26420:220;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14440:91;14485:13;14518:5;14511:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14440:91;:::o;16733:190::-;16806:4;16823:13;16839:12;:10;:12::i;:::-;16823:28;;16862:31;16871:5;16878:7;16887:5;16862:8;:31::i;:::-;16911:4;16904:11;;;16733:190;;;;:::o;15542:99::-;15594:7;15621:12;;15614:19;;15542:99;:::o;17533:249::-;17620:4;17637:15;17655:12;:10;:12::i;:::-;17637:30;;17678:37;17694:4;17700:7;17709:5;17678:15;:37::i;:::-;17726:26;17736:4;17742:2;17746:5;17726:9;:26::i;:::-;17770:4;17763:11;;;17533:249;;;;;:::o;28549:35::-;28582:2;28549:35;:::o;15393:84::-;15442:5;15467:2;15460:9;;15393:84;:::o;28796:81::-;28844:25;28850:10;28862:6;28844:5;:25::i;:::-;28796:81;:::o;15704:118::-;15769:7;15796:9;:18;15806:7;15796:18;;;;;;;;;;;;;;;;15789:25;;15704:118;;;:::o;26162:103::-;25373:13;:11;:13::i;:::-;26227:30:::1;26254:1;26227:18;:30::i;:::-;26162:103::o:0;28885:288::-;29004:6;28970:30;28980:7;28989:10;28970:9;:30::i;:::-;:40;;28962:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;29062:70;29071:7;29080:10;29125:6;29092:30;29102:7;29111:10;29092:9;:30::i;:::-;:39;;;;:::i;:::-;29062:8;:70::i;:::-;29143:22;29149:7;29158:6;29143:5;:22::i;:::-;28885:288;;:::o;25487:87::-;25533:7;25560:6;;;;;;;;;;;25553:13;;25487:87;:::o;28591:80::-;28582:2;28653:17;;28647:2;:23;;;;:::i;:::-;28630:13;:41;;;;:::i;:::-;28591:80;:::o;14650:95::-;14697:13;14730:7;14723:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14650:95;:::o;16027:182::-;16096:4;16113:13;16129:12;:10;:12::i;:::-;16113:28;;16152:27;16162:5;16169:2;16173:5;16152:9;:27::i;:::-;16197:4;16190:11;;;16027:182;;;;:::o;16272:142::-;16352:7;16379:11;:18;16391:5;16379:18;;;;;;;;;;;;;;;:27;16398:7;16379:27;;;;;;;;;;;;;;;;16372:34;;16272:142;;;;:::o;26420:220::-;25373:13;:11;:13::i;:::-;26525:1:::1;26505:22;;:8;:22;;::::0;26501:93:::1;;26579:1;26551:31;;;;;;;;;;;:::i;:::-;;;;;;;;26501:93;26604:28;26623:8;26604:18;:28::i;:::-;26420:220:::0;:::o;5759:98::-;5812:7;5839:10;5832:17;;5759:98;:::o;21592:130::-;21677:37;21686:5;21693:7;21702:5;21709:4;21677:8;:37::i;:::-;21592:130;;;:::o;23324:486::-;23424:24;23451:25;23461:5;23468:7;23451:9;:25::i;:::-;23424:52;;23510:17;23491:16;:36;23487:316;;;23567:5;23548:16;:24;23544:132;;;23627:7;23636:16;23654:5;23600:60;;;;;;;;;;;;;:::i;:::-;;;;;;;;23544:132;23719:57;23728:5;23735:7;23763:5;23744:16;:24;23770:5;23719:8;:57::i;:::-;23487:316;23413:397;23324:486;;;:::o;18167:308::-;18267:1;18251:18;;:4;:18;;;18247:88;;18320:1;18293:30;;;;;;;;;;;:::i;:::-;;;;;;;;18247:88;18363:1;18349:16;;:2;:16;;;18345:88;;18418:1;18389:32;;;;;;;;;;;:::i;:::-;;;;;;;;18345:88;18443:24;18451:4;18457:2;18461:5;18443:7;:24::i;:::-;18167:308;;;:::o;20828:211::-;20918:1;20899:21;;:7;:21;;;20895:91;;20971:1;20944:30;;;;;;;;;;;:::i;:::-;;;;;;;;20895:91;20996:35;21004:7;21021:1;21025:5;20996:7;:35::i;:::-;20828:211;;:::o;25652:166::-;25723:12;:10;:12::i;:::-;25712:23;;:7;:5;:7::i;:::-;:23;;;25708:103;;25786:12;:10;:12::i;:::-;25759:40;;;;;;;;;;;:::i;:::-;;;;;;;;25708:103;25652:166::o;26800:191::-;26874:16;26893:6;;;;;;;;;;;26874:25;;26919:8;26910:6;;:17;;;;;;;;;;;;;;;;;;26974:8;26943:40;;26964:8;26943:40;;;;;;;;;;;;26863:128;26800:191;:::o;22589:443::-;22719:1;22702:19;;:5;:19;;;22698:91;;22774:1;22745:32;;;;;;;;;;;:::i;:::-;;;;;;;;22698:91;22822:1;22803:21;;:7;:21;;;22799:92;;22876:1;22848:31;;;;;;;;;;;:::i;:::-;;;;;;;;22799:92;22931:5;22901:11;:18;22913:5;22901:18;;;;;;;;;;;;;;;:27;22920:7;22901:27;;;;;;;;;;;;;;;:35;;;;22951:9;22947:78;;;22998:7;22982:31;;22991:5;22982:31;;;23007:5;22982:31;;;;;;:::i;:::-;;;;;;;;22947:78;22589:443;;;;:::o;18799:1135::-;18905:1;18889:18;;:4;:18;;;18885:552;;19043:5;19027:12;;:21;;;;;;;:::i;:::-;;;;;;;;18885:552;;;19081:19;19103:9;:15;19113:4;19103:15;;;;;;;;;;;;;;;;19081:37;;19151:5;19137:11;:19;19133:117;;;19209:4;19215:11;19228:5;19184:50;;;;;;;;;;;;;:::i;:::-;;;;;;;;19133:117;19405:5;19391:11;:19;19373:9;:15;19383:4;19373:15;;;;;;;;;;;;;;;:37;;;;19066:371;18885:552;19467:1;19453:16;;:2;:16;;;19449:435;;19635:5;19619:12;;:21;;;;;;;;;;;19449:435;;;19852:5;19835:9;:13;19845:2;19835:13;;;;;;;;;;;;;;;;:22;;;;;;;;;;;19449:435;19916:2;19901:25;;19910:4;19901:25;;;19920:5;19901:25;;;;;;:::i;:::-;;;;;;;;18799: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:223::-;6900:34;6896:1;6888:6;6884:14;6877:58;6969:6;6964:2;6956:6;6952:15;6945:31;6760:223;:::o;6989:366::-;7131:3;7152:67;7216:2;7211:3;7152:67;:::i;:::-;7145:74;;7228:93;7317:3;7228:93;:::i;:::-;7346:2;7341:3;7337:12;7330:19;;6989:366;;;:::o;7361:419::-;7527:4;7565:2;7554:9;7550:18;7542:26;;7614:9;7608:4;7604:20;7600:1;7589:9;7585:17;7578:47;7642:131;7768:4;7642:131;:::i;:::-;7634:139;;7361:419;;;:::o;7786:180::-;7834:77;7831:1;7824:88;7931:4;7928:1;7921:15;7955:4;7952:1;7945:15;7972:194;8012:4;8032:20;8050:1;8032:20;:::i;:::-;8027:25;;8066:20;8084:1;8066:20;:::i;:::-;8061:25;;8110:1;8107;8103:9;8095:17;;8134:1;8128:4;8125:11;8122:37;;;8139:18;;:::i;:::-;8122:37;7972:194;;;;:::o;8172:102::-;8214:8;8261:5;8258:1;8254:13;8233:34;;8172:102;;;:::o;8280:848::-;8341:5;8348:4;8372:6;8363:15;;8396:5;8387:14;;8410:712;8431:1;8421:8;8418:15;8410:712;;;8526:4;8521:3;8517:14;8511:4;8508:24;8505:50;;;8535:18;;:::i;:::-;8505:50;8585:1;8575:8;8571:16;8568:451;;;9000:4;8993:5;8989:16;8980:25;;8568:451;9050:4;9044;9040:15;9032:23;;9080:32;9103:8;9080:32;:::i;:::-;9068:44;;8410:712;;;8280:848;;;;;;;:::o;9134:1073::-;9188:5;9379:8;9369:40;;9400:1;9391:10;;9402:5;;9369:40;9428:4;9418:36;;9445:1;9436:10;;9447:5;;9418:36;9514:4;9562:1;9557:27;;;;9598:1;9593:191;;;;9507:277;;9557:27;9575:1;9566:10;;9577:5;;;9593:191;9638:3;9628:8;9625:17;9622:43;;;9645:18;;:::i;:::-;9622:43;9694:8;9691:1;9687:16;9678:25;;9729:3;9722:5;9719:14;9716:40;;;9736:18;;:::i;:::-;9716:40;9769:5;;;9507:277;;9893:2;9883:8;9880:16;9874:3;9868:4;9865:13;9861:36;9843:2;9833:8;9830:16;9825:2;9819:4;9816:12;9812:35;9796:111;9793:246;;;9949:8;9943:4;9939:19;9930:28;;9984:3;9977:5;9974:14;9971:40;;;9991:18;;:::i;:::-;9971:40;10024:5;;9793:246;10064:42;10102:3;10092:8;10086:4;10083:1;10064:42;:::i;:::-;10049:57;;;;10138:4;10133:3;10129:14;10122:5;10119:25;10116:51;;;10147:18;;:::i;:::-;10116:51;10196:4;10189:5;10185:16;10176:25;;9134:1073;;;;;;:::o;10213:285::-;10273:5;10297:23;10315:4;10297:23;:::i;:::-;10289:31;;10341:27;10359:8;10341:27;:::i;:::-;10329:39;;10387:104;10424:66;10414:8;10408:4;10387:104;:::i;:::-;10378:113;;10213:285;;;;:::o;10504:410::-;10544:7;10567:20;10585:1;10567:20;:::i;:::-;10562:25;;10601:20;10619:1;10601:20;:::i;:::-;10596:25;;10656:1;10653;10649:9;10678:30;10696:11;10678:30;:::i;:::-;10667:41;;10857:1;10848:7;10844:15;10841:1;10838:22;10818:1;10811:9;10791:83;10768:139;;10887:18;;:::i;:::-;10768:139;10552:362;10504:410;;;;:::o;10920:442::-;11069:4;11107:2;11096:9;11092:18;11084:26;;11120:71;11188:1;11177:9;11173:17;11164:6;11120:71;:::i;:::-;11201:72;11269:2;11258:9;11254:18;11245:6;11201:72;:::i;:::-;11283;11351:2;11340:9;11336:18;11327:6;11283:72;:::i;:::-;10920:442;;;;;;:::o;11368:191::-;11408:3;11427:20;11445:1;11427:20;:::i;:::-;11422:25;;11461:20;11479:1;11461:20;:::i;:::-;11456:25;;11504:1;11501;11497:9;11490:16;;11525:3;11522:1;11519:10;11516:36;;;11532:18;;:::i;:::-;11516:36;11368:191;;;;:::o
Swarm Source
ipfs://033e75754533dc8fa43de12c1fea235e75cf0bad05c2981e162e0e5831a72e28
Loading...
Loading
Loading...
Loading
OVERVIEW
For degens, by degens. Razors is a community of NFT degens, aiming to cut it's way through the Sonic ecosystem.Loading...
Loading
Net Worth in USD
$0.00
Net Worth in S
Multichain Portfolio | 35 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.