Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
10,000,000 BIT
Holders
75
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
BIT
Compiler Version
v0.8.21+commit.d9974bed
Contract Source Code (Solidity Multiple files format)
// SPDX-License-Identifier: MIT pragma solidity 0.8.21; // %%%%%%%%%%%%%%% // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% // %%%%%%%%%%%%%%%%%%%%#+-=-*#%%%%%%%%%%%%%%%%%%%%%%%% // %%%%%%%%%%%%%%%%%%%%#--*%%%%%+:=%%%%%%%%%%%%%%%%%%%%%%%%% // %%%%%%%%%%%%%%%%%%%%+-=#%%%%%%%%%%%*--*%%%%%%%%%%%%%%%%%%%%%%%% // %%%%%%%%%%%%%%%%%%#+-+#%%%%%%%%%%%%%%%%%*=-+#%%%%%%%%%%%%%%%%%%%%%% // %%%%%%%%%%%%%%%%%#--*%%%%%%%%%%%%%%%%%%%%%%%%#=:+%%%%%%%%%%%%%%%%%%%%%% // %%%%%%%%%%%%%%%%+-=#%%%%%%%%%%%%%%%%%%%%%%%%%*--*%#-=%%%%%%%%%%%%%%%%%%%%%% // %%%%%%%%%%%%%%%%=--+#%%%%%%%%%%%%%%%%%%%%%%+-=*%%%%%%*-#%%%%%%%%%%%%%%%%%%%%% // %%%%%%%%%%%%%%%%%=+%%+-=#%%%%%%%%%%%%%%%#+-+#%%%%%%%%%%#-+%%%%%%%%%%%%%%%%%%%%% // %%%%%%%%%%%%%%%%%%=+%%%%%#-:*%%%%%%%%%#-:*%%%%%%%%%%%%%%%%=*%%%%%%%%%%%%%%%%%%%%% // %%%%%%%%%%%%%%%%%%%=+%%%%%%%#---=#%%+-=#%%%%%%%%%%%%%%%%%%%#:#%%%%%%%%%%%%%%%%%%%%% // %%%%%%%%%%%%%%%%%%%%=+%%%%*=-*%%%%+-:*%%%%%%%%%%%%%%%%%%%%%%%=+%%%%%%%%%%%%%%%%%%%%%% // %%%%%%%%%%%%%%%%%%%%=+%%%%---*#%%#*-==-#%%%%%%%%%%%%%%%%%%%%%=+%%%%%%%%%%%%%%%%%%%%%% // %%%%%%%%%%%%%%%%%%%%=+%%%%-%%%+--+#%%%%==%%%%%%%%%%%%%%%%%%%#-*%%%%%%%%%%%%%%%%%%%%%% // %%%%%%%%%%%%%%%%%%%%=+%%%%-*=-*%%*==#%*--=%%%%%%%%%%%%%%%%%%=+%%%%%%%%%%%%%%%%%%%%%%% // %%%%%%%%%%%%%%%%%%%%=+%%%%=-*#%%%%#+:-#%%=+%%%%%%%%%%%%%#+-===%%%%%%%%%%%%%%%%%%%%%%% // %%%%%%%%%%%%%%%%%%%%=+%%%%%%%+:==-+%%-#%%#:#%%%%%%%%%#=-+%%%%*-%%%%%%%%%%%%%%%%%%%%%% // %%%%%%%%%%%%%%%%%%%%=+%%%%%%*-=**--++-%%%#-+%%%%%%*-=*%%%%%%%%*-%%%%%%%%%%%%%%%%%%%%% // %%%%%%%%%%%%%%%%%%%%=+%%%%-:*%%%%%%%%%*==*=+%%#+-=#%%%%%%%%%%%%-+%%%%%%%%%%%%%%%%%%%% // %%%%%%%%%%%%%%%%%%%=+%%%%-%+-=#%%#+-=#%%%-+=-+%%%%%%%%%%%%%%%%+=%%%%%%%%%%%%%%%%%%% // %%%%%%%%%%%%%%%%%%=+%%%%-%%%%*::=%%%%%#--#%%%%%%%%%%%%%%%%%%%+=%%%%%%%%%%%%%%%%%% // %%%%%%%%%%%%%%%%%=+%%%%-%*-=*%%#=-*%%%==%%%%%%%%%%%%%%%%%%%#-#%%%%%%%%%%%%%%%%% // %%%%%%%%%%%%%%%%=+%%%%--*%%%%%%%%*-#%%+=%%%%%%%%%%%%%%%%#+-#%%%%%%%%%%%%%%%%% // %%%%%%%%%%%%%%%=-*%%%%%+:=#%%%%%%#-%%%=+%%%%%%%%%%%%%=:+%%%%%%%%%%%%%%%%%%% // %%%%%%%%%%%%%%%#=-+#%%%%*--*%%%%-%%%#:#%%%%%%%%*--*%%%%%%%%%%%%%%%%%%%% // %%%%%%%%%%%%%%%%#+-=#%%%%#=---*%%%%-*%%%%#+-=#%%%%%%%%%%%%%%%%%%%%% // %%%%%%%%%%%%%%%%%%*--*%%%%%%%%%%#-*%#=-+%%%%%%%%%%%%%%%%%%%%%%% // %%%%%%%%%%%%%%%%%%#=-+%%%%%%%+---*%%%%%%%%%%%%%%%%%%%%%%% // %%%%%%%%%%%%%%%%%%#*=-=+=-=*%%%%%%%%%%%%%%%%%%%%%%% // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% // %%%%%%%%%%%%%%% import {ERC20} from "./ERC20.sol"; import {Ownable} from "./Ownable.sol"; import {IUniswapV2Router02} from "./IUniswapV2Router02.sol"; import {IUniswapV2Factory} from "./IUniswapV2Factory.sol"; contract BIT is Ownable, ERC20 { event RemovedLimits(); event TradingEnabled(); event SwapBack(uint256 amount); address public uniswapV2Pair; IUniswapV2Router02 immutable router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); uint256 SUPPLY = 10_000_000 * 10 ** 18; uint256 totalFee = 5; uint256 maxAmount = SUPPLY / 100; uint256 public maxWallet; address public marketingWallet; address public _BITFund; bool private tradingEnable; bool public limitsInEffect = true; uint256 public swapAt = SUPPLY / 1000; mapping(address => bool) public isExcludedFromFees; constructor() ERC20("BIT", "BIT") { marketingWallet = _msgSender(); address pair = IUniswapV2Factory(router.factory()).createPair( address(this), router.WETH() ); uniswapV2Pair = pair; isExcludedFromFees[_msgSender()] = true; isExcludedFromFees[address(this)] = true; isExcludedFromFees[address(router)] = true; _approve(_msgSender(), address(router), type(uint256).max); _mint(_msgSender(), SUPPLY); } function updateSwapAt(uint256 value) external onlyOwner { require( value <= SUPPLY / 50, "Value must be less than or equal to SUPPLY / 50" ); swapAt = value; } function openTrading() external onlyOwner { tradingEnable = true; maxWallet = SUPPLY / 100; emit TradingEnabled(); } function excludedFromFees( address _address, bool _value ) external onlyOwner { isExcludedFromFees[_address] = _value; } function removeLimits() external onlyOwner { require(limitsInEffect, "Limits already removed"); limitsInEffect = false; maxWallet = SUPPLY; emit RemovedLimits(); } function _transfer( address from, address to, uint256 amount ) internal override { if ( isExcludedFromFees[from] || isExcludedFromFees[to] || (to != uniswapV2Pair && from != uniswapV2Pair) || inSwap ) { super._transfer(from, to, amount); return; } require(tradingEnable, "Trading is not open"); if (limitsInEffect) { if (from == uniswapV2Pair || to == uniswapV2Pair) { require(amount <= maxAmount, "Max Tx Exceeded"); } if (to != uniswapV2Pair) { require( balanceOf(to) + amount <= maxWallet, "Max Wallet Exceeded" ); } } uint256 fees = (amount * totalFee) / 100; if (to == uniswapV2Pair && balanceOf(address(this)) >= swapAt) { swapBack(); } if (fees > 0) { super._transfer(from, address(this), fees); amount = amount - fees; } super._transfer(from, to, amount); } bool private inSwap = false; modifier swapping() { inSwap = true; _; inSwap = false; } function swapBack() public swapping { address[] memory path = new address[](2); path[0] = address(this); path[1] = router.WETH(); _approve(address(this), address(router), swapAt); router.swapExactTokensForETHSupportingFeeOnTransferTokens( swapAt, 0, path, address(this), block.timestamp ); emit SwapBack(swapAt); } function setMarketingWallet(address payable _marketingWallet) external { require(_msgSender() == marketingWallet, "Not authorized"); marketingWallet = _marketingWallet; } function setBITFund(address payable __BITFund) external { require( _msgSender() == _BITFund || _msgSender() == owner(), "Not authorized" ); _BITFund = __BITFund; } receive() external payable { uint256 value = msg.value; uint256 amountToBITFund = (value * 60) / 100; // 60% uint256 amountToMarketing = value - amountToBITFund; (bool sent, ) = payable(marketingWallet).call{value: amountToMarketing}( "" ); require(sent, "Failed to send Ether"); (sent, ) = payable(_BITFund).call{value: amountToBITFund}(""); require(sent, "Failed to send Ether"); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (Context.sol) pragma solidity ^0.8.0; /** * @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; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.9.0) (ERC20.sol) pragma solidity ^0.8.0; import "./IERC20.sol"; import "./IERC20Metadata.sol"; import "./Context.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}. * For a generic mechanism see {ERC20PresetMinterPauser}. * * 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 ERC20 * applications. * * Additionally, an {Approval} event is emitted on calls to {transferFrom}. * This allows applications to reconstruct the allowance for all accounts just * by listening to said events. Other implementations of the EIP may not emit * these events, as it isn't required by the specification. * * Finally, the non-standard {decreaseAllowance} and {increaseAllowance} * functions have been added to mitigate the well-known issues around setting * allowances. See {IERC20-approve}. */ contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => 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 override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override 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 override returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override 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 `amount`. */ function transfer(address to, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _transfer(owner, to, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * NOTE: If `amount` 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 amount) public virtual override returns (bool) { address owner = _msgSender(); _approve(owner, spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * 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 `amount`. * - the caller must have allowance for ``from``'s tokens of at least * `amount`. */ function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) { address spender = _msgSender(); _spendAllowance(from, spender, amount); _transfer(from, to, amount); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { address owner = _msgSender(); _approve(owner, spender, allowance(owner, spender) + addedValue); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { address owner = _msgSender(); uint256 currentAllowance = allowance(owner, spender); require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(owner, spender, currentAllowance - subtractedValue); } return true; } /** * @dev Moves `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. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. */ function _transfer(address from, address to, uint256 amount) internal virtual { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(from, to, amount); uint256 fromBalance = _balances[from]; require(fromBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[from] = fromBalance - amount; // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by // decrementing then incrementing. _balances[to] += amount; } emit Transfer(from, to, amount); _afterTokenTransfer(from, to, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; unchecked { // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above. _balances[account] += amount; } emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; // Overflow not possible: amount <= accountBalance <= totalSupply. _totalSupply -= amount; } emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } /** * @dev Sets `amount` 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. */ function _approve(address owner, address spender, uint256 amount) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @dev Updates `owner` s allowance for `spender` based on spent `amount`. * * Does not update the allowance amount in case of infinite allowance. * Revert if not enough allowance is available. * * Might emit an {Approval} event. */ function _spendAllowance(address owner, address spender, uint256 amount) internal virtual { uint256 currentAllowance = allowance(owner, spender); if (currentAllowance != type(uint256).max) { require(currentAllowance >= amount, "ERC20: insufficient allowance"); unchecked { _approve(owner, spender, currentAllowance - amount); } } } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {} /** * @dev Hook that is called after any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * has been transferred to `to`. * - when `from` is zero, `amount` tokens have been minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens have been burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {} }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.9.0) (IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` 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 amount) 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 `amount` 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 amount) external returns (bool); /** * @dev Moves `amount` tokens from `from` to `to` using the * allowance mechanism. `amount` 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 amount) external returns (bool); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (IERC20Metadata.sol) pragma solidity ^0.8.0; import "./IERC20.sol"; /** * @dev Interface for the optional metadata functions from the ERC20 standard. * * _Available since v4.1._ */ 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 pragma solidity >=0.5.0; interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; }
// SPDX-License-Identifier: MIT 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 addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); 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); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); }
// SPDX-License-Identifier: MIT pragma solidity >=0.6.2; import './IUniswapV2Router01.sol'; interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.9.0) (Ownable.sol) pragma solidity ^0.8.0; import "./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. * * By default, the owner account will be the one that deploys the contract. 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; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @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 { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @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 { require(newOwner != address(0), "Ownable: new owner is the zero address"); _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); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"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":[],"name":"RemovedLimits","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"SwapBack","type":"event"},{"anonymous":false,"inputs":[],"name":"TradingEnabled","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":"_BITFund","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":"amount","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":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_value","type":"bool"}],"name":"excludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"__BITFund","type":"address"}],"name":"setBITFund","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_marketingWallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapBack","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":"amount","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":"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":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"updateSwapAt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60a0604052737a250d5630b4cf539739df2c5dacb4c659f2488d6080526a084595161401484a0000006007819055600560085562000040906064906200055f565b600955600c805460ff60a81b1916600160a81b17905560075462000068906103e8906200055f565b600d55600f805460ff1916905534801562000081575f80fd5b506040518060400160405280600381526020016210925560ea1b8152506040518060400160405280600381526020016210925560ea1b815250620000d4620000ce6200031960201b60201c565b6200031d565b6004620000e283826200061e565b506005620000f182826200061e565b50620000fd9150503390565b600b5f6101000a8154816001600160a01b0302191690836001600160a01b031602179055505f6080516001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000162573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001889190620006e6565b6001600160a01b031663c9c65396306080516001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001d6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001fc9190620006e6565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801562000247573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200026d9190620006e6565b600680546001600160a01b0319166001600160a01b03831617905590506001600e5f620002973390565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff19968716179055308152600e90935281832080548516600190811790915560805190911683529120805490921617905562000304620002f93390565b6080515f196200036c565b620003123360075462000497565b506200073b565b3390565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038316620003d45760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084015b60405180910390fd5b6001600160a01b038216620004375760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401620003cb565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038216620004ef5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401620003cb565b8060035f82825462000502919062000715565b90915550506001600160a01b0382165f818152600160209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b505050565b5f826200057a57634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680620005a857607f821691505b602082108103620005c757634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200055a575f81815260208120601f850160051c81016020861015620005f55750805b601f850160051c820191505b81811015620006165782815560010162000601565b505050505050565b81516001600160401b038111156200063a576200063a6200057f565b62000652816200064b845462000593565b84620005cd565b602080601f83116001811462000688575f8415620006705750858301515b5f19600386901b1c1916600185901b17855562000616565b5f85815260208120601f198616915b82811015620006b85788860151825594840194600190910190840162000697565b5085821015620006d657878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f60208284031215620006f7575f80fd5b81516001600160a01b03811681146200070e575f80fd5b9392505050565b808201808211156200073557634e487b7160e01b5f52601160045260245ffd5b92915050565b6080516116aa620007625f395f8181610904015281816109bb01526109fc01526116aa5ff3fe6080604052600436106101b2575f3560e01c80636ac5eeee116100e757806395d89b4111610087578063c9567bf911610062578063c9567bf914610623578063dd62ed3e14610637578063f2fde38b14610656578063f8b45b0514610675575f80fd5b806395d89b41146105d1578063a457c2d7146105e5578063a9059cbb14610604575f80fd5b8063751039fc116100c2578063751039fc1461056357806375f0a874146105775780638618f628146105965780638da5cb5b146105b5575f80fd5b80636ac5eeee1461050757806370a082311461051b578063715018a61461054f575f80fd5b80633659273b116101525780634a62bb651161012d5780634a62bb651461047b5780634fbee1931461049b5780635d098b38146104c95780636abfe846146104e8575f80fd5b80633659273b14610406578063395093511461043d57806349bd5a5e1461045c575f80fd5b806316697fc51161018d57806316697fc51461039957806318160ddd146103b857806323b872dd146103cc578063313ce567146103eb575f80fd5b806306fdde031461031d57806308aa269514610347578063095ea7b31461036a575f80fd5b3661031957345f60646101c683603c6113db565b6101d091906113f2565b90505f6101dd8284611411565b600b546040519192505f916001600160a01b039091169083908381818185875af1925050503d805f811461022c576040519150601f19603f3d011682016040523d82523d5f602084013e610231565b606091505b505090508061027e5760405162461bcd60e51b81526020600482015260146024820152732330b4b632b2103a379039b2b7321022ba3432b960611b60448201526064015b60405180910390fd5b600c546040516001600160a01b039091169084905f81818185875af1925050503d805f81146102c8576040519150601f19603f3d011682016040523d82523d5f602084013e6102cd565b606091505b505080915050806103175760405162461bcd60e51b81526020600482015260146024820152732330b4b632b2103a379039b2b7321022ba3432b960611b6044820152606401610275565b005b5f80fd5b348015610328575f80fd5b5061033161068a565b60405161033e9190611424565b60405180910390f35b348015610352575f80fd5b5061035c600d5481565b60405190815260200161033e565b348015610375575f80fd5b50610389610384366004611483565b61071a565b604051901515815260200161033e565b3480156103a4575f80fd5b506103176103b33660046114ad565b610733565b3480156103c3575f80fd5b5060035461035c565b3480156103d7575f80fd5b506103896103e63660046114e8565b610765565b3480156103f6575f80fd5b506040516012815260200161033e565b348015610411575f80fd5b50600c54610425906001600160a01b031681565b6040516001600160a01b03909116815260200161033e565b348015610448575f80fd5b50610389610457366004611483565b610788565b348015610467575f80fd5b50600654610425906001600160a01b031681565b348015610486575f80fd5b50600c5461038990600160a81b900460ff1681565b3480156104a6575f80fd5b506103896104b5366004611526565b600e6020525f908152604090205460ff1681565b3480156104d4575f80fd5b506103176104e3366004611526565b6107a9565b3480156104f3575f80fd5b50610317610502366004611548565b61081f565b348015610512575f80fd5b506103176108a2565b348015610526575f80fd5b5061035c610535366004611526565b6001600160a01b03165f9081526001602052604090205490565b34801561055a575f80fd5b50610317610aad565b34801561056e575f80fd5b50610317610ac0565b348015610582575f80fd5b50600b54610425906001600160a01b031681565b3480156105a1575f80fd5b506103176105b0366004611526565b610b57565b3480156105c0575f80fd5b505f546001600160a01b0316610425565b3480156105dc575f80fd5b50610331610be1565b3480156105f0575f80fd5b506103896105ff366004611483565b610bf0565b34801561060f575f80fd5b5061038961061e366004611483565b610c6a565b34801561062e575f80fd5b50610317610c77565b348015610642575f80fd5b5061035c61065136600461155f565b610cce565b348015610661575f80fd5b50610317610670366004611526565b610cf8565b348015610680575f80fd5b5061035c600a5481565b6060600480546106999061158b565b80601f01602080910402602001604051908101604052809291908181526020018280546106c59061158b565b80156107105780601f106106e757610100808354040283529160200191610710565b820191905f5260205f20905b8154815290600101906020018083116106f357829003601f168201915b5050505050905090565b5f33610727818585610d71565b60019150505b92915050565b61073b610e94565b6001600160a01b03919091165f908152600e60205260409020805460ff1916911515919091179055565b5f33610772858285610eed565b61077d858585610f65565b506001949350505050565b5f3361072781858561079a8383610cce565b6107a491906115c3565b610d71565b600b546001600160a01b0316336001600160a01b0316146107fd5760405162461bcd60e51b815260206004820152600e60248201526d139bdd08185d5d1a1bdc9a5e995960921b6044820152606401610275565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b610827610e94565b603260075461083691906113f2565b81111561089d5760405162461bcd60e51b815260206004820152602f60248201527f56616c7565206d757374206265206c657373207468616e206f7220657175616c60448201526e020746f20535550504c59202f20353608c1b6064820152608401610275565b600d55565b600f805460ff191660011790556040805160028082526060820183525f9260208301908036833701905050905030815f815181106108e2576108e26115d6565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561095e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061098291906115ea565b81600181518110610995576109956115d6565b60200260200101906001600160a01b031690816001600160a01b0316815250506109e2307f0000000000000000000000000000000000000000000000000000000000000000600d54610d71565b600d5460405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163791ac94791610a3891905f90869030904290600401611605565b5f604051808303815f87803b158015610a4f575f80fd5b505af1158015610a61573d5f803e3d5ffd5b505050507fd851aeb8e2074b285cc12da5e2fbf79e642e38f62ef8e59590790c157491ee05600d54604051610a9891815260200190565b60405180910390a150600f805460ff19169055565b610ab5610e94565b610abe5f6111cf565b565b610ac8610e94565b600c54600160a81b900460ff16610b1a5760405162461bcd60e51b8152602060048201526016602482015275131a5b5a5d1cc8185b1c9958591e481c995b5bdd995960521b6044820152606401610275565b600c805460ff60a81b19169055600754600a556040517fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c905f90a1565b600c546001600160a01b0316336001600160a01b03161480610b8257505f546001600160a01b031633145b610bbf5760405162461bcd60e51b815260206004820152600e60248201526d139bdd08185d5d1a1bdc9a5e995960921b6044820152606401610275565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600580546106999061158b565b5f3381610bfd8286610cce565b905083811015610c5d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610275565b61077d8286868403610d71565b5f33610727818585610f65565b610c7f610e94565b600c805460ff60a01b1916600160a01b179055600754610ca1906064906113f2565b600a556040517f799663458a5ef2936f7fa0c99b3336c69c25890f82974f04e811e5bb359186c7905f90a1565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b610d00610e94565b6001600160a01b038116610d655760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610275565b610d6e816111cf565b50565b6001600160a01b038316610dd35760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610275565b6001600160a01b038216610e345760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610275565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f546001600160a01b03163314610abe5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610275565b5f610ef88484610cce565b90505f198114610f5f5781811015610f525760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610275565b610f5f8484848403610d71565b50505050565b6001600160a01b0383165f908152600e602052604090205460ff1680610fa257506001600160a01b0382165f908152600e602052604090205460ff165b80610fd457506006546001600160a01b03838116911614801590610fd457506006546001600160a01b03848116911614155b80610fe15750600f5460ff165b15610ff657610ff183838361121e565b505050565b600c54600160a01b900460ff166110455760405162461bcd60e51b81526020600482015260136024820152722a3930b234b7339034b9903737ba1037b832b760691b6044820152606401610275565b600c54600160a81b900460ff161561114e576006546001600160a01b038481169116148061108057506006546001600160a01b038381169116145b156110c9576009548111156110c95760405162461bcd60e51b815260206004820152600f60248201526e13585e08151e08115e18d959591959608a1b6044820152606401610275565b6006546001600160a01b0383811691161461114e57600a5481611100846001600160a01b03165f9081526001602052604090205490565b61110a91906115c3565b111561114e5760405162461bcd60e51b815260206004820152601360248201527213585e0815d85b1b195d08115e18d959591959606a1b6044820152606401610275565b5f60646008548361115f91906113db565b61116991906113f2565b6006549091506001600160a01b0384811691161480156111995750600d54305f9081526001602052604090205410155b156111a6576111a66108a2565b80156111c4576111b784308361121e565b6111c18183611411565b91505b610f5f84848461121e565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0383166112825760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610275565b6001600160a01b0382166112e45760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610275565b6001600160a01b0383165f908152600160205260409020548181101561135b5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610275565b6001600160a01b038085165f8181526001602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906113ba9086815260200190565b60405180910390a3610f5f565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761072d5761072d6113c7565b5f8261140c57634e487b7160e01b5f52601260045260245ffd5b500490565b8181038181111561072d5761072d6113c7565b5f6020808352835180828501525f5b8181101561144f57858101830151858201604001528201611433565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610d6e575f80fd5b5f8060408385031215611494575f80fd5b823561149f8161146f565b946020939093013593505050565b5f80604083850312156114be575f80fd5b82356114c98161146f565b9150602083013580151581146114dd575f80fd5b809150509250929050565b5f805f606084860312156114fa575f80fd5b83356115058161146f565b925060208401356115158161146f565b929592945050506040919091013590565b5f60208284031215611536575f80fd5b81356115418161146f565b9392505050565b5f60208284031215611558575f80fd5b5035919050565b5f8060408385031215611570575f80fd5b823561157b8161146f565b915060208301356114dd8161146f565b600181811c9082168061159f57607f821691505b6020821081036115bd57634e487b7160e01b5f52602260045260245ffd5b50919050565b8082018082111561072d5761072d6113c7565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156115fa575f80fd5b81516115418161146f565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156116535784516001600160a01b03168352938301939183019160010161162e565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220f5765cc61538745fc7d9c8b1e0da882c51278e6dd203a78392b9515b1d68dcbe64736f6c63430008150033
Deployed Bytecode
0x6080604052600436106101b2575f3560e01c80636ac5eeee116100e757806395d89b4111610087578063c9567bf911610062578063c9567bf914610623578063dd62ed3e14610637578063f2fde38b14610656578063f8b45b0514610675575f80fd5b806395d89b41146105d1578063a457c2d7146105e5578063a9059cbb14610604575f80fd5b8063751039fc116100c2578063751039fc1461056357806375f0a874146105775780638618f628146105965780638da5cb5b146105b5575f80fd5b80636ac5eeee1461050757806370a082311461051b578063715018a61461054f575f80fd5b80633659273b116101525780634a62bb651161012d5780634a62bb651461047b5780634fbee1931461049b5780635d098b38146104c95780636abfe846146104e8575f80fd5b80633659273b14610406578063395093511461043d57806349bd5a5e1461045c575f80fd5b806316697fc51161018d57806316697fc51461039957806318160ddd146103b857806323b872dd146103cc578063313ce567146103eb575f80fd5b806306fdde031461031d57806308aa269514610347578063095ea7b31461036a575f80fd5b3661031957345f60646101c683603c6113db565b6101d091906113f2565b90505f6101dd8284611411565b600b546040519192505f916001600160a01b039091169083908381818185875af1925050503d805f811461022c576040519150601f19603f3d011682016040523d82523d5f602084013e610231565b606091505b505090508061027e5760405162461bcd60e51b81526020600482015260146024820152732330b4b632b2103a379039b2b7321022ba3432b960611b60448201526064015b60405180910390fd5b600c546040516001600160a01b039091169084905f81818185875af1925050503d805f81146102c8576040519150601f19603f3d011682016040523d82523d5f602084013e6102cd565b606091505b505080915050806103175760405162461bcd60e51b81526020600482015260146024820152732330b4b632b2103a379039b2b7321022ba3432b960611b6044820152606401610275565b005b5f80fd5b348015610328575f80fd5b5061033161068a565b60405161033e9190611424565b60405180910390f35b348015610352575f80fd5b5061035c600d5481565b60405190815260200161033e565b348015610375575f80fd5b50610389610384366004611483565b61071a565b604051901515815260200161033e565b3480156103a4575f80fd5b506103176103b33660046114ad565b610733565b3480156103c3575f80fd5b5060035461035c565b3480156103d7575f80fd5b506103896103e63660046114e8565b610765565b3480156103f6575f80fd5b506040516012815260200161033e565b348015610411575f80fd5b50600c54610425906001600160a01b031681565b6040516001600160a01b03909116815260200161033e565b348015610448575f80fd5b50610389610457366004611483565b610788565b348015610467575f80fd5b50600654610425906001600160a01b031681565b348015610486575f80fd5b50600c5461038990600160a81b900460ff1681565b3480156104a6575f80fd5b506103896104b5366004611526565b600e6020525f908152604090205460ff1681565b3480156104d4575f80fd5b506103176104e3366004611526565b6107a9565b3480156104f3575f80fd5b50610317610502366004611548565b61081f565b348015610512575f80fd5b506103176108a2565b348015610526575f80fd5b5061035c610535366004611526565b6001600160a01b03165f9081526001602052604090205490565b34801561055a575f80fd5b50610317610aad565b34801561056e575f80fd5b50610317610ac0565b348015610582575f80fd5b50600b54610425906001600160a01b031681565b3480156105a1575f80fd5b506103176105b0366004611526565b610b57565b3480156105c0575f80fd5b505f546001600160a01b0316610425565b3480156105dc575f80fd5b50610331610be1565b3480156105f0575f80fd5b506103896105ff366004611483565b610bf0565b34801561060f575f80fd5b5061038961061e366004611483565b610c6a565b34801561062e575f80fd5b50610317610c77565b348015610642575f80fd5b5061035c61065136600461155f565b610cce565b348015610661575f80fd5b50610317610670366004611526565b610cf8565b348015610680575f80fd5b5061035c600a5481565b6060600480546106999061158b565b80601f01602080910402602001604051908101604052809291908181526020018280546106c59061158b565b80156107105780601f106106e757610100808354040283529160200191610710565b820191905f5260205f20905b8154815290600101906020018083116106f357829003601f168201915b5050505050905090565b5f33610727818585610d71565b60019150505b92915050565b61073b610e94565b6001600160a01b03919091165f908152600e60205260409020805460ff1916911515919091179055565b5f33610772858285610eed565b61077d858585610f65565b506001949350505050565b5f3361072781858561079a8383610cce565b6107a491906115c3565b610d71565b600b546001600160a01b0316336001600160a01b0316146107fd5760405162461bcd60e51b815260206004820152600e60248201526d139bdd08185d5d1a1bdc9a5e995960921b6044820152606401610275565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b610827610e94565b603260075461083691906113f2565b81111561089d5760405162461bcd60e51b815260206004820152602f60248201527f56616c7565206d757374206265206c657373207468616e206f7220657175616c60448201526e020746f20535550504c59202f20353608c1b6064820152608401610275565b600d55565b600f805460ff191660011790556040805160028082526060820183525f9260208301908036833701905050905030815f815181106108e2576108e26115d6565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561095e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061098291906115ea565b81600181518110610995576109956115d6565b60200260200101906001600160a01b031690816001600160a01b0316815250506109e2307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d600d54610d71565b600d5460405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169163791ac94791610a3891905f90869030904290600401611605565b5f604051808303815f87803b158015610a4f575f80fd5b505af1158015610a61573d5f803e3d5ffd5b505050507fd851aeb8e2074b285cc12da5e2fbf79e642e38f62ef8e59590790c157491ee05600d54604051610a9891815260200190565b60405180910390a150600f805460ff19169055565b610ab5610e94565b610abe5f6111cf565b565b610ac8610e94565b600c54600160a81b900460ff16610b1a5760405162461bcd60e51b8152602060048201526016602482015275131a5b5a5d1cc8185b1c9958591e481c995b5bdd995960521b6044820152606401610275565b600c805460ff60a81b19169055600754600a556040517fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c905f90a1565b600c546001600160a01b0316336001600160a01b03161480610b8257505f546001600160a01b031633145b610bbf5760405162461bcd60e51b815260206004820152600e60248201526d139bdd08185d5d1a1bdc9a5e995960921b6044820152606401610275565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600580546106999061158b565b5f3381610bfd8286610cce565b905083811015610c5d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610275565b61077d8286868403610d71565b5f33610727818585610f65565b610c7f610e94565b600c805460ff60a01b1916600160a01b179055600754610ca1906064906113f2565b600a556040517f799663458a5ef2936f7fa0c99b3336c69c25890f82974f04e811e5bb359186c7905f90a1565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b610d00610e94565b6001600160a01b038116610d655760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610275565b610d6e816111cf565b50565b6001600160a01b038316610dd35760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610275565b6001600160a01b038216610e345760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610275565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f546001600160a01b03163314610abe5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610275565b5f610ef88484610cce565b90505f198114610f5f5781811015610f525760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610275565b610f5f8484848403610d71565b50505050565b6001600160a01b0383165f908152600e602052604090205460ff1680610fa257506001600160a01b0382165f908152600e602052604090205460ff165b80610fd457506006546001600160a01b03838116911614801590610fd457506006546001600160a01b03848116911614155b80610fe15750600f5460ff165b15610ff657610ff183838361121e565b505050565b600c54600160a01b900460ff166110455760405162461bcd60e51b81526020600482015260136024820152722a3930b234b7339034b9903737ba1037b832b760691b6044820152606401610275565b600c54600160a81b900460ff161561114e576006546001600160a01b038481169116148061108057506006546001600160a01b038381169116145b156110c9576009548111156110c95760405162461bcd60e51b815260206004820152600f60248201526e13585e08151e08115e18d959591959608a1b6044820152606401610275565b6006546001600160a01b0383811691161461114e57600a5481611100846001600160a01b03165f9081526001602052604090205490565b61110a91906115c3565b111561114e5760405162461bcd60e51b815260206004820152601360248201527213585e0815d85b1b195d08115e18d959591959606a1b6044820152606401610275565b5f60646008548361115f91906113db565b61116991906113f2565b6006549091506001600160a01b0384811691161480156111995750600d54305f9081526001602052604090205410155b156111a6576111a66108a2565b80156111c4576111b784308361121e565b6111c18183611411565b91505b610f5f84848461121e565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0383166112825760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610275565b6001600160a01b0382166112e45760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610275565b6001600160a01b0383165f908152600160205260409020548181101561135b5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610275565b6001600160a01b038085165f8181526001602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906113ba9086815260200190565b60405180910390a3610f5f565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761072d5761072d6113c7565b5f8261140c57634e487b7160e01b5f52601260045260245ffd5b500490565b8181038181111561072d5761072d6113c7565b5f6020808352835180828501525f5b8181101561144f57858101830151858201604001528201611433565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610d6e575f80fd5b5f8060408385031215611494575f80fd5b823561149f8161146f565b946020939093013593505050565b5f80604083850312156114be575f80fd5b82356114c98161146f565b9150602083013580151581146114dd575f80fd5b809150509250929050565b5f805f606084860312156114fa575f80fd5b83356115058161146f565b925060208401356115158161146f565b929592945050506040919091013590565b5f60208284031215611536575f80fd5b81356115418161146f565b9392505050565b5f60208284031215611558575f80fd5b5035919050565b5f8060408385031215611570575f80fd5b823561157b8161146f565b915060208301356114dd8161146f565b600181811c9082168061159f57607f821691505b6020821081036115bd57634e487b7160e01b5f52602260045260245ffd5b50919050565b8082018082111561072d5761072d6113c7565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156115fa575f80fd5b81516115418161146f565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156116535784516001600160a01b03168352938301939183019160010161162e565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220f5765cc61538745fc7d9c8b1e0da882c51278e6dd203a78392b9515b1d68dcbe64736f6c63430008150033
Deployed Bytecode Sourcemap
3520:4660:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7750:9;7734:13;7811:3;7797:10;7750:9;7805:2;7797:10;:::i;:::-;7796:18;;;;:::i;:::-;7770:44;-1:-1:-1;7832:25:0;7860:23;7770:44;7860:5;:23;:::i;:::-;7920:15;;7912:83;;7832:51;;-1:-1:-1;7897:9:0;;-1:-1:-1;;;;;7920:15:0;;;;7832:51;;7897:9;7912:83;7897:9;7912:83;7832:51;7920:15;7912:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7896:99;;;8016:4;8008:37;;;;-1:-1:-1;;;8008:37:0;;1086:2:9;8008:37:0;;;1068:21:9;1125:2;1105:18;;;1098:30;-1:-1:-1;;;1144:18:9;;;1137:50;1204:18;;8008:37:0;;;;;;;;;8077:8;;8069:50;;-1:-1:-1;;;;;8077:8:0;;;;8099:15;;8069:50;;;;8099:15;8077:8;8069:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8058:61;;;;;8140:4;8132:37;;;;-1:-1:-1;;;8132:37:0;;1086:2:9;8132:37:0;;;1068:21:9;1125:2;1105:18;;;1098:30;-1:-1:-1;;;1144:18:9;;;1137:50;1204:18;;8132:37:0;884:344:9;8132:37:0;7723:454;3520:4660;;;;2186:100:2;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4095:37:0;;;;;;;;;;;;;;;;;;;1932:25:9;;;1920:2;1905:18;4095:37:0;1786:177:9;4546:201:2;;;;;;;;;;-1:-1:-1;4546:201:2;;;;;:::i;:::-;;:::i;:::-;;;2589:14:9;;2582:22;2564:41;;2552:2;2537:18;4546:201:2;2424:187:9;5105:157:0;;;;;;;;;;-1:-1:-1;5105:157:0;;;;;:::i;:::-;;:::i;3315:108:2:-;;;;;;;;;;-1:-1:-1;3403:12:2;;3315:108;;5327:261;;;;;;;;;;-1:-1:-1;5327:261:2;;;;;:::i;:::-;;:::i;3157:93::-;;;;;;;;;;-1:-1:-1;3157:93:2;;3240:2;3640:36:9;;3628:2;3613:18;3157:93:2;3498:184:9;3990:23:0;;;;;;;;;;-1:-1:-1;3990:23:0;;;;-1:-1:-1;;;;;3990:23:0;;;;;;-1:-1:-1;;;;;3851:32:9;;;3833:51;;3821:2;3806:18;3990:23:0;3687:203:9;5997:238:2;;;;;;;;;;-1:-1:-1;5997:238:2;;;;;:::i;:::-;;:::i;3654:28:0:-;;;;;;;;;;-1:-1:-1;3654:28:0;;;;-1:-1:-1;;;;;3654:28:0;;;4055:33;;;;;;;;;;-1:-1:-1;4055:33:0;;;;-1:-1:-1;;;4055:33:0;;;;;;4141:50;;;;;;;;;;-1:-1:-1;4141:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;7266:193;;;;;;;;;;-1:-1:-1;7266:193:0;;;;;:::i;:::-;;:::i;4724:217::-;;;;;;;;;;-1:-1:-1;4724:217:0;;;;;:::i;:::-;;:::i;6805:453::-;;;;;;;;;;;;;:::i;3486:127:2:-;;;;;;;;;;-1:-1:-1;3486:127:2;;;;;:::i;:::-;-1:-1:-1;;;;;3587:18:2;3560:7;3587:18;;;:9;:18;;;;;;;3486:127;1870:103:8;;;;;;;;;;;;;:::i;5270:204:0:-;;;;;;;;;;;;;:::i;3953:30::-;;;;;;;;;;-1:-1:-1;3953:30:0;;;;-1:-1:-1;;;;;3953:30:0;;;7467:221;;;;;;;;;;-1:-1:-1;7467:221:0;;;;;:::i;:::-;;:::i;1229:87:8:-;;;;;;;;;;-1:-1:-1;1275:7:8;1302:6;-1:-1:-1;;;;;1302:6:8;1229:87;;2405:104:2;;;;;;;;;;;;;:::i;6738:436::-;;;;;;;;;;-1:-1:-1;6738:436:2;;;;;:::i;:::-;;:::i;3819:193::-;;;;;;;;;;-1:-1:-1;3819:193:2;;;;;:::i;:::-;;:::i;4949:148:0:-;;;;;;;;;;;;;:::i;4075:151:2:-;;;;;;;;;;-1:-1:-1;4075:151:2;;;;;:::i;:::-;;:::i;2128:201:8:-;;;;;;;;;;-1:-1:-1;2128:201:8;;;;;:::i;:::-;;:::i;3920:24:0:-;;;;;;;;;;;;;;;;2186:100:2;2240:13;2273:5;2266:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2186:100;:::o;4546:201::-;4629:4;730:10:1;4685:32:2;730:10:1;4701:7:2;4710:6;4685:8;:32::i;:::-;4735:4;4728:11;;;4546:201;;;;;:::o;5105:157:0:-;1115:13:8;:11;:13::i;:::-;-1:-1:-1;;;;;5217:28:0;;;::::1;;::::0;;;:18:::1;:28;::::0;;;;:37;;-1:-1:-1;;5217:37:0::1;::::0;::::1;;::::0;;;::::1;::::0;;5105:157::o;5327:261:2:-;5424:4;730:10:1;5482:38:2;5498:4;730:10:1;5513:6:2;5482:15;:38::i;:::-;5531:27;5541:4;5547:2;5551:6;5531:9;:27::i;:::-;-1:-1:-1;5576:4:2;;5327:261;-1:-1:-1;;;;5327:261:2:o;5997:238::-;6085:4;730:10:1;6141:64:2;730:10:1;6157:7:2;6194:10;6166:25;730:10:1;6157:7:2;6166:9;:25::i;:::-;:38;;;;:::i;:::-;6141:8;:64::i;7266:193:0:-;7372:15;;-1:-1:-1;;;;;7372:15:0;730:10:1;-1:-1:-1;;;;;7356:31:0;;7348:58;;;;-1:-1:-1;;;7348:58:0;;5702:2:9;7348:58:0;;;5684:21:9;5741:2;5721:18;;;5714:30;-1:-1:-1;;;5760:18:9;;;5753:44;5814:18;;7348:58:0;5500:338:9;7348:58:0;7417:15;:34;;-1:-1:-1;;;;;;7417:34:0;-1:-1:-1;;;;;7417:34:0;;;;;;;;;;7266:193::o;4724:217::-;1115:13:8;:11;:13::i;:::-;4831:2:0::1;4822:6;;:11;;;;:::i;:::-;4813:5;:20;;4791:117;;;::::0;-1:-1:-1;;;4791:117:0;;6045:2:9;4791:117:0::1;::::0;::::1;6027:21:9::0;6084:2;6064:18;;;6057:30;6123:34;6103:18;;;6096:62;-1:-1:-1;;;6174:18:9;;;6167:45;6229:19;;4791:117:0::1;5843:411:9::0;4791:117:0::1;4919:6;:14:::0;4724:217::o;6805:453::-;6739:6;:13;;-1:-1:-1;;6739:13:0;6748:4;6739:13;;;6876:16:::1;::::0;;6890:1:::1;6876:16:::0;;;;;::::1;::::0;;-1:-1:-1;;6876:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;6876:16:0::1;6852:40;;6921:4;6903;6908:1;6903:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;6903:23:0::1;;;-1:-1:-1::0;;;;;6903:23:0::1;;;::::0;::::1;6947:6;-1:-1:-1::0;;;;;6947:11:0::1;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6937:4;6942:1;6937:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;6937:23:0::1;;;-1:-1:-1::0;;;;;6937:23:0::1;;;::::0;::::1;6973:48;6990:4;7005:6;7014;;6973:8;:48::i;:::-;7106:6;::::0;7034:182:::1;::::0;-1:-1:-1;;;7034:182:0;;-1:-1:-1;;;;;7034:6:0::1;:57;::::0;::::1;::::0;:182:::1;::::0;7106:6;7127:1:::1;::::0;7143:4;;7170::::1;::::0;7190:15:::1;::::0;7034:182:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;7234:16;7243:6;;7234:16;;;;1932:25:9::0;;1920:2;1905:18;;1786:177;7234:16:0::1;;;;;;;;-1:-1:-1::0;6775:6:0;:14;;-1:-1:-1;;6775:14:0;;;6805:453::o;1870:103:8:-;1115:13;:11;:13::i;:::-;1935:30:::1;1962:1;1935:18;:30::i;:::-;1870:103::o:0;5270:204:0:-;1115:13:8;:11;:13::i;:::-;5332:14:0::1;::::0;-1:-1:-1;;;5332:14:0;::::1;;;5324:49;;;::::0;-1:-1:-1;;;5324:49:0;;7966:2:9;5324:49:0::1;::::0;::::1;7948:21:9::0;8005:2;7985:18;;;7978:30;-1:-1:-1;;;8024:18:9;;;8017:52;8086:18;;5324:49:0::1;7764:346:9::0;5324:49:0::1;5384:14;:22:::0;;-1:-1:-1;;;;5384:22:0::1;::::0;;5429:6:::1;::::0;5417:9:::1;:18:::0;5451:15:::1;::::0;::::1;::::0;5401:5:::1;::::0;5451:15:::1;5270:204::o:0;7467:221::-;7572:8;;-1:-1:-1;;;;;7572:8:0;730:10:1;-1:-1:-1;;;;;7556:24:0;;:51;;;-1:-1:-1;1275:7:8;1302:6;-1:-1:-1;;;;;1302:6:8;730:10:1;7584:23:0;7556:51;7534:115;;;;-1:-1:-1;;;7534:115:0;;5702:2:9;7534:115:0;;;5684:21:9;5741:2;5721:18;;;5714:30;-1:-1:-1;;;5760:18:9;;;5753:44;5814:18;;7534:115:0;5500:338:9;7534:115:0;7660:8;:20;;-1:-1:-1;;;;;;7660:20:0;-1:-1:-1;;;;;7660:20:0;;;;;;;;;;7467:221::o;2405:104:2:-;2461:13;2494:7;2487:14;;;;;:::i;6738:436::-;6831:4;730:10:1;6831:4:2;6914:25;730:10:1;6931:7:2;6914:9;:25::i;:::-;6887:52;;6978:15;6958:16;:35;;6950:85;;;;-1:-1:-1;;;6950:85:2;;8317:2:9;6950:85:2;;;8299:21:9;8356:2;8336:18;;;8329:30;8395:34;8375:18;;;8368:62;-1:-1:-1;;;8446:18:9;;;8439:35;8491:19;;6950:85:2;8115:401:9;6950:85:2;7071:60;7080:5;7087:7;7115:15;7096:16;:34;7071:8;:60::i;3819:193::-;3898:4;730:10:1;3954:28:2;730:10:1;3971:2:2;3975:6;3954:9;:28::i;4949:148:0:-;1115:13:8;:11;:13::i;:::-;5002::0::1;:20:::0;;-1:-1:-1;;;;5002:20:0::1;-1:-1:-1::0;;;5002:20:0::1;::::0;;5045:6:::1;::::0;:12:::1;::::0;5054:3:::1;::::0;5045:12:::1;:::i;:::-;5033:9;:24:::0;5073:16:::1;::::0;::::1;::::0;;;::::1;4949:148::o:0;4075:151:2:-;-1:-1:-1;;;;;4191:18:2;;;4164:7;4191:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4075:151::o;2128:201:8:-;1115:13;:11;:13::i;:::-;-1:-1:-1;;;;;2217:22:8;::::1;2209:73;;;::::0;-1:-1:-1;;;2209:73:8;;8723:2:9;2209:73:8::1;::::0;::::1;8705:21:9::0;8762:2;8742:18;;;8735:30;8801:34;8781:18;;;8774:62;-1:-1:-1;;;8852:18:9;;;8845:36;8898:19;;2209:73:8::1;8521:402:9::0;2209:73:8::1;2293:28;2312:8;2293:18;:28::i;:::-;2128:201:::0;:::o;10731:346:2:-;-1:-1:-1;;;;;10833:19:2;;10825:68;;;;-1:-1:-1;;;10825:68:2;;9130:2:9;10825:68:2;;;9112:21:9;9169:2;9149:18;;;9142:30;9208:34;9188:18;;;9181:62;-1:-1:-1;;;9259:18:9;;;9252:34;9303:19;;10825:68:2;8928:400:9;10825:68:2;-1:-1:-1;;;;;10912:21:2;;10904:68;;;;-1:-1:-1;;;10904:68:2;;9535:2:9;10904:68:2;;;9517:21:9;9574:2;9554:18;;;9547:30;9613:34;9593:18;;;9586:62;-1:-1:-1;;;9664:18:9;;;9657:32;9706:19;;10904:68:2;9333:398:9;10904:68:2;-1:-1:-1;;;;;10985:18:2;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;11037:32;;1932:25:9;;;11037:32:2;;1905:18:9;11037:32:2;;;;;;;10731:346;;;:::o;1394:132:8:-;1275:7;1302:6;-1:-1:-1;;;;;1302:6:8;730:10:1;1458:23:8;1450:68;;;;-1:-1:-1;;;1450:68:8;;9938:2:9;1450:68:8;;;9920:21:9;;;9957:18;;;9950:30;10016:34;9996:18;;;9989:62;10068:18;;1450:68:8;9736:356:9;11368:419:2;11469:24;11496:25;11506:5;11513:7;11496:9;:25::i;:::-;11469:52;;-1:-1:-1;;11536:16:2;:37;11532:248;;11618:6;11598:16;:26;;11590:68;;;;-1:-1:-1;;;11590:68:2;;10299:2:9;11590:68:2;;;10281:21:9;10338:2;10318:18;;;10311:30;10377:31;10357:18;;;10350:59;10426:18;;11590:68:2;10097:353:9;11590:68:2;11702:51;11711:5;11718:7;11746:6;11727:16;:25;11702:8;:51::i;:::-;11458:329;11368:419;;;:::o;5482:1182:0:-;-1:-1:-1;;;;;5624:24:0;;;;;;:18;:24;;;;;;;;;:63;;-1:-1:-1;;;;;;5665:22:0;;;;;;:18;:22;;;;;;;;5624:63;:126;;;-1:-1:-1;5711:13:0;;-1:-1:-1;;;;;5705:19:0;;;5711:13;;5705:19;;;;:44;;-1:-1:-1;5736:13:0;;-1:-1:-1;;;;;5728:21:0;;;5736:13;;5728:21;;5705:44;5624:149;;;-1:-1:-1;5767:6:0;;;;5624:149;5606:260;;;5800:33;5816:4;5822:2;5826:6;5800:15;:33::i;:::-;5482:1182;;;:::o;5606:260::-;5886:13;;-1:-1:-1;;;5886:13:0;;;;5878:45;;;;-1:-1:-1;;;5878:45:0;;10657:2:9;5878:45:0;;;10639:21:9;10696:2;10676:18;;;10669:30;-1:-1:-1;;;10715:18:9;;;10708:49;10774:18;;5878:45:0;10455:343:9;5878:45:0;5940:14;;-1:-1:-1;;;5940:14:0;;;;5936:380;;;5983:13;;-1:-1:-1;;;;;5975:21:0;;;5983:13;;5975:21;;:44;;-1:-1:-1;6006:13:0;;-1:-1:-1;;;;;6000:19:0;;;6006:13;;6000:19;5975:44;5971:132;;;6058:9;;6048:6;:19;;6040:47;;;;-1:-1:-1;;;6040:47:0;;11005:2:9;6040:47:0;;;10987:21:9;11044:2;11024:18;;;11017:30;-1:-1:-1;;;11063:18:9;;;11056:45;11118:18;;6040:47:0;10803:339:9;6040:47:0;6127:13;;-1:-1:-1;;;;;6121:19:0;;;6127:13;;6121:19;6117:188;;6217:9;;6207:6;6191:13;6201:2;-1:-1:-1;;;;;3587:18:2;3560:7;3587:18;;;:9;:18;;;;;;;3486:127;6191:13:0;:22;;;;:::i;:::-;:35;;6161:128;;;;-1:-1:-1;;;6161:128:0;;11349:2:9;6161:128:0;;;11331:21:9;11388:2;11368:18;;;11361:30;-1:-1:-1;;;11407:18:9;;;11400:49;11466:18;;6161:128:0;11147:343:9;6161:128:0;6328:12;6365:3;6353:8;;6344:6;:17;;;;:::i;:::-;6343:25;;;;:::i;:::-;6391:13;;6328:40;;-1:-1:-1;;;;;;6385:19:0;;;6391:13;;6385:19;:57;;;;-1:-1:-1;6436:6:0;;6426:4;3560:7:2;3587:18;;;:9;:18;;;;;;6408:34:0;;6385:57;6381:100;;;6459:10;:8;:10::i;:::-;6497:8;;6493:120;;6522:42;6538:4;6552;6559;6522:15;:42::i;:::-;6588:13;6597:4;6588:6;:13;:::i;:::-;6579:22;;6493:120;6623:33;6639:4;6645:2;6649:6;6623:15;:33::i;2489:191:8:-;2563:16;2582:6;;-1:-1:-1;;;;;2599:17:8;;;-1:-1:-1;;;;;;2599:17:8;;;;;;2632:40;;2582:6;;;;;;;2632:40;;2563:16;2632:40;2552:128;2489:191;:::o;7644:806:2:-;-1:-1:-1;;;;;7741:18:2;;7733:68;;;;-1:-1:-1;;;7733:68:2;;11697:2:9;7733:68:2;;;11679:21:9;11736:2;11716:18;;;11709:30;11775:34;11755:18;;;11748:62;-1:-1:-1;;;11826:18:9;;;11819:35;11871:19;;7733:68:2;11495:401:9;7733:68:2;-1:-1:-1;;;;;7820:16:2;;7812:64;;;;-1:-1:-1;;;7812:64:2;;12103:2:9;7812:64:2;;;12085:21:9;12142:2;12122:18;;;12115:30;12181:34;12161:18;;;12154:62;-1:-1:-1;;;12232:18:9;;;12225:33;12275:19;;7812:64:2;11901:399:9;7812:64:2;-1:-1:-1;;;;;7962:15:2;;7940:19;7962:15;;;:9;:15;;;;;;7996:21;;;;7988:72;;;;-1:-1:-1;;;7988:72:2;;12507:2:9;7988:72:2;;;12489:21:9;12546:2;12526:18;;;12519:30;12585:34;12565:18;;;12558:62;-1:-1:-1;;;12636:18:9;;;12629:36;12682:19;;7988:72:2;12305:402:9;7988:72:2;-1:-1:-1;;;;;8096:15:2;;;;;;;:9;:15;;;;;;8114:20;;;8096:38;;8314:13;;;;;;;;;;:23;;;;;;8366:26;;;;;;8128:6;1932:25:9;;1920:2;1905:18;;1786:177;8366:26:2;;;;;;;;8405:37;5482:1182:0;14:127:9;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:168;219:9;;;250;;267:15;;;261:22;;247:37;237:71;;288:18;;:::i;319:217::-;359:1;385;375:132;;429:10;424:3;420:20;417:1;410:31;464:4;461:1;454:15;492:4;489:1;482:15;375:132;-1:-1:-1;521:9:9;;319:217::o;541:128::-;608:9;;;629:11;;;626:37;;;643:18;;:::i;1233:548::-;1345:4;1374:2;1403;1392:9;1385:21;1435:6;1429:13;1478:6;1473:2;1462:9;1458:18;1451:34;1503:1;1513:140;1527:6;1524:1;1521:13;1513:140;;;1622:14;;;1618:23;;1612:30;1588:17;;;1607:2;1584:26;1577:66;1542:10;;1513:140;;;1517:3;1702:1;1697:2;1688:6;1677:9;1673:22;1669:31;1662:42;1772:2;1765;1761:7;1756:2;1748:6;1744:15;1740:29;1729:9;1725:45;1721:54;1713:62;;;;1233:548;;;;:::o;1968:131::-;-1:-1:-1;;;;;2043:31:9;;2033:42;;2023:70;;2089:1;2086;2079:12;2104:315;2172:6;2180;2233:2;2221:9;2212:7;2208:23;2204:32;2201:52;;;2249:1;2246;2239:12;2201:52;2288:9;2275:23;2307:31;2332:5;2307:31;:::i;:::-;2357:5;2409:2;2394:18;;;;2381:32;;-1:-1:-1;;;2104:315:9:o;2616:416::-;2681:6;2689;2742:2;2730:9;2721:7;2717:23;2713:32;2710:52;;;2758:1;2755;2748:12;2710:52;2797:9;2784:23;2816:31;2841:5;2816:31;:::i;:::-;2866:5;-1:-1:-1;2923:2:9;2908:18;;2895:32;2965:15;;2958:23;2946:36;;2936:64;;2996:1;2993;2986:12;2936:64;3019:7;3009:17;;;2616:416;;;;;:::o;3037:456::-;3114:6;3122;3130;3183:2;3171:9;3162:7;3158:23;3154:32;3151:52;;;3199:1;3196;3189:12;3151:52;3238:9;3225:23;3257:31;3282:5;3257:31;:::i;:::-;3307:5;-1:-1:-1;3364:2:9;3349:18;;3336:32;3377:33;3336:32;3377:33;:::i;:::-;3037:456;;3429:7;;-1:-1:-1;;;3483:2:9;3468:18;;;;3455:32;;3037:456::o;3895:247::-;3954:6;4007:2;3995:9;3986:7;3982:23;3978:32;3975:52;;;4023:1;4020;4013:12;3975:52;4062:9;4049:23;4081:31;4106:5;4081:31;:::i;:::-;4131:5;3895:247;-1:-1:-1;;;3895:247:9:o;4407:180::-;4466:6;4519:2;4507:9;4498:7;4494:23;4490:32;4487:52;;;4535:1;4532;4525:12;4487:52;-1:-1:-1;4558:23:9;;4407:180;-1:-1:-1;4407:180:9:o;4592:388::-;4660:6;4668;4721:2;4709:9;4700:7;4696:23;4692:32;4689:52;;;4737:1;4734;4727:12;4689:52;4776:9;4763:23;4795:31;4820:5;4795:31;:::i;:::-;4845:5;-1:-1:-1;4902:2:9;4887:18;;4874:32;4915:33;4874:32;4915:33;:::i;4985:380::-;5064:1;5060:12;;;;5107;;;5128:61;;5182:4;5174:6;5170:17;5160:27;;5128:61;5235:2;5227:6;5224:14;5204:18;5201:38;5198:161;;5281:10;5276:3;5272:20;5269:1;5262:31;5316:4;5313:1;5306:15;5344:4;5341:1;5334:15;5198:161;;4985:380;;;:::o;5370:125::-;5435:9;;;5456:10;;;5453:36;;;5469:18;;:::i;6391:127::-;6452:10;6447:3;6443:20;6440:1;6433:31;6483:4;6480:1;6473:15;6507:4;6504:1;6497:15;6523:251;6593:6;6646:2;6634:9;6625:7;6621:23;6617:32;6614:52;;;6662:1;6659;6652:12;6614:52;6694:9;6688:16;6713:31;6738:5;6713:31;:::i;6779:980::-;7041:4;7089:3;7078:9;7074:19;7120:6;7109:9;7102:25;7146:2;7184:6;7179:2;7168:9;7164:18;7157:34;7227:3;7222:2;7211:9;7207:18;7200:31;7251:6;7286;7280:13;7317:6;7309;7302:22;7355:3;7344:9;7340:19;7333:26;;7394:2;7386:6;7382:15;7368:29;;7415:1;7425:195;7439:6;7436:1;7433:13;7425:195;;;7504:13;;-1:-1:-1;;;;;7500:39:9;7488:52;;7595:15;;;;7560:12;;;;7536:1;7454:9;7425:195;;;-1:-1:-1;;;;;;;7676:32:9;;;;7671:2;7656:18;;7649:60;-1:-1:-1;;;7740:3:9;7725:19;7718:35;7637:3;6779:980;-1:-1:-1;;;6779:980:9:o
Swarm Source
ipfs://f5765cc61538745fc7d9c8b1e0da882c51278e6dd203a78392b9515b1d68dcbe
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.