Source Code
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 190 transactions
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Approve | 13332106 | 138 days ago | IN | 0 HYPE | 0.00000807 | ||||
| Approve | 5154942 | 232 days ago | IN | 0 HYPE | 0.00000293 | ||||
| Approve | 5154934 | 232 days ago | IN | 0 HYPE | 0.00000293 | ||||
| Approve | 5139324 | 232 days ago | IN | 0 HYPE | 0.00000464 | ||||
| Approve | 5077847 | 232 days ago | IN | 0 HYPE | 0.00000794 | ||||
| Approve | 5077775 | 232 days ago | IN | 0 HYPE | 0.00000743 | ||||
| Approve | 5071004 | 233 days ago | IN | 0 HYPE | 0.00000467 | ||||
| Approve | 5047415 | 233 days ago | IN | 0 HYPE | 0.00024705 | ||||
| Approve | 5034304 | 233 days ago | IN | 0 HYPE | 0.00000696 | ||||
| Approve | 5010244 | 233 days ago | IN | 0 HYPE | 0.00000464 | ||||
| Approve | 5008915 | 233 days ago | IN | 0 HYPE | 0.00000747 | ||||
| Approve | 5005982 | 233 days ago | IN | 0 HYPE | 0.00935367 | ||||
| Approve | 5005324 | 233 days ago | IN | 0 HYPE | 0.0000044 | ||||
| Approve | 5005195 | 233 days ago | IN | 0 HYPE | 0.00032415 | ||||
| Approve | 5005180 | 233 days ago | IN | 0 HYPE | 0.00000697 | ||||
| Approve | 5005164 | 233 days ago | IN | 0 HYPE | 0.00093957 | ||||
| Approve | 5005067 | 233 days ago | IN | 0 HYPE | 0.00093957 | ||||
| Transfer | 5005047 | 233 days ago | IN | 0 HYPE | 0.00000535 | ||||
| Approve | 5004881 | 233 days ago | IN | 0 HYPE | 0.0000056 | ||||
| Approve | 5004660 | 233 days ago | IN | 0 HYPE | 0.00000701 | ||||
| Approve | 5004585 | 233 days ago | IN | 0 HYPE | 0.00093957 | ||||
| Approve | 5004356 | 233 days ago | IN | 0 HYPE | 0.00006965 | ||||
| Approve | 5004169 | 233 days ago | IN | 0 HYPE | 0.00047212 | ||||
| Approve | 5003989 | 233 days ago | IN | 0 HYPE | 0.00093957 | ||||
| Approve | 5003718 | 233 days ago | IN | 0 HYPE | 0.00023849 |
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Block | From | To | |||
|---|---|---|---|---|---|---|
| 5137615 | 232 days ago | 0.94593462 HYPE | ||||
| 5137615 | 232 days ago | 0.94593462 HYPE | ||||
| 5071128 | 233 days ago | 1.10794654 HYPE | ||||
| 5071128 | 233 days ago | 1.10794654 HYPE | ||||
| 5026893 | 233 days ago | 1.34760362 HYPE | ||||
| 5026893 | 233 days ago | 1.34760362 HYPE | ||||
| 5010167 | 233 days ago | 1.73755001 HYPE | ||||
| 5010167 | 233 days ago | 1.73755001 HYPE | ||||
| 5004715 | 233 days ago | 1.24467164 HYPE | ||||
| 5004715 | 233 days ago | 1.24467164 HYPE | ||||
| 5004588 | 233 days ago | 1.58595331 HYPE | ||||
| 5004588 | 233 days ago | 1.58595331 HYPE | ||||
| 5004504 | 233 days ago | 1.82667198 HYPE | ||||
| 5004504 | 233 days ago | 1.82667198 HYPE | ||||
| 5003794 | 233 days ago | 2.80815144 HYPE | ||||
| 5003794 | 233 days ago | 2.80815144 HYPE | ||||
| 5003148 | 233 days ago | 1.71922843 HYPE | ||||
| 5003148 | 233 days ago | 1.71922843 HYPE | ||||
| 5003101 | 233 days ago | 1.99297993 HYPE | ||||
| 5003101 | 233 days ago | 1.99297993 HYPE | ||||
| 5003099 | 233 days ago | 2.11997153 HYPE | ||||
| 5003099 | 233 days ago | 2.11997153 HYPE | ||||
| 5003092 | 233 days ago | 2.53617376 HYPE | ||||
| 5003092 | 233 days ago | 2.53617376 HYPE | ||||
| 5003012 | 233 days ago | 2.73228088 HYPE |
Cross-Chain Transactions
Loading...
Loading
Contract Name:
Retro
Compiler Version
v0.8.26+commit.8a97fa7a
Optimization Enabled:
Yes with 1000 runs
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT
pragma solidity >=0.8.26;
/**
* @title Retro
* https://t.me/retrodaoportal
* https://www.retrodao.xyz/
*/
import "@openzeppelin/contracts/access/Ownable.sol";
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import "./interfaces/UniswapUtils.sol";
contract Retro is ERC20, Ownable {
mapping(address => bool) private _isExcludedFromFee;
address private constant DEAD = 0x000000000000000000000000000000000000dEaD;
address public w = 0x5555555555555555555555555555555555555555;
address public Pools;
uint256 private _initialTax = 30;
uint256 private _intermediateTax = 20;
uint256 public finalBuyTax = 0;
uint256 public finalSellTax = 5;
uint256 private _blockAtLaunch;
uint256 private _blockRemoveFirstLimits = 30;
uint256 private _blockRemoveSecondLimits = 180;
uint256 private _tTotal = 1_000_000 * 1e18;
uint256 private _maxWalletSize = (_tTotal * 40) / 10000;
uint256 private swapThreshold = (_tTotal * 35) / 10000;
IUniswapV2Router02 private router;
address public pair;
bool private initialized = false;
bool public tradingOpen = false;
bool private inSwap = false;
bool private swapEnabled = false;
modifier lockTheSwap() {
inSwap = true;
_;
inSwap = false;
}
constructor(address initialOwner) ERC20("Retro", "RETRO") Ownable(initialOwner) {
router = IUniswapV2Router02(0xb4a9C4e6Ea8E2191d2FA5B380452a634Fb21240A);
_approve(address(this), address(router), type(uint256).max);
_isExcludedFromFee[owner()] = true;
_isExcludedFromFee[address(this)] = true;
_mint(initialOwner, _tTotal);
emit Transfer(address(0), msg.sender, _tTotal);
}
function initializePair() external onlyOwner returns (address) {
require(!initialized, "Already initialized");
pair = IUniswapV2Factory(router.factory()).createPair(address(this), w);
initialized = true;
return pair;
}
function setPair(address _pair) external onlyOwner {
pair = _pair;
}
function setPools(address _Pools) external onlyOwner {
Pools = _Pools;
_isExcludedFromFee[Pools] = true;
}
function setRouter(address _router) external onlyOwner {
router = IUniswapV2Router02(_router);
_approve(address(this), address(router), type(uint256).max);
}
function setW(address _w) external onlyOwner {
w = _w;
}
function setIsExcludedFromFee(
address _address,
bool _isExcluded
) external onlyOwner {
_isExcludedFromFee[_address] = _isExcluded;
}
function setIsInitialized(bool _initialized) external onlyOwner {
initialized = _initialized;
}
function rescueTokens(address token, uint256 amount) external onlyOwner {
IERC20(token).transfer(msg.sender, amount);
}
function rescueETH(uint256 amount) external onlyOwner {
bool tmpSuccess;
(tmpSuccess, ) = payable(msg.sender).call{value: amount, gas: 5000000}(
""
);
}
function removeLimits() external onlyOwner {
_maxWalletSize = _tTotal;
}
function manageSellTax(uint256 newTax) external onlyOwner {
require(newTax <= 5, "can't be more than 5%");
finalSellTax = newTax;
}
function openTrading() external onlyOwner {
require(!tradingOpen, "trading is already open");
swapEnabled = true;
tradingOpen = true;
_blockAtLaunch = block.number;
}
function transfer(
address recipient,
uint256 amount
) public override returns (bool) {
require(initialized || msg.sender == owner(), "Not yet initialized");
if (msg.sender == pair) {
return update(msg.sender, recipient, amount);
} else {
require(
block.number > _blockAtLaunch + _blockRemoveFirstLimits ||
msg.sender == owner(),
"Not authorized yet"
);
return _basicTransfer(msg.sender, recipient, amount);
}
}
function transferFrom(
address sender,
address recipient,
uint256 amount
) public override returns (bool) {
address spender = msg.sender;
_spendAllowance(sender, spender, amount);
update(sender, recipient, amount);
return true;
}
function update(
address sender,
address recipient,
uint256 amount
) internal returns (bool) {
require(
_isExcludedFromFee[sender] ||
_isExcludedFromFee[recipient] ||
tradingOpen,
"Not authorized to trade yet"
);
uint256 blockSinceLaunch = block.number - _blockAtLaunch;
// Checks max transaction limit
if (blockSinceLaunch < _blockRemoveFirstLimits && _blockAtLaunch != 0) {
if (
sender != owner() && recipient != owner() && recipient != DEAD
) {
if (recipient != pair) {
uint256 _limit = _maxWalletSize;
require(
_isExcludedFromFee[recipient] ||
(balanceOf(recipient) + amount <= _limit),
"Transfer amount exceeds the MaxWallet size."
);
}
}
}
//shouldSwapBack
if (shouldSwapBack() && recipient == pair) {
swapBack();
}
//Check if should Take Fee
uint256 amountReceived = (!shouldTakeFee(sender) ||
!shouldTakeFee(recipient))
? amount
: takeFee(sender, recipient, amount);
_transfer(sender, recipient, amountReceived);
return true;
}
function _basicTransfer(
address sender,
address recipient,
uint256 amount
) internal returns (bool) {
_transfer(sender, recipient, amount);
return true;
}
function shouldTakeFee(address sender) internal view returns (bool) {
return !_isExcludedFromFee[sender];
}
function takeFee(
address sender,
address recipient,
uint256 amount
) internal returns (uint256) {
uint256 feeAmount = 0;
uint256 blockSinceLaunch = block.number - _blockAtLaunch;
uint256 tax;
if (blockSinceLaunch > _blockRemoveSecondLimits) {
if (sender == pair && recipient != pair) {
tax = finalBuyTax;
} else if (sender != pair && recipient == pair) {
tax = finalSellTax;
}
} else if (blockSinceLaunch > _blockRemoveFirstLimits) {
tax = _intermediateTax;
} else {
tax = _initialTax;
}
feeAmount = (amount * tax) / 100;
if (feeAmount > 0) {
_transfer(sender, address(this), feeAmount);
}
return amount - feeAmount;
}
function shouldSwapBack() internal view returns (bool) {
return
msg.sender != pair &&
!inSwap &&
swapEnabled &&
balanceOf(address(this)) >= swapThreshold;
}
function swapBack() internal lockTheSwap {
uint256 amountToSwap = swapThreshold;
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = w;
router.swapExactTokensForETHSupportingFeeOnTransferTokens(
amountToSwap,
0,
path,
address(this),
address(0),
block.timestamp + 5
);
uint256 amountETHDev = address(this).balance;
if (amountETHDev > 0) {
bool tmpSuccess;
(tmpSuccess, ) = payable(owner()).call{
value: amountETHDev,
gas: 5000000
}("");
}
}
function mint(address to, uint256 amount) external {
require(msg.sender == Pools, "Only pools");
_mint(to, amount);
}
function setSwapThreshold(uint256 newTax) external onlyOwner {
swapThreshold = newTax;
}
receive() external payable {}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)
pragma solidity ^0.8.20;
import {Context} from "../utils/Context.sol";
/**
* @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);
}
}// SPDX-License-Identifier: MIT
// 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);
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/ERC20.sol)
pragma solidity ^0.8.20;
import {IERC20} from "./IERC20.sol";
import {IERC20Metadata} from "./extensions/IERC20Metadata.sol";
import {Context} from "../../utils/Context.sol";
import {IERC20Errors} from "../../interfaces/draft-IERC6093.sol";
/**
* @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}.
*
* All two of these 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);
}
}
}
}// SPDX-License-Identifier: MIT
// 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);
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/extensions/IERC20Metadata.sol)
pragma solidity ^0.8.20;
import {IERC20} from "../IERC20.sol";
/**
* @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);
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)
pragma solidity ^0.8.20;
/**
* @dev Provides information about the current execution context, including the
* sender of the transaction and its data. While these are generally available
* via msg.sender and msg.data, they should not be accessed in such a direct
* manner, since when dealing with meta-transactions the account sending and
* paying for execution may not be the actual sender (as far as an application
* is concerned).
*
* This contract is only required for intermediate, library-like contracts.
*/
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
function _contextSuffixLength() internal view virtual returns (uint256) {
return 0;
}
}// SPDX-License-Identifier: MIT
pragma solidity >=0.5.0;
interface IUniswapV2Factory {
function createPair(
address tokenA,
address tokenB
) external returns (address pair);
function getPair(
address tokenA,
address tokenB
) external view returns (address pair);
}
pragma solidity >=0.5.0;
interface IUniswapV2Pair {
function token0() external view returns (address);
function token1() external view returns (address);
function getReserves()
external
view
returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
}
pragma solidity >=0.6.2;
interface IUniswapV2Router01 {
function factory() external pure returns (address);
function WETH() external pure returns (address);
function addLiquidity(
address tokenA,
address tokenB,
uint amountADesired,
uint amountBDesired,
uint amountAMin,
uint amountBMin,
address to,
uint deadline
) external returns (uint amountA, uint amountB, uint liquidity);
function swapExactTokensForTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external returns (uint[] memory amounts);
function swapTokensForExactTokens(
uint amountOut,
uint amountInMax,
address[] calldata path,
address to,
uint deadline
) external returns (uint[] memory amounts);
function swapExactETHForTokens(
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external payable returns (uint[] memory amounts);
function swapTokensForExactETH(
uint amountOut,
uint amountInMax,
address[] calldata path,
address to,
uint deadline
) external returns (uint[] memory amounts);
function swapExactTokensForETH(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external returns (uint[] memory amounts);
function swapETHForExactTokens(
uint amountOut,
address[] calldata path,
address to,
uint deadline
) external payable returns (uint[] memory amounts);
function quote(
uint amountA,
uint reserveA,
uint reserveB
) external pure returns (uint amountB);
}
pragma solidity >=0.6.2;
interface IUniswapV2Router02 is IUniswapV2Router01 {
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
address referrer,
uint deadline
) external;
}{
"evmVersion": "paris",
"libraries": {},
"optimizer": {
"enabled": true,
"runs": 1000
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"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":[{"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":"Pools","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"finalBuyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"finalSellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initializePair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newTax","type":"uint256"}],"name":"manageSellTax","outputs":[],"stateMutability":"nonpayable","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":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_isExcluded","type":"bool"}],"name":"setIsExcludedFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_initialized","type":"bool"}],"name":"setIsInitialized","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"}],"name":"setPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_Pools","type":"address"}],"name":"setPools","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_router","type":"address"}],"name":"setRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newTax","type":"uint256"}],"name":"setSwapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_w","type":"address"}],"name":"setW","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":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","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":"w","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
6080604052600780546001600160a01b031916735555555555555555555555555555555555555555179055601e60098190556014600a556000600b556005600c55600e5560b4600f5569d3c21bcecceda10000006010819055612710906100679060286104d1565b61007191906104ee565b601155612710601054602361008691906104d1565b61009091906104ee565b6012556014805463ffffffff60a01b191690553480156100af57600080fd5b506040516121c33803806121c38339810160408190526100ce91610510565b8060405180604001604052806005815260200164526574726f60d81b81525060405180604001604052806005815260200164524554524f60d81b815250816003908161011a91906105de565b50600461012782826105de565b5050506001600160a01b03811661015957604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6101628161022f565b50601380546001600160a01b03191673b4a9c4e6ea8e2191d2fa5b380452a634fb21240a90811790915561019a903090600019610281565b6001600660006101b26005546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553081526006909252902080549091166001179055601054610200908290610293565b60105460405190815233906000906000805160206121a38339815191529060200160405180910390a3506106af565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b61028e83838360016102cd565b505050565b6001600160a01b0382166102bd5760405163ec442f0560e01b815260006004820152602401610150565b6102c9600083836103a3565b5050565b6001600160a01b0384166102f75760405163e602df0560e01b815260006004820152602401610150565b6001600160a01b03831661032157604051634a1406b160e11b815260006004820152602401610150565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561039d57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161039491815260200190565b60405180910390a35b50505050565b6001600160a01b0383166103ce5780600260008282546103c3919061069c565b909155506104409050565b6001600160a01b038316600090815260208190526040902054818110156104215760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610150565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661045c5760028054829003905561047b565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03166000805160206121a3833981519152836040516104ae91815260200190565b60405180910390a3505050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176104e8576104e86104bb565b92915050565b60008261050b57634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561052257600080fd5b81516001600160a01b038116811461053957600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061056a57607f821691505b60208210810361058a57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561028e57806000526020600020601f840160051c810160208510156105b75750805b601f840160051c820191505b818110156105d757600081556001016105c3565b5050505050565b81516001600160401b038111156105f7576105f7610540565b61060b816106058454610556565b84610590565b6020601f82116001811461063f57600083156106275750848201515b600019600385901b1c1916600184901b1784556105d7565b600084815260208120601f198516915b8281101561066f578785015182556020948501946001909201910161064f565b508482101561068d5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b808201808211156104e8576104e86104bb565b611ae5806106be6000396000f3fe6080604052600436106101e75760003560e01c80638d425e1d11610102578063c0d7865511610095578063ef422a1811610064578063ef422a1814610592578063f245036e146105b2578063f2fde38b146105d2578063ffb54a99146105f257600080fd5b8063c0d7865514610501578063c9567bf914610521578063dd62ed3e14610536578063e6fe10b61461057c57600080fd5b80639e252f00116100d15780639e252f0014610481578063a8aa1b31146104a1578063a9059cbb146104c1578063ae075993146104e157600080fd5b80638d425e1d1461040e5780638da5cb5b1461042e57806395d89b411461044c5780639d0014b11461046157600080fd5b80634fab9e4c1161017a578063715018a611610149578063715018a6146103a4578063751039fc146103b95780638187f516146103ce57806381c819aa146103ee57600080fd5b80634fab9e4c14610323578063573761981461033857806358d375331461035857806370a082311461036e57600080fd5b8063205c9cc7116101b6578063205c9cc71461028f57806323b872dd146102c7578063313ce567146102e757806340c10f191461030357600080fd5b8063013afd14146101f357806306fdde0314610215578063095ea7b31461024057806318160ddd1461027057600080fd5b366101ee57005b600080fd5b3480156101ff57600080fd5b5061021361020e36600461179a565b610613565b005b34801561022157600080fd5b5061022a610654565b60405161023791906117be565b60405180910390f35b34801561024c57600080fd5b5061026061025b366004611821565b6106e6565b6040519015158152602001610237565b34801561027c57600080fd5b506002545b604051908152602001610237565b34801561029b57600080fd5b506007546102af906001600160a01b031681565b6040516001600160a01b039091168152602001610237565b3480156102d357600080fd5b506102606102e236600461184d565b610700565b3480156102f357600080fd5b5060405160128152602001610237565b34801561030f57600080fd5b5061021361031e366004611821565b610725565b34801561032f57600080fd5b506102af610792565b34801561034457600080fd5b50610213610353366004611821565b61093d565b34801561036457600080fd5b50610281600b5481565b34801561037a57600080fd5b5061028161038936600461188e565b6001600160a01b031660009081526020819052604090205490565b3480156103b057600080fd5b506102136109d4565b3480156103c557600080fd5b506102136109e8565b3480156103da57600080fd5b506102136103e936600461188e565b6109f8565b3480156103fa57600080fd5b506102136104093660046118ab565b610a22565b34801561041a57600080fd5b5061021361042936600461188e565b610a80565b34801561043a57600080fd5b506005546001600160a01b03166102af565b34801561045857600080fd5b5061022a610aaa565b34801561046d57600080fd5b5061021361047c3660046118ab565b610ab9565b34801561048d57600080fd5b5061021361049c3660046118ab565b610ac6565b3480156104ad57600080fd5b506014546102af906001600160a01b031681565b3480156104cd57600080fd5b506102606104dc366004611821565b610b22565b3480156104ed57600080fd5b506008546102af906001600160a01b031681565b34801561050d57600080fd5b5061021361051c36600461188e565b610c35565b34801561052d57600080fd5b50610213610c6c565b34801561054257600080fd5b506102816105513660046118c4565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561058857600080fd5b50610281600c5481565b34801561059e57600080fd5b506102136105ad3660046118fd565b610d16565b3480156105be57600080fd5b506102136105cd36600461188e565b610d49565b3480156105de57600080fd5b506102136105ed36600461188e565b610d8b565b3480156105fe57600080fd5b5060145461026090600160a81b900460ff1681565b61061b610ddf565b60148054911515600160a01b027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff909216919091179055565b6060600380546106639061192b565b80601f016020809104026020016040519081016040528092919081815260200182805461068f9061192b565b80156106dc5780601f106106b1576101008083540402835291602001916106dc565b820191906000526020600020905b8154815290600101906020018083116106bf57829003601f168201915b5050505050905090565b6000336106f4818585610e25565b60019150505b92915050565b60003361070e858285610e32565b610719858585610ec9565b50600195945050505050565b6008546001600160a01b031633146107845760405162461bcd60e51b815260206004820152600a60248201527f4f6e6c7920706f6f6c730000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b61078e8282611149565b5050565b600061079c610ddf565b601454600160a01b900460ff16156107f65760405162461bcd60e51b815260206004820152601360248201527f416c726561647920696e697469616c697a656400000000000000000000000000604482015260640161077b565b601360009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610849573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086d9190611965565b6007546040517fc9c653960000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b03918216602482015291169063c9c65396906044016020604051808303816000875af11580156108d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108fb9190611965565b601480547fffffffffffffffffffffff000000000000000000000000000000000000000000166001600160a01b0392831617600160a01b179081905516905090565b610945610ddf565b6040517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303816000875af11580156109ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109cf9190611982565b505050565b6109dc610ddf565b6109e6600061117f565b565b6109f0610ddf565b601054601155565b610a00610ddf565b601480546001600160a01b0319166001600160a01b0392909216919091179055565b610a2a610ddf565b6005811115610a7b5760405162461bcd60e51b815260206004820152601560248201527f63616e2774206265206d6f7265207468616e2035250000000000000000000000604482015260640161077b565b600c55565b610a88610ddf565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b6060600480546106639061192b565b610ac1610ddf565b601255565b610ace610ddf565b6040516000903390624c4b4090849084818181858888f193505050503d8060008114610b16576040519150601f19603f3d011682016040523d82523d6000602084013e610b1b565b606091505b5050505050565b601454600090600160a01b900460ff1680610b4757506005546001600160a01b031633145b610b935760405162461bcd60e51b815260206004820152601360248201527f4e6f742079657420696e697469616c697a656400000000000000000000000000604482015260640161077b565b6014546001600160a01b03163303610bb757610bb0338484610ec9565b90506106fa565b600e54600d54610bc791906119b5565b431180610bde57506005546001600160a01b031633145b610c2a5760405162461bcd60e51b815260206004820152601260248201527f4e6f7420617574686f72697a6564207965740000000000000000000000000000604482015260640161077b565b610bb03384846111d1565b610c3d610ddf565b601380546001600160a01b0319166001600160a01b038316908117909155610c69903090600019610e25565b50565b610c74610ddf565b601454600160a81b900460ff1615610cce5760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e000000000000000000604482015260640161077b565b601480547fffffffffffffffff00ff00ffffffffffffffffffffffffffffffffffffffffff167701000100000000000000000000000000000000000000000017905543600d55565b610d1e610ddf565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b610d51610ddf565b600880546001600160a01b039092166001600160a01b0319909216821790556000908152600660205260409020805460ff19166001179055565b610d93610ddf565b6001600160a01b038116610dd6576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526000600482015260240161077b565b610c698161117f565b6005546001600160a01b031633146109e6576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161077b565b6109cf83838360016111e8565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610ec35781811015610eb4576040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602481018290526044810183905260640161077b565b610ec3848484840360006111e8565b50505050565b6001600160a01b03831660009081526006602052604081205460ff1680610f0857506001600160a01b03831660009081526006602052604090205460ff165b80610f1c5750601454600160a81b900460ff165b610f685760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420617574686f72697a656420746f207472616465207965740000000000604482015260640161077b565b6000600d5443610f7891906119c8565b9050600e5481108015610f8c5750600d5415155b156110b5576005546001600160a01b03868116911614801590610fbd57506005546001600160a01b03858116911614155b8015610fd457506001600160a01b03841661dead14155b156110b5576014546001600160a01b038581169116146110b5576011546001600160a01b03851660009081526006602052604090205460ff168061104157508084611034876001600160a01b031660009081526020819052604090205490565b61103e91906119b5565b11155b6110b35760405162461bcd60e51b815260206004820152602b60248201527f5472616e7366657220616d6f756e74206578636565647320746865204d61785760448201527f616c6c65742073697a652e000000000000000000000000000000000000000000606482015260840161077b565b505b6110bd6112ef565b80156110d657506014546001600160a01b038581169116145b156110e3576110e3611362565b6001600160a01b03851660009081526006602052604081205460ff1615158061112657506001600160a01b03851660009081526006602052604090205460ff1615155b61113a576111358686866114ea565b61113c565b835b90506107198686836115d5565b6001600160a01b0382166111735760405163ec442f0560e01b81526000600482015260240161077b565b61078e60008383611649565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60006111de8484846115d5565b5060019392505050565b6001600160a01b03841661122b576040517fe602df050000000000000000000000000000000000000000000000000000000081526000600482015260240161077b565b6001600160a01b03831661126e576040517f94280d620000000000000000000000000000000000000000000000000000000081526000600482015260240161077b565b6001600160a01b0380851660009081526001602090815260408083209387168352929052208290558015610ec357826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516112e191815260200190565b60405180910390a350505050565b6014546000906001600160a01b031633148015906113175750601454600160b01b900460ff16155b8015611340575060145477010000000000000000000000000000000000000000000000900460ff165b801561135d57506012543060009081526020819052604090205410155b905090565b6014805460ff60b01b1916600160b01b17905560125460408051600280825260608201835260009260208301908036833701905050905030816000815181106113ad576113ad6119db565b6001600160a01b0392831660209182029290920101526007548251911690829060019081106113de576113de6119db565b6001600160a01b039283166020918202929092010152601354166352aa4c2283600084308261140e4260056119b5565b6040518763ffffffff1660e01b815260040161142f969594939291906119f1565b600060405180830381600087803b15801561144957600080fd5b505af115801561145d573d6000803e3d6000fd5b5047925050811590506114d857600061147e6005546001600160a01b031690565b6001600160a01b031682624c4b4090604051600060405180830381858888f193505050503d80600081146114ce576040519150601f19603f3d011682016040523d82523d6000602084013e6114d3565b606091505b505050505b50506014805460ff60b01b1916905550565b600d54600090819081906114fe90436119c8565b90506000600f5482111561157f576014546001600160a01b03888116911614801561153757506014546001600160a01b03878116911614155b156115455750600b54611597565b6014546001600160a01b0388811691161480159061157057506014546001600160a01b038781169116145b1561157a5750600c545b611597565b600e548211156115925750600a54611597565b506009545b60646115a38287611a76565b6115ad9190611a8d565b925082156115c0576115c08730856115d5565b6115ca83866119c8565b979650505050505050565b6001600160a01b038316611618576040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526000600482015260240161077b565b6001600160a01b0382166116425760405163ec442f0560e01b81526000600482015260240161077b565b6109cf8383835b6001600160a01b03831661167457806002600082825461166991906119b5565b909155506116ff9050565b6001600160a01b038316600090815260208190526040902054818110156116e0576040517fe450d38c0000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602481018290526044810183905260640161077b565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661171b5760028054829003905561173a565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161177f91815260200190565b60405180910390a3505050565b8015158114610c6957600080fd5b6000602082840312156117ac57600080fd5b81356117b78161178c565b9392505050565b602081526000825180602084015260005b818110156117ec57602081860181015160408684010152016117cf565b506000604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114610c6957600080fd5b6000806040838503121561183457600080fd5b823561183f8161180c565b946020939093013593505050565b60008060006060848603121561186257600080fd5b833561186d8161180c565b9250602084013561187d8161180c565b929592945050506040919091013590565b6000602082840312156118a057600080fd5b81356117b78161180c565b6000602082840312156118bd57600080fd5b5035919050565b600080604083850312156118d757600080fd5b82356118e28161180c565b915060208301356118f28161180c565b809150509250929050565b6000806040838503121561191057600080fd5b823561191b8161180c565b915060208301356118f28161178c565b600181811c9082168061193f57607f821691505b60208210810361195f57634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561197757600080fd5b81516117b78161180c565b60006020828403121561199457600080fd5b81516117b78161178c565b634e487b7160e01b600052601160045260246000fd5b808201808211156106fa576106fa61199f565b818103818111156106fa576106fa61199f565b634e487b7160e01b600052603260045260246000fd5b600060c0820188835287602084015260c0604084015280875180835260e08501915060208901925060005b81811015611a435783516001600160a01b0316835260209384019390920191600101611a1c565b50506001600160a01b038781166060860152861660808501529150611a659050565b8260a0830152979650505050505050565b80820281158282048414176106fa576106fa61199f565b600082611aaa57634e487b7160e01b600052601260045260246000fd5b50049056fea26469706673582212203ed06ac20b29bc001da429b72ef23420a0120e695400bfe3038092a4094409e864736f6c634300081a0033ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef000000000000000000000000a5b56b40af632615c74fed0ef46610353ab67320
Deployed Bytecode
0x6080604052600436106101e75760003560e01c80638d425e1d11610102578063c0d7865511610095578063ef422a1811610064578063ef422a1814610592578063f245036e146105b2578063f2fde38b146105d2578063ffb54a99146105f257600080fd5b8063c0d7865514610501578063c9567bf914610521578063dd62ed3e14610536578063e6fe10b61461057c57600080fd5b80639e252f00116100d15780639e252f0014610481578063a8aa1b31146104a1578063a9059cbb146104c1578063ae075993146104e157600080fd5b80638d425e1d1461040e5780638da5cb5b1461042e57806395d89b411461044c5780639d0014b11461046157600080fd5b80634fab9e4c1161017a578063715018a611610149578063715018a6146103a4578063751039fc146103b95780638187f516146103ce57806381c819aa146103ee57600080fd5b80634fab9e4c14610323578063573761981461033857806358d375331461035857806370a082311461036e57600080fd5b8063205c9cc7116101b6578063205c9cc71461028f57806323b872dd146102c7578063313ce567146102e757806340c10f191461030357600080fd5b8063013afd14146101f357806306fdde0314610215578063095ea7b31461024057806318160ddd1461027057600080fd5b366101ee57005b600080fd5b3480156101ff57600080fd5b5061021361020e36600461179a565b610613565b005b34801561022157600080fd5b5061022a610654565b60405161023791906117be565b60405180910390f35b34801561024c57600080fd5b5061026061025b366004611821565b6106e6565b6040519015158152602001610237565b34801561027c57600080fd5b506002545b604051908152602001610237565b34801561029b57600080fd5b506007546102af906001600160a01b031681565b6040516001600160a01b039091168152602001610237565b3480156102d357600080fd5b506102606102e236600461184d565b610700565b3480156102f357600080fd5b5060405160128152602001610237565b34801561030f57600080fd5b5061021361031e366004611821565b610725565b34801561032f57600080fd5b506102af610792565b34801561034457600080fd5b50610213610353366004611821565b61093d565b34801561036457600080fd5b50610281600b5481565b34801561037a57600080fd5b5061028161038936600461188e565b6001600160a01b031660009081526020819052604090205490565b3480156103b057600080fd5b506102136109d4565b3480156103c557600080fd5b506102136109e8565b3480156103da57600080fd5b506102136103e936600461188e565b6109f8565b3480156103fa57600080fd5b506102136104093660046118ab565b610a22565b34801561041a57600080fd5b5061021361042936600461188e565b610a80565b34801561043a57600080fd5b506005546001600160a01b03166102af565b34801561045857600080fd5b5061022a610aaa565b34801561046d57600080fd5b5061021361047c3660046118ab565b610ab9565b34801561048d57600080fd5b5061021361049c3660046118ab565b610ac6565b3480156104ad57600080fd5b506014546102af906001600160a01b031681565b3480156104cd57600080fd5b506102606104dc366004611821565b610b22565b3480156104ed57600080fd5b506008546102af906001600160a01b031681565b34801561050d57600080fd5b5061021361051c36600461188e565b610c35565b34801561052d57600080fd5b50610213610c6c565b34801561054257600080fd5b506102816105513660046118c4565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561058857600080fd5b50610281600c5481565b34801561059e57600080fd5b506102136105ad3660046118fd565b610d16565b3480156105be57600080fd5b506102136105cd36600461188e565b610d49565b3480156105de57600080fd5b506102136105ed36600461188e565b610d8b565b3480156105fe57600080fd5b5060145461026090600160a81b900460ff1681565b61061b610ddf565b60148054911515600160a01b027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff909216919091179055565b6060600380546106639061192b565b80601f016020809104026020016040519081016040528092919081815260200182805461068f9061192b565b80156106dc5780601f106106b1576101008083540402835291602001916106dc565b820191906000526020600020905b8154815290600101906020018083116106bf57829003601f168201915b5050505050905090565b6000336106f4818585610e25565b60019150505b92915050565b60003361070e858285610e32565b610719858585610ec9565b50600195945050505050565b6008546001600160a01b031633146107845760405162461bcd60e51b815260206004820152600a60248201527f4f6e6c7920706f6f6c730000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b61078e8282611149565b5050565b600061079c610ddf565b601454600160a01b900460ff16156107f65760405162461bcd60e51b815260206004820152601360248201527f416c726561647920696e697469616c697a656400000000000000000000000000604482015260640161077b565b601360009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610849573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086d9190611965565b6007546040517fc9c653960000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b03918216602482015291169063c9c65396906044016020604051808303816000875af11580156108d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108fb9190611965565b601480547fffffffffffffffffffffff000000000000000000000000000000000000000000166001600160a01b0392831617600160a01b179081905516905090565b610945610ddf565b6040517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303816000875af11580156109ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109cf9190611982565b505050565b6109dc610ddf565b6109e6600061117f565b565b6109f0610ddf565b601054601155565b610a00610ddf565b601480546001600160a01b0319166001600160a01b0392909216919091179055565b610a2a610ddf565b6005811115610a7b5760405162461bcd60e51b815260206004820152601560248201527f63616e2774206265206d6f7265207468616e2035250000000000000000000000604482015260640161077b565b600c55565b610a88610ddf565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b6060600480546106639061192b565b610ac1610ddf565b601255565b610ace610ddf565b6040516000903390624c4b4090849084818181858888f193505050503d8060008114610b16576040519150601f19603f3d011682016040523d82523d6000602084013e610b1b565b606091505b5050505050565b601454600090600160a01b900460ff1680610b4757506005546001600160a01b031633145b610b935760405162461bcd60e51b815260206004820152601360248201527f4e6f742079657420696e697469616c697a656400000000000000000000000000604482015260640161077b565b6014546001600160a01b03163303610bb757610bb0338484610ec9565b90506106fa565b600e54600d54610bc791906119b5565b431180610bde57506005546001600160a01b031633145b610c2a5760405162461bcd60e51b815260206004820152601260248201527f4e6f7420617574686f72697a6564207965740000000000000000000000000000604482015260640161077b565b610bb03384846111d1565b610c3d610ddf565b601380546001600160a01b0319166001600160a01b038316908117909155610c69903090600019610e25565b50565b610c74610ddf565b601454600160a81b900460ff1615610cce5760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e000000000000000000604482015260640161077b565b601480547fffffffffffffffff00ff00ffffffffffffffffffffffffffffffffffffffffff167701000100000000000000000000000000000000000000000017905543600d55565b610d1e610ddf565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b610d51610ddf565b600880546001600160a01b039092166001600160a01b0319909216821790556000908152600660205260409020805460ff19166001179055565b610d93610ddf565b6001600160a01b038116610dd6576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526000600482015260240161077b565b610c698161117f565b6005546001600160a01b031633146109e6576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161077b565b6109cf83838360016111e8565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610ec35781811015610eb4576040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602481018290526044810183905260640161077b565b610ec3848484840360006111e8565b50505050565b6001600160a01b03831660009081526006602052604081205460ff1680610f0857506001600160a01b03831660009081526006602052604090205460ff165b80610f1c5750601454600160a81b900460ff165b610f685760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420617574686f72697a656420746f207472616465207965740000000000604482015260640161077b565b6000600d5443610f7891906119c8565b9050600e5481108015610f8c5750600d5415155b156110b5576005546001600160a01b03868116911614801590610fbd57506005546001600160a01b03858116911614155b8015610fd457506001600160a01b03841661dead14155b156110b5576014546001600160a01b038581169116146110b5576011546001600160a01b03851660009081526006602052604090205460ff168061104157508084611034876001600160a01b031660009081526020819052604090205490565b61103e91906119b5565b11155b6110b35760405162461bcd60e51b815260206004820152602b60248201527f5472616e7366657220616d6f756e74206578636565647320746865204d61785760448201527f616c6c65742073697a652e000000000000000000000000000000000000000000606482015260840161077b565b505b6110bd6112ef565b80156110d657506014546001600160a01b038581169116145b156110e3576110e3611362565b6001600160a01b03851660009081526006602052604081205460ff1615158061112657506001600160a01b03851660009081526006602052604090205460ff1615155b61113a576111358686866114ea565b61113c565b835b90506107198686836115d5565b6001600160a01b0382166111735760405163ec442f0560e01b81526000600482015260240161077b565b61078e60008383611649565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60006111de8484846115d5565b5060019392505050565b6001600160a01b03841661122b576040517fe602df050000000000000000000000000000000000000000000000000000000081526000600482015260240161077b565b6001600160a01b03831661126e576040517f94280d620000000000000000000000000000000000000000000000000000000081526000600482015260240161077b565b6001600160a01b0380851660009081526001602090815260408083209387168352929052208290558015610ec357826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516112e191815260200190565b60405180910390a350505050565b6014546000906001600160a01b031633148015906113175750601454600160b01b900460ff16155b8015611340575060145477010000000000000000000000000000000000000000000000900460ff165b801561135d57506012543060009081526020819052604090205410155b905090565b6014805460ff60b01b1916600160b01b17905560125460408051600280825260608201835260009260208301908036833701905050905030816000815181106113ad576113ad6119db565b6001600160a01b0392831660209182029290920101526007548251911690829060019081106113de576113de6119db565b6001600160a01b039283166020918202929092010152601354166352aa4c2283600084308261140e4260056119b5565b6040518763ffffffff1660e01b815260040161142f969594939291906119f1565b600060405180830381600087803b15801561144957600080fd5b505af115801561145d573d6000803e3d6000fd5b5047925050811590506114d857600061147e6005546001600160a01b031690565b6001600160a01b031682624c4b4090604051600060405180830381858888f193505050503d80600081146114ce576040519150601f19603f3d011682016040523d82523d6000602084013e6114d3565b606091505b505050505b50506014805460ff60b01b1916905550565b600d54600090819081906114fe90436119c8565b90506000600f5482111561157f576014546001600160a01b03888116911614801561153757506014546001600160a01b03878116911614155b156115455750600b54611597565b6014546001600160a01b0388811691161480159061157057506014546001600160a01b038781169116145b1561157a5750600c545b611597565b600e548211156115925750600a54611597565b506009545b60646115a38287611a76565b6115ad9190611a8d565b925082156115c0576115c08730856115d5565b6115ca83866119c8565b979650505050505050565b6001600160a01b038316611618576040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526000600482015260240161077b565b6001600160a01b0382166116425760405163ec442f0560e01b81526000600482015260240161077b565b6109cf8383835b6001600160a01b03831661167457806002600082825461166991906119b5565b909155506116ff9050565b6001600160a01b038316600090815260208190526040902054818110156116e0576040517fe450d38c0000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602481018290526044810183905260640161077b565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661171b5760028054829003905561173a565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161177f91815260200190565b60405180910390a3505050565b8015158114610c6957600080fd5b6000602082840312156117ac57600080fd5b81356117b78161178c565b9392505050565b602081526000825180602084015260005b818110156117ec57602081860181015160408684010152016117cf565b506000604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114610c6957600080fd5b6000806040838503121561183457600080fd5b823561183f8161180c565b946020939093013593505050565b60008060006060848603121561186257600080fd5b833561186d8161180c565b9250602084013561187d8161180c565b929592945050506040919091013590565b6000602082840312156118a057600080fd5b81356117b78161180c565b6000602082840312156118bd57600080fd5b5035919050565b600080604083850312156118d757600080fd5b82356118e28161180c565b915060208301356118f28161180c565b809150509250929050565b6000806040838503121561191057600080fd5b823561191b8161180c565b915060208301356118f28161178c565b600181811c9082168061193f57607f821691505b60208210810361195f57634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561197757600080fd5b81516117b78161180c565b60006020828403121561199457600080fd5b81516117b78161178c565b634e487b7160e01b600052601160045260246000fd5b808201808211156106fa576106fa61199f565b818103818111156106fa576106fa61199f565b634e487b7160e01b600052603260045260246000fd5b600060c0820188835287602084015260c0604084015280875180835260e08501915060208901925060005b81811015611a435783516001600160a01b0316835260209384019390920191600101611a1c565b50506001600160a01b038781166060860152861660808501529150611a659050565b8260a0830152979650505050505050565b80820281158282048414176106fa576106fa61199f565b600082611aaa57634e487b7160e01b600052601260045260246000fd5b50049056fea26469706673582212203ed06ac20b29bc001da429b72ef23420a0120e695400bfe3038092a4094409e864736f6c634300081a0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000a5b56b40af632615c74fed0ef46610353ab67320
-----Decoded View---------------
Arg [0] : initialOwner (address): 0xa5B56b40aF632615c74FED0EF46610353AB67320
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000a5b56b40af632615c74fed0ef46610353ab67320
Loading...
Loading
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in HYPE
Multichain Portfolio | 35 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ 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.