Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 6 from a total of 6 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Enable Anti Bot ... | 19940842 | 651 days ago | IN | 0 ETH | 0.00058383 | ||||
| Set Roulette Con... | 19940832 | 651 days ago | IN | 0 ETH | 0.00049829 | ||||
| Set Roulette Con... | 19940810 | 651 days ago | IN | 0 ETH | 0.00083424 | ||||
| Set Revenue Wall... | 19940806 | 651 days ago | IN | 0 ETH | 0.00083116 | ||||
| Set Marketing Wa... | 19940803 | 651 days ago | IN | 0 ETH | 0.00085453 | ||||
| Set My Wallet | 19940800 | 651 days ago | IN | 0 ETH | 0.0008232 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
Stephan
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2024-05-24
*/
/**
*Submitted for verification at Etherscan.io on 2024-05-23
*/
// SPDX-License-Identifier: MIT
pragma solidity 0.8.19;
/// @notice Modern and gas efficient ERC20 + EIP-2612 implementation.
/// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC20.sol)
/// @author Modified from Uniswap (https://github.com/Uniswap/uniswap-v2-core/blob/master/contracts/UniswapV2ERC20.sol)
/// @dev Do not manually set balances without updating totalSupply, as the sum of all user balances must not exceed it.
abstract contract ERC20 {
/*//////////////////////////////////////////////////////////////
EVENTS
//////////////////////////////////////////////////////////////*/
event Transfer(address indexed from, address indexed to, uint256 amount);
event Approval(
address indexed owner,
address indexed spender,
uint256 amount
);
/*//////////////////////////////////////////////////////////////
METADATA STORAGE
//////////////////////////////////////////////////////////////*/
string public name;
string public symbol;
uint8 public immutable decimals;
/*//////////////////////////////////////////////////////////////
ERC20 STORAGE
//////////////////////////////////////////////////////////////*/
uint256 public totalSupply;
mapping(address => uint256) public balanceOf;
mapping(address => mapping(address => uint256)) public allowance;
/*//////////////////////////////////////////////////////////////
EIP-2612 STORAGE
//////////////////////////////////////////////////////////////*/
uint256 internal immutable INITIAL_CHAIN_ID;
bytes32 internal immutable INITIAL_DOMAIN_SEPARATOR;
mapping(address => uint256) public nonces;
/*//////////////////////////////////////////////////////////////
CONSTRUCTOR
//////////////////////////////////////////////////////////////*/
constructor(string memory _name, string memory _symbol, uint8 _decimals) {
name = _name;
symbol = _symbol;
decimals = _decimals;
INITIAL_CHAIN_ID = block.chainid;
INITIAL_DOMAIN_SEPARATOR = computeDomainSeparator();
}
/*//////////////////////////////////////////////////////////////
ERC20 LOGIC
//////////////////////////////////////////////////////////////*/
function approve(
address spender,
uint256 amount
) public virtual returns (bool) {
allowance[msg.sender][spender] = amount;
emit Approval(msg.sender, spender, amount);
return true;
}
function transfer(
address to,
uint256 amount
) public virtual returns (bool) {
balanceOf[msg.sender] -= amount;
// Cannot overflow because the sum of all user
// balances can't exceed the max uint256 value.
unchecked {
balanceOf[to] += amount;
}
emit Transfer(msg.sender, to, amount);
return true;
}
function transferFrom(
address from,
address to,
uint256 amount
) public virtual returns (bool) {
uint256 allowed = allowance[from][msg.sender]; // Saves gas for limited approvals.
if (allowed != type(uint256).max)
allowance[from][msg.sender] = allowed - amount;
balanceOf[from] -= amount;
// Cannot overflow because the sum of all user
// balances can't exceed the max uint256 value.
unchecked {
balanceOf[to] += amount;
}
emit Transfer(from, to, amount);
return true;
}
/*//////////////////////////////////////////////////////////////
EIP-2612 LOGIC
//////////////////////////////////////////////////////////////*/
function permit(
address owner,
address spender,
uint256 value,
uint256 deadline,
uint8 v,
bytes32 r,
bytes32 s
) public virtual {
require(deadline >= block.timestamp, "PERMIT_DEADLINE_EXPIRED");
// Unchecked because the only math done is incrementing
// the owner's nonce which cannot realistically overflow.
unchecked {
address recoveredAddress = ecrecover(
keccak256(
abi.encodePacked(
"\x19\x01",
DOMAIN_SEPARATOR(),
keccak256(
abi.encode(
keccak256(
"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)"
),
owner,
spender,
value,
nonces[owner]++,
deadline
)
)
)
),
v,
r,
s
);
require(
recoveredAddress != address(0) && recoveredAddress == owner,
"INVALID_SIGNER"
);
allowance[recoveredAddress][spender] = value;
}
emit Approval(owner, spender, value);
}
function DOMAIN_SEPARATOR() public view virtual returns (bytes32) {
return
block.chainid == INITIAL_CHAIN_ID
? INITIAL_DOMAIN_SEPARATOR
: computeDomainSeparator();
}
function computeDomainSeparator() internal view virtual returns (bytes32) {
return
keccak256(
abi.encode(
keccak256(
"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"
),
keccak256(bytes(name)),
keccak256("1"),
block.chainid,
address(this)
)
);
}
/*//////////////////////////////////////////////////////////////
INTERNAL MINT/BURN LOGIC
//////////////////////////////////////////////////////////////*/
function _mint(address to, uint256 amount) internal virtual {
totalSupply += amount;
// Cannot overflow because the sum of all user
// balances can't exceed the max uint256 value.
unchecked {
balanceOf[to] += amount;
}
emit Transfer(address(0), to, amount);
}
function _burn(address from, uint256 amount) internal virtual {
balanceOf[from] -= amount;
// Cannot underflow because a user's balance
// will never be larger than the total supply.
unchecked {
totalSupply -= amount;
}
emit Transfer(from, address(0), amount);
}
}
// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)
/**
* @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;
}
}
/**
* @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 anymore. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby removing 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);
}
}
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;
}
interface IUniswapV2Pair {
event Approval(address indexed owner, address indexed spender, uint value);
event Transfer(address indexed from, address indexed to, uint value);
function name() external pure returns (string memory);
function symbol() external pure returns (string memory);
function decimals() external pure returns (uint8);
function totalSupply() external view returns (uint);
function balanceOf(address owner) external view returns (uint);
function allowance(
address owner,
address spender
) external view returns (uint);
function approve(address spender, uint value) external returns (bool);
function transfer(address to, uint value) external returns (bool);
function transferFrom(
address from,
address to,
uint value
) external returns (bool);
function DOMAIN_SEPARATOR() external view returns (bytes32);
function PERMIT_TYPEHASH() external pure returns (bytes32);
function nonces(address owner) external view returns (uint);
function permit(
address owner,
address spender,
uint value,
uint deadline,
uint8 v,
bytes32 r,
bytes32 s
) external;
event Mint(address indexed sender, uint amount0, uint amount1);
event Burn(
address indexed sender,
uint amount0,
uint amount1,
address indexed to
);
event Swap(
address indexed sender,
uint amount0In,
uint amount1In,
uint amount0Out,
uint amount1Out,
address indexed to
);
event Sync(uint112 reserve0, uint112 reserve1);
function MINIMUM_LIQUIDITY() external pure returns (uint);
function factory() external view returns (address);
function token0() external view returns (address);
function token1() external view returns (address);
function getReserves()
external
view
returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
function price0CumulativeLast() external view returns (uint);
function price1CumulativeLast() external view returns (uint);
function kLast() external view returns (uint);
function mint(address to) external returns (uint liquidity);
function burn(address to) external returns (uint amount0, uint amount1);
function swap(
uint amount0Out,
uint amount1Out,
address to,
bytes calldata data
) external;
function skim(address to) external;
function sync() external;
function initialize(address, address) external;
}
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);
}
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;
}
/**
* @title Stephan
* @dev Betting token for Stephan
*/
contract Stephan is Ownable, ERC20 {
IUniswapV2Router02 public router;
IUniswapV2Factory public factory;
IUniswapV2Pair public pair;
uint private constant INITIAL_SUPPLY = 1_000_000 * 10 ** 8;
// Percent of the initial supply that will go to the LP
uint constant LP_BPS = 9000;
// Percent of the initial supply that will go to marketing
uint constant MARKETING_BPS = 10_000 - LP_BPS;
//
// The tax to deduct, in basis points
//
uint public buyTaxBps = 500;
uint public sellTaxBps = 500;
//
bool isSellingCollectedTaxes;
event AntiBotEngaged();
event AntiBotDisengaged();
event StealthLaunchEngaged();
address public rouletteContract;
bool public isLaunched;
address public myWallet;
address public marketingWallet;
address public revenueWallet;
bool public engagedOnce;
bool public disengagedOnce;
uint256 public maxTransactionAmount;
uint256 public maxWallet;
mapping(address => bool) public _isExcludedMaxTransactionAmount;
mapping(address => bool) public automatedMarketMakerPairs;
event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
constructor() ERC20("Stephan", "STEPH", 8) {
maxTransactionAmount = (INITIAL_SUPPLY * 10) / 1000;
maxWallet = (INITIAL_SUPPLY * 10) / 1000;
if (isGoerli()) {
router = IUniswapV2Router02(
0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
);
} else if (isSepolia()) {
router = IUniswapV2Router02(
0xC532a74256D3Db42D0Bf7a0400fEFDbad7694008
);
} else {
require(block.chainid == 1, "expected mainnet");
router = IUniswapV2Router02(
0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
);
}
factory = IUniswapV2Factory(router.factory());
// Approve infinite spending by DEX, to sell tokens collected via tax.
allowance[address(this)][address(router)] = type(uint).max;
emit Approval(address(this), address(router), type(uint).max);
isLaunched = false;
}
modifier lockTheSwap() {
isSellingCollectedTaxes = true;
_;
isSellingCollectedTaxes = false;
}
modifier onlyTestnet() {
require(isTestnet(), "not testnet");
_;
}
receive() external payable {}
fallback() external payable {}
function burn(uint amount) external {
_burn(msg.sender, amount);
}
/**
* @dev Allow minting on testnet so I don't have to deal with
* buying from Uniswap.
* @param amount the number of tokens to mint
*/
function mint(uint amount) external onlyTestnet {
_mint(address(msg.sender), amount);
}
function getMinSwapAmount() internal view returns (uint) {
return (totalSupply * 2) / 10000; // 0.02%
}
function isGoerli() public view returns (bool) {
return block.chainid == 5;
}
function isSepolia() public view returns (bool) {
return block.chainid == 11155111;
}
function isTestnet() public view returns (bool) {
return isGoerli() || isSepolia();
}
function enableAntiBotMode() public onlyOwner {
require(!engagedOnce, "this is a one shot function");
engagedOnce = true;
buyTaxBps = 4000;
sellTaxBps = 4000;
emit AntiBotEngaged();
}
function disableAntiBotMode() public onlyOwner {
require(!disengagedOnce, "this is a one shot function");
disengagedOnce = true;
buyTaxBps = 500;
sellTaxBps = 500;
emit AntiBotDisengaged();
}
/**
* @dev Does the same thing as a max approve for the roulette
* contract, but takes as input a secret that the bot uses to
* verify ownership by a Telegram user.
* @param secret The secret that the bot is expecting.
* @return true
*/
function connectAndApprove(uint32 secret) external returns (bool) {
address pwner = _msgSender();
allowance[pwner][rouletteContract] = type(uint).max;
emit Approval(pwner, rouletteContract, type(uint).max);
return true;
}
function setRouletteContract(address a) public onlyOwner {
require(a != address(0), "null address");
rouletteContract = a;
}
function setMyWallet(address wallet) public onlyOwner {
require(wallet != address(0), "null address");
myWallet = wallet;
}
function setMarketingWallet(address wallet) public onlyOwner {
require(wallet != address(0), "null address");
marketingWallet = wallet;
}
function setRevenueWallet(address wallet) public onlyOwner {
require(wallet != address(0), "null address");
revenueWallet = wallet;
}
function stealthLaunch() external payable onlyOwner {
require(!isLaunched, "already launched");
require(myWallet != address(0), "null address");
require(marketingWallet != address(0), "null address");
require(revenueWallet != address(0), "null address");
require(rouletteContract != address(0), "null address");
isLaunched = true;
_mint(address(this), (INITIAL_SUPPLY * LP_BPS) / 10_000);
router.addLiquidityETH{value: msg.value}(
address(this),
balanceOf[address(this)],
0,
0,
owner(),
block.timestamp
);
pair = IUniswapV2Pair(factory.getPair(address(this), router.WETH()));
_setAutomatedMarketMakerPair(address(pair), true);
_mint(marketingWallet, (INITIAL_SUPPLY * MARKETING_BPS) / 10_000);
require(totalSupply == INITIAL_SUPPLY, "numbers don't add up");
// So I don't have to deal with Uniswap when testing
if (isTestnet()) {
_mint(address(msg.sender), 10_000 * 10 ** decimals);
}
emit StealthLaunchEngaged();
}
/**
* @dev Calculate the amount of tax to apply to a transaction.
* @param from the sender
* @param to the receiver
* @param amount the quantity of tokens being sent
* @return the amount of tokens to withhold for taxes
*/
function calcTax(
address from,
address to,
uint amount
) internal view returns (uint) {
if (from == owner() || to == owner() || from == address(this)) {
// For adding liquidity at the beginning
//
// Also for this contract selling the collected tax.
return 0;
} else if (from == address(pair)) {
// Buy from DEX, or adding liquidity.
return (amount * buyTaxBps) / 10_000;
} else if (to == address(pair)) {
// Sell from DEX, or removing liquidity.
return (amount * sellTaxBps) / 10_000;
} else {
// Sending to other wallets (e.g. OTC) is tax-free.
return 0;
}
}
/**
* @dev Sell the balance accumulated from taxes.
*/
function sellCollectedTaxes() internal lockTheSwap {
// Of the remaining tokens, set aside 1/16 of the tokens to LP,
// swap the rest for ETH. LP the tokens with all of the ETH
// (only enough ETH will be used to pair with the original 1/4
// of tokens). Send the remaining ETH (about half the original
// balance) to my wallet.
uint tokensForLiq = balanceOf[address(this)] / 16;
uint tokensToSwap = balanceOf[address(this)] - tokensForLiq;
// Sell
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = router.WETH();
router.swapExactTokensForETHSupportingFeeOnTransferTokens(
tokensToSwap,
0,
path,
address(this),
block.timestamp
);
router.addLiquidityETH{value: address(this).balance}(
address(this),
tokensForLiq,
0,
0,
owner(),
block.timestamp
);
myWallet.call{value: address(this).balance}("");
}
/**
* @dev Transfer tokens from the caller to another address.
* @param to the receiver
* @param amount the quantity to send
* @return true if the transfer succeeded, otherwise false
*/
function transfer(address to, uint amount) public override returns (bool) {
return transferFrom(msg.sender, to, amount);
}
/**
* @dev Transfer tokens from one address to another. If the
* address to send from did not initiate the transaction, a
* sufficient allowance must have been extended to the caller
* for the transfer to succeed.
* @param from the sender
* @param to the receiver
* @param amount the quantity to send
* @return true if the transfer succeeded, otherwise false
*/
function transferFrom(
address from,
address to,
uint amount
) public override returns (bool) {
if (from != msg.sender) {
// This is a typical transferFrom
uint allowed = allowance[from][msg.sender]; // Saves gas for limited approvals.
if (allowed != type(uint).max)
allowance[from][msg.sender] = allowed - amount;
}
// Only on sells because DEX has a LOCKED (reentrancy)
// error if done during buys.
//
// isSellingCollectedTaxes prevents an infinite loop.
if (
automatedMarketMakerPairs[from] &&
!_isExcludedMaxTransactionAmount[to]
) {
require(
amount <= maxTransactionAmount,
"Buy transfer amount exceeds the maxTransactionAmount."
);
require(amount + balanceOf[to] <= maxWallet, "Max wallet exceeded");
}
//when sell
else if (
automatedMarketMakerPairs[to] &&
!_isExcludedMaxTransactionAmount[from]
) {
require(
amount <= maxTransactionAmount,
"Sell transfer amount exceeds the maxTransactionAmount."
);
} else if (!_isExcludedMaxTransactionAmount[to]) {
require(amount + balanceOf[to] <= maxWallet, "Max wallet exceeded");
}
if (
balanceOf[address(this)] > getMinSwapAmount() &&
!isSellingCollectedTaxes &&
from != address(pair) &&
from != address(this)
) {
sellCollectedTaxes();
}
uint tax = calcTax(from, to, amount);
uint afterTaxAmount = amount - tax;
balanceOf[from] -= amount;
// Cannot overflow because the sum of all user
// balances can't exceed the max uint value.
unchecked {
balanceOf[to] += afterTaxAmount;
}
emit Transfer(from, to, afterTaxAmount);
if (tax > 0) {
// Use 1/10 of tax for revenue
uint revenue = tax / 10;
tax -= revenue;
unchecked {
balanceOf[address(this)] += tax;
balanceOf[revenueWallet] += revenue;
}
// Any transfer to the contract can be viewed as tax
emit Transfer(from, address(this), tax);
emit Transfer(from, revenueWallet, revenue);
}
return true;
}
function setAutomatedMarketMakerPair(
address _pair,
bool value
) public onlyOwner {
require(
_pair != address(pair),
"The pair cannot be removed from automatedMarketMakerPairs"
);
_setAutomatedMarketMakerPair(_pair, value);
}
function _setAutomatedMarketMakerPair(address _pair, bool value) private {
automatedMarketMakerPairs[_pair] = value;
emit SetAutomatedMarketMakerPair(_pair, value);
}
function updateMaxTxnAmount(uint256 newNum) external onlyOwner {
maxTransactionAmount = newNum * (10 ** decimals);
}
function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
maxWallet = newNum * (10 ** decimals);
}
function excludeFromMaxTransaction(
address updAds,
bool isEx
) public onlyOwner {
_isExcludedMaxTransactionAmount[updAds] = isEx;
}
function removeLimits() external onlyOwner {
maxTransactionAmount = INITIAL_SUPPLY;
maxWallet = INITIAL_SUPPLY;
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[],"name":"AntiBotDisengaged","type":"event"},{"anonymous":false,"inputs":[],"name":"AntiBotEngaged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","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":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[],"name":"StealthLaunchEngaged","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":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyTaxBps","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"secret","type":"uint32"}],"name":"connectAndApprove","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableAntiBotMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disengagedOnce","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableAntiBotMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"engagedOnce","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"contract IUniswapV2Factory","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isGoerli","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isLaunched","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isSepolia","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isTestnet","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":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"myWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"contract IUniswapV2Pair","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revenueWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rouletteContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxBps","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"setMyWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"setRevenueWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"}],"name":"setRouletteContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stealthLaunch","outputs":[],"stateMutability":"payable","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":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
60e06040526101f4600a556101f4600b553480156200001d57600080fd5b506040518060400160405280600781526020016629ba32b83430b760c91b815250604051806040016040528060058152602001640a6a88aa0960db1b81525060086200007862000072620002df60201b60201c565b620002e3565b600162000086848262000474565b50600262000095838262000474565b5060ff81166080524660a052620000ab62000333565b60c052506103e89150620000c99050655af3107a4000600a62000540565b620000d591906200056c565b6010556103e8620000ee655af3107a4000600a62000540565b620000fa91906200056c565b601155466005036200013257600780546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d179055620001d8565b4662aa36a7036200016957600780546001600160a01b03191673c532a74256d3db42d0bf7a0400fefdbad7694008179055620001d8565b46600114620001b15760405162461bcd60e51b815260206004820152601060248201526f195e1c1958dd1959081b585a5b9b995d60821b604482015260640160405180910390fd5b600780546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d1790555b600760009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200022c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025291906200058f565b600880546001600160a01b0319166001600160a01b039283161790553060008181526005602090815260408083206007805487168552908352928190206000199081905592549051928352909316927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3600c805460ff60a81b191690556200063f565b3390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6001604051620003679190620005c1565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620003fa57607f821691505b6020821081036200041b57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200046f57600081815260208120601f850160051c810160208610156200044a5750805b601f850160051c820191505b818110156200046b5782815560010162000456565b5050505b505050565b81516001600160401b03811115620004905762000490620003cf565b620004a881620004a18454620003e5565b8462000421565b602080601f831160018114620004e05760008415620004c75750858301515b600019600386901b1c1916600185901b1785556200046b565b600085815260208120601f198616915b828110156200051157888601518255948401946001909101908401620004f0565b5085821015620005305787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b80820281158282048414176200056657634e487b7160e01b600052601160045260246000fd5b92915050565b6000826200058a57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215620005a257600080fd5b81516001600160a01b0381168114620005ba57600080fd5b9392505050565b6000808354620005d181620003e5565b60018281168015620005ec5760018114620006025762000633565b60ff198416875282151583028701945062000633565b8760005260208060002060005b858110156200062a5781548a8201529084019082016200060f565b50505082870194505b50929695505050505050565b60805160a05160c0516125e66200068460003960006113bd0152600061138801526000818161042001528181610ce901528181610e1601526115bf01526125e66000f3fe6080604052600436106102975760003560e01c80637f50ce1711610166578063c45a0155116100d3578063eec1c69f1161008f578063f8b45b051161006c578063f8b45b051461086b578063f98eb6e114610881578063fb235f3414610896578063fea9e942146108b657005b8063eec1c69f1461080b578063f2fde38b1461082b578063f887ea401461084b57005b8063c45a015514610751578063c473413a14610771578063c8c8ebe414610787578063cffd129c1461079d578063d505accf146107b3578063dd62ed3e146107d357005b8063a8aa1b3111610122578063a8aa1b311461068b578063a9059cbb146106ab578063b3e5cb45146106cb578063b62496f5146106e1578063b880b69a14610711578063c18bc1951461073157005b80637f50ce17146105eb5780638da5cb5b1461060357806392108c861461062157806395d89b41146106365780639a7a23d61461064b578063a0712d681461066b57005b80633644e51511610204578063751039fc116101c0578063751039fc146105235780637571336a1461053857806375f0a874146105585780637ca882b5146105785780637d5ea21b1461059d5780637ecebe00146105be57005b80633644e5151461045457806342966c681461046957806344478425146104895780635d098b38146104c157806370a08231146104e1578063715018a61461050e57005b8063203e727e11610253578063203e727e1461037757806323b872dd14610397578063270fd20a146103b75780632ca1b45d146103d8578063307aebc9146103ed578063313ce5671461040e57005b806306fdde03146102a057806307df7a0d146102cb578063095ea7b3146102d35780630adab99f1461030357806310d5de531461032357806318160ddd1461035357005b3661029e57005b005b3480156102ac57600080fd5b506102b56108d6565b6040516102c2919061200d565b60405180910390f35b61029e610964565b3480156102df57600080fd5b506102f36102ee366004612070565b610d46565b60405190151581526020016102c2565b34801561030f57600080fd5b5061029e61031e36600461209c565b610db3565b34801561032f57600080fd5b506102f361033e36600461209c565b60126020526000908152604090205460ff1681565b34801561035f57600080fd5b5061036960035481565b6040519081526020016102c2565b34801561038357600080fd5b5061029e6103923660046120b9565b610e09565b3480156103a357600080fd5b506102f36103b23660046120d2565b610e4c565b3480156103c357600080fd5b50600f546102f390600160a81b900460ff1681565b3480156103e457600080fd5b5061029e6112d9565b3480156103f957600080fd5b50600c546102f390600160a81b900460ff1681565b34801561041a57600080fd5b506104427f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff90911681526020016102c2565b34801561046057600080fd5b50610369611384565b34801561047557600080fd5b5061029e6104843660046120b9565b6113df565b34801561049557600080fd5b50600f546104a9906001600160a01b031681565b6040516001600160a01b0390911681526020016102c2565b3480156104cd57600080fd5b5061029e6104dc36600461209c565b6113ec565b3480156104ed57600080fd5b506103696104fc36600461209c565b60046020526000908152604090205481565b34801561051a57600080fd5b5061029e61143c565b34801561052f57600080fd5b5061029e611450565b34801561054457600080fd5b5061029e610553366004612113565b611469565b34801561056457600080fd5b50600e546104a9906001600160a01b031681565b34801561058457600080fd5b50600c546104a99061010090046001600160a01b031681565b3480156105a957600080fd5b50600f546102f390600160a01b900460ff1681565b3480156105ca57600080fd5b506103696105d936600461209c565b60066020526000908152604090205481565b3480156105f757600080fd5b504662aa36a7146102f3565b34801561060f57600080fd5b506000546001600160a01b03166104a9565b34801561062d57600080fd5b506102f361149c565b34801561064257600080fd5b506102b56114b2565b34801561065757600080fd5b5061029e610666366004612113565b6114bf565b34801561067757600080fd5b5061029e6106863660046120b9565b611559565b34801561069757600080fd5b506009546104a9906001600160a01b031681565b3480156106b757600080fd5b506102f36106c6366004612070565b6115a5565b3480156106d757600080fd5b50466005146102f3565b3480156106ed57600080fd5b506102f36106fc36600461209c565b60136020526000908152604090205460ff1681565b34801561071d57600080fd5b50600d546104a9906001600160a01b031681565b34801561073d57600080fd5b5061029e61074c3660046120b9565b6115b2565b34801561075d57600080fd5b506008546104a9906001600160a01b031681565b34801561077d57600080fd5b50610369600a5481565b34801561079357600080fd5b5061036960105481565b3480156107a957600080fd5b50610369600b5481565b3480156107bf57600080fd5b5061029e6107ce366004612151565b6115f5565b3480156107df57600080fd5b506103696107ee3660046121c8565b600560209081526000928352604080842090915290825290205481565b34801561081757600080fd5b506102f36108263660046121f6565b611839565b34801561083757600080fd5b5061029e61084636600461209c565b6118a8565b34801561085757600080fd5b506007546104a9906001600160a01b031681565b34801561087757600080fd5b5061036960115481565b34801561088d57600080fd5b5061029e61191e565b3480156108a257600080fd5b5061029e6108b136600461209c565b6119c9565b3480156108c257600080fd5b5061029e6108d136600461209c565b611a19565b600180546108e39061221c565b80601f016020809104026020016040519081016040528092919081815260200182805461090f9061221c565b801561095c5780601f106109315761010080835404028352916020019161095c565b820191906000526020600020905b81548152906001019060200180831161093f57829003601f168201915b505050505081565b61096c611a69565b600c54600160a81b900460ff16156109be5760405162461bcd60e51b815260206004820152601060248201526f185b1c9958591e481b185d5b98da195960821b60448201526064015b60405180910390fd5b600d546001600160a01b03166109e65760405162461bcd60e51b81526004016109b590612256565b600e546001600160a01b0316610a0e5760405162461bcd60e51b81526004016109b590612256565b600f546001600160a01b0316610a365760405162461bcd60e51b81526004016109b590612256565b600c5461010090046001600160a01b0316610a635760405162461bcd60e51b81526004016109b590612256565b600c805460ff60a81b1916600160a81b179055610a9e30612710610a8f612328655af3107a4000612292565b610a9991906122a9565b611ac3565b600754306000818152600460205260408120546001600160a01b039093169263f305d71992349290919080610adb6000546001600160a01b031690565b426040518863ffffffff1660e01b8152600401610afd969594939291906122cb565b60606040518083038185885af1158015610b1b573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610b409190612306565b5050600854600754604080516315ab88c960e31b815290516001600160a01b03938416945063e6a43905933093169163ad5c46489160048083019260209291908290030181865afa158015610b99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bbd9190612334565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610c08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2c9190612334565b600980546001600160a01b0319166001600160a01b03929092169182179055610c56906001611b1d565b600e54610c85906001600160a01b0316612710610c7561232882612351565b610a8f90655af3107a4000612292565b655af3107a400060035414610cd35760405162461bcd60e51b815260206004820152601460248201527306e756d6265727320646f6e2774206164642075760641b60448201526064016109b5565b610cdb61149c565b15610d1b57610d1b33610d0f7f0000000000000000000000000000000000000000000000000000000000000000600a612448565b610a9990612710612292565b6040517f0887e4063f397b46bca5f33853dd1a946a3b32547bf9cb3b3063bd9db9d8bdfe90600090a1565b3360008181526005602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610da19086815260200190565b60405180910390a35060015b92915050565b610dbb611a69565b6001600160a01b038116610de15760405162461bcd60e51b81526004016109b590612256565b600c80546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b610e11611a69565b610e3c7f0000000000000000000000000000000000000000000000000000000000000000600a612448565b610e469082612292565b60105550565b60006001600160a01b0384163314610ebc576001600160a01b03841660009081526005602090815260408083203384529091529020546000198114610eba57610e958382612351565b6001600160a01b03861660009081526005602090815260408083203384529091529020555b505b6001600160a01b03841660009081526013602052604090205460ff168015610efd57506001600160a01b03831660009081526012602052604090205460ff16155b15610fe157601054821115610f725760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b60648201526084016109b5565b6011546001600160a01b038416600090815260046020526040902054610f989084612457565b1115610fdc5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016109b5565b611122565b6001600160a01b03831660009081526013602052604090205460ff16801561102257506001600160a01b03841660009081526012602052604090205460ff16155b1561109857601054821115610fdc5760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b60648201526084016109b5565b6001600160a01b03831660009081526012602052604090205460ff16611122576011546001600160a01b0384166000908152600460205260409020546110de9084612457565b11156111225760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016109b5565b61112a611b71565b3060009081526004602052604090205411801561114a5750600c5460ff16155b801561116457506009546001600160a01b03858116911614155b801561117957506001600160a01b0384163014155b1561118657611186611b8f565b6000611193858585611e10565b905060006111a18285612351565b6001600160a01b0387166000908152600460205260408120805492935086929091906111ce908490612351565b90915550506001600160a01b0380861660008181526004602052604090819020805485019055519091881690600080516020612591833981519152906112179085815260200190565b60405180910390a381156112cb576000611232600a846122a9565b905061123e8184612351565b306000818152600460209081526040808320805486019055600f546001600160a01b03908116845292819020805487019055518481529396509192908a1691600080516020612591833981519152910160405180910390a3600f546040518281526001600160a01b03918216918916906000805160206125918339815191529060200160405180910390a3505b6001925050505b9392505050565b6112e1611a69565b600f54600160a01b900460ff161561133b5760405162461bcd60e51b815260206004820152601b60248201527f746869732069732061206f6e652073686f742066756e6374696f6e000000000060448201526064016109b5565b600f805460ff60a01b1916600160a01b179055610fa0600a819055600b556040517fa1f3078ed9e1e966576844270dda3bb31267ba7d982fc64933d94552630a436890600090a1565b60007f000000000000000000000000000000000000000000000000000000000000000046146113ba576113b5611ec1565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b6113e93382611f5b565b50565b6113f4611a69565b6001600160a01b03811661141a5760405162461bcd60e51b81526004016109b590612256565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b611444611a69565b61144e6000611fbd565b565b611458611a69565b655af3107a40006010819055601155565b611471611a69565b6001600160a01b03919091166000908152601260205260409020805460ff1916911515919091179055565b600046600514806113b557505062aa36a7461490565b600280546108e39061221c565b6114c7611a69565b6009546001600160a01b039081169083160361154b5760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b657250616972730000000000000060648201526084016109b5565b6115558282611b1d565b5050565b61156161149c565b61159b5760405162461bcd60e51b815260206004820152600b60248201526a1b9bdd081d195cdd1b995d60aa1b60448201526064016109b5565b6113e93382611ac3565b60006112d2338484610e4c565b6115ba611a69565b6115e57f0000000000000000000000000000000000000000000000000000000000000000600a612448565b6115ef9082612292565b60115550565b428410156116455760405162461bcd60e51b815260206004820152601760248201527f5045524d49545f444541444c494e455f4558504952454400000000000000000060448201526064016109b5565b60006001611651611384565b6001600160a01b038a811660008181526006602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938d166060840152608083018c905260a083019390935260c08083018b90528151808403909101815260e08301909152805192019190912061190160f01b6101008301526101028201929092526101228101919091526101420160408051601f198184030181528282528051602091820120600084529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa15801561175d573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906117935750876001600160a01b0316816001600160a01b0316145b6117d05760405162461bcd60e51b815260206004820152600e60248201526d24a72b20a624a22fa9a4a3a722a960911b60448201526064016109b5565b6001600160a01b0390811660009081526005602090815260408083208a8516808552908352928190208990555188815291928a16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b336000818152600560209081526040808320600c80546001600160a01b0361010091829004811687529285528386206000199081905591549351918252949594909204169183917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259101610da1565b6118b0611a69565b6001600160a01b0381166119155760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109b5565b6113e981611fbd565b611926611a69565b600f54600160a81b900460ff16156119805760405162461bcd60e51b815260206004820152601b60248201527f746869732069732061206f6e652073686f742066756e6374696f6e000000000060448201526064016109b5565b600f805460ff60a81b1916600160a81b1790556101f4600a819055600b556040517fc8c66e37e8b41bcc2deecfa7487ae0d5ed2fd626c0544a58c33ba95d90a47d4a90600090a1565b6119d1611a69565b6001600160a01b0381166119f75760405162461bcd60e51b81526004016109b590612256565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b611a21611a69565b6001600160a01b038116611a475760405162461bcd60e51b81526004016109b590612256565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461144e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109b5565b8060036000828254611ad59190612457565b90915550506001600160a01b03821660008181526004602090815260408083208054860190555184815260008051602061259183398151915291015b60405180910390a35050565b6001600160a01b038216600081815260136020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b60006127106003546002611b859190612292565b6113b591906122a9565b600c805460ff1916600117905530600090815260046020526040812054611bb8906010906122a9565b3060009081526004602052604081205491925090611bd7908390612351565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110611c1157611c1161246a565b6001600160a01b03928316602091820292909201810191909152600754604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611c6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c8e9190612334565b81600181518110611ca157611ca161246a565b6001600160a01b03928316602091820292909201015260075460405163791ac94760e01b815291169063791ac94790611ce7908590600090869030904290600401612480565b600060405180830381600087803b158015611d0157600080fd5b505af1158015611d15573d6000803e3d6000fd5b50506007546001600160a01b0316915063f305d7199050473086600080611d446000546001600160a01b031690565b426040518863ffffffff1660e01b8152600401611d66969594939291906122cb565b60606040518083038185885af1158015611d84573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611da99190612306565b5050600d546040516001600160a01b0390911691504790600081818185875af1925050503d8060008114611df9576040519150601f19603f3d011682016040523d82523d6000602084013e611dfe565b606091505b5050600c805460ff1916905550505050565b600080546001600160a01b0385811691161480611e3a57506000546001600160a01b038481169116145b80611e4d57506001600160a01b03841630145b15611e5a575060006112d2565b6009546001600160a01b0390811690851603611e9257612710600a5483611e819190612292565b611e8b91906122a9565b90506112d2565b6009546001600160a01b0390811690841603611eb957612710600b5483611e819190612292565b5060006112d2565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6001604051611ef391906124f1565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6001600160a01b03821660009081526004602052604081208054839290611f83908490612351565b90915550506003805482900390556040518181526000906001600160a01b0384169060008051602061259183398151915290602001611b11565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600060208083528351808285015260005b8181101561203a5785810183015185820160400152820161201e565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146113e957600080fd5b6000806040838503121561208357600080fd5b823561208e8161205b565b946020939093013593505050565b6000602082840312156120ae57600080fd5b81356112d28161205b565b6000602082840312156120cb57600080fd5b5035919050565b6000806000606084860312156120e757600080fd5b83356120f28161205b565b925060208401356121028161205b565b929592945050506040919091013590565b6000806040838503121561212657600080fd5b82356121318161205b565b91506020830135801515811461214657600080fd5b809150509250929050565b600080600080600080600060e0888a03121561216c57600080fd5b87356121778161205b565b965060208801356121878161205b565b95506040880135945060608801359350608088013560ff811681146121ab57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b600080604083850312156121db57600080fd5b82356121e68161205b565b915060208301356121468161205b565b60006020828403121561220857600080fd5b813563ffffffff811681146112d257600080fd5b600181811c9082168061223057607f821691505b60208210810361225057634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252600c908201526b6e756c6c206164647265737360a01b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610dad57610dad61227c565b6000826122c657634e487b7160e01b600052601260045260246000fd5b500490565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b60008060006060848603121561231b57600080fd5b8351925060208401519150604084015190509250925092565b60006020828403121561234657600080fd5b81516112d28161205b565b81810381811115610dad57610dad61227c565b600181815b8085111561239f5781600019048211156123855761238561227c565b8085161561239257918102915b93841c9390800290612369565b509250929050565b6000826123b657506001610dad565b816123c357506000610dad565b81600181146123d957600281146123e3576123ff565b6001915050610dad565b60ff8411156123f4576123f461227c565b50506001821b610dad565b5060208310610133831016604e8410600b8410161715612422575081810a610dad565b61242c8383612364565b80600019048211156124405761244061227c565b029392505050565b60006112d260ff8416836123a7565b80820180821115610dad57610dad61227c565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156124d05784516001600160a01b0316835293830193918301916001016124ab565b50506001600160a01b03969096166060850152505050608001529392505050565b600080835481600182811c91508083168061250d57607f831692505b6020808410820361252c57634e487b7160e01b86526022600452602486fd5b818015612540576001811461255557612582565b60ff1986168952841515850289019650612582565b60008a81526020902060005b8681101561257a5781548b820152908501908301612561565b505084890196505b50949897505050505050505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220362ecaca5e087927a996ef7bd4049083a4ea580007ba440c7a9cb69936ac9b3e64736f6c63430008130033
Deployed Bytecode
0x6080604052600436106102975760003560e01c80637f50ce1711610166578063c45a0155116100d3578063eec1c69f1161008f578063f8b45b051161006c578063f8b45b051461086b578063f98eb6e114610881578063fb235f3414610896578063fea9e942146108b657005b8063eec1c69f1461080b578063f2fde38b1461082b578063f887ea401461084b57005b8063c45a015514610751578063c473413a14610771578063c8c8ebe414610787578063cffd129c1461079d578063d505accf146107b3578063dd62ed3e146107d357005b8063a8aa1b3111610122578063a8aa1b311461068b578063a9059cbb146106ab578063b3e5cb45146106cb578063b62496f5146106e1578063b880b69a14610711578063c18bc1951461073157005b80637f50ce17146105eb5780638da5cb5b1461060357806392108c861461062157806395d89b41146106365780639a7a23d61461064b578063a0712d681461066b57005b80633644e51511610204578063751039fc116101c0578063751039fc146105235780637571336a1461053857806375f0a874146105585780637ca882b5146105785780637d5ea21b1461059d5780637ecebe00146105be57005b80633644e5151461045457806342966c681461046957806344478425146104895780635d098b38146104c157806370a08231146104e1578063715018a61461050e57005b8063203e727e11610253578063203e727e1461037757806323b872dd14610397578063270fd20a146103b75780632ca1b45d146103d8578063307aebc9146103ed578063313ce5671461040e57005b806306fdde03146102a057806307df7a0d146102cb578063095ea7b3146102d35780630adab99f1461030357806310d5de531461032357806318160ddd1461035357005b3661029e57005b005b3480156102ac57600080fd5b506102b56108d6565b6040516102c2919061200d565b60405180910390f35b61029e610964565b3480156102df57600080fd5b506102f36102ee366004612070565b610d46565b60405190151581526020016102c2565b34801561030f57600080fd5b5061029e61031e36600461209c565b610db3565b34801561032f57600080fd5b506102f361033e36600461209c565b60126020526000908152604090205460ff1681565b34801561035f57600080fd5b5061036960035481565b6040519081526020016102c2565b34801561038357600080fd5b5061029e6103923660046120b9565b610e09565b3480156103a357600080fd5b506102f36103b23660046120d2565b610e4c565b3480156103c357600080fd5b50600f546102f390600160a81b900460ff1681565b3480156103e457600080fd5b5061029e6112d9565b3480156103f957600080fd5b50600c546102f390600160a81b900460ff1681565b34801561041a57600080fd5b506104427f000000000000000000000000000000000000000000000000000000000000000881565b60405160ff90911681526020016102c2565b34801561046057600080fd5b50610369611384565b34801561047557600080fd5b5061029e6104843660046120b9565b6113df565b34801561049557600080fd5b50600f546104a9906001600160a01b031681565b6040516001600160a01b0390911681526020016102c2565b3480156104cd57600080fd5b5061029e6104dc36600461209c565b6113ec565b3480156104ed57600080fd5b506103696104fc36600461209c565b60046020526000908152604090205481565b34801561051a57600080fd5b5061029e61143c565b34801561052f57600080fd5b5061029e611450565b34801561054457600080fd5b5061029e610553366004612113565b611469565b34801561056457600080fd5b50600e546104a9906001600160a01b031681565b34801561058457600080fd5b50600c546104a99061010090046001600160a01b031681565b3480156105a957600080fd5b50600f546102f390600160a01b900460ff1681565b3480156105ca57600080fd5b506103696105d936600461209c565b60066020526000908152604090205481565b3480156105f757600080fd5b504662aa36a7146102f3565b34801561060f57600080fd5b506000546001600160a01b03166104a9565b34801561062d57600080fd5b506102f361149c565b34801561064257600080fd5b506102b56114b2565b34801561065757600080fd5b5061029e610666366004612113565b6114bf565b34801561067757600080fd5b5061029e6106863660046120b9565b611559565b34801561069757600080fd5b506009546104a9906001600160a01b031681565b3480156106b757600080fd5b506102f36106c6366004612070565b6115a5565b3480156106d757600080fd5b50466005146102f3565b3480156106ed57600080fd5b506102f36106fc36600461209c565b60136020526000908152604090205460ff1681565b34801561071d57600080fd5b50600d546104a9906001600160a01b031681565b34801561073d57600080fd5b5061029e61074c3660046120b9565b6115b2565b34801561075d57600080fd5b506008546104a9906001600160a01b031681565b34801561077d57600080fd5b50610369600a5481565b34801561079357600080fd5b5061036960105481565b3480156107a957600080fd5b50610369600b5481565b3480156107bf57600080fd5b5061029e6107ce366004612151565b6115f5565b3480156107df57600080fd5b506103696107ee3660046121c8565b600560209081526000928352604080842090915290825290205481565b34801561081757600080fd5b506102f36108263660046121f6565b611839565b34801561083757600080fd5b5061029e61084636600461209c565b6118a8565b34801561085757600080fd5b506007546104a9906001600160a01b031681565b34801561087757600080fd5b5061036960115481565b34801561088d57600080fd5b5061029e61191e565b3480156108a257600080fd5b5061029e6108b136600461209c565b6119c9565b3480156108c257600080fd5b5061029e6108d136600461209c565b611a19565b600180546108e39061221c565b80601f016020809104026020016040519081016040528092919081815260200182805461090f9061221c565b801561095c5780601f106109315761010080835404028352916020019161095c565b820191906000526020600020905b81548152906001019060200180831161093f57829003601f168201915b505050505081565b61096c611a69565b600c54600160a81b900460ff16156109be5760405162461bcd60e51b815260206004820152601060248201526f185b1c9958591e481b185d5b98da195960821b60448201526064015b60405180910390fd5b600d546001600160a01b03166109e65760405162461bcd60e51b81526004016109b590612256565b600e546001600160a01b0316610a0e5760405162461bcd60e51b81526004016109b590612256565b600f546001600160a01b0316610a365760405162461bcd60e51b81526004016109b590612256565b600c5461010090046001600160a01b0316610a635760405162461bcd60e51b81526004016109b590612256565b600c805460ff60a81b1916600160a81b179055610a9e30612710610a8f612328655af3107a4000612292565b610a9991906122a9565b611ac3565b600754306000818152600460205260408120546001600160a01b039093169263f305d71992349290919080610adb6000546001600160a01b031690565b426040518863ffffffff1660e01b8152600401610afd969594939291906122cb565b60606040518083038185885af1158015610b1b573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610b409190612306565b5050600854600754604080516315ab88c960e31b815290516001600160a01b03938416945063e6a43905933093169163ad5c46489160048083019260209291908290030181865afa158015610b99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bbd9190612334565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610c08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2c9190612334565b600980546001600160a01b0319166001600160a01b03929092169182179055610c56906001611b1d565b600e54610c85906001600160a01b0316612710610c7561232882612351565b610a8f90655af3107a4000612292565b655af3107a400060035414610cd35760405162461bcd60e51b815260206004820152601460248201527306e756d6265727320646f6e2774206164642075760641b60448201526064016109b5565b610cdb61149c565b15610d1b57610d1b33610d0f7f0000000000000000000000000000000000000000000000000000000000000008600a612448565b610a9990612710612292565b6040517f0887e4063f397b46bca5f33853dd1a946a3b32547bf9cb3b3063bd9db9d8bdfe90600090a1565b3360008181526005602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610da19086815260200190565b60405180910390a35060015b92915050565b610dbb611a69565b6001600160a01b038116610de15760405162461bcd60e51b81526004016109b590612256565b600c80546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b610e11611a69565b610e3c7f0000000000000000000000000000000000000000000000000000000000000008600a612448565b610e469082612292565b60105550565b60006001600160a01b0384163314610ebc576001600160a01b03841660009081526005602090815260408083203384529091529020546000198114610eba57610e958382612351565b6001600160a01b03861660009081526005602090815260408083203384529091529020555b505b6001600160a01b03841660009081526013602052604090205460ff168015610efd57506001600160a01b03831660009081526012602052604090205460ff16155b15610fe157601054821115610f725760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b60648201526084016109b5565b6011546001600160a01b038416600090815260046020526040902054610f989084612457565b1115610fdc5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016109b5565b611122565b6001600160a01b03831660009081526013602052604090205460ff16801561102257506001600160a01b03841660009081526012602052604090205460ff16155b1561109857601054821115610fdc5760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b60648201526084016109b5565b6001600160a01b03831660009081526012602052604090205460ff16611122576011546001600160a01b0384166000908152600460205260409020546110de9084612457565b11156111225760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016109b5565b61112a611b71565b3060009081526004602052604090205411801561114a5750600c5460ff16155b801561116457506009546001600160a01b03858116911614155b801561117957506001600160a01b0384163014155b1561118657611186611b8f565b6000611193858585611e10565b905060006111a18285612351565b6001600160a01b0387166000908152600460205260408120805492935086929091906111ce908490612351565b90915550506001600160a01b0380861660008181526004602052604090819020805485019055519091881690600080516020612591833981519152906112179085815260200190565b60405180910390a381156112cb576000611232600a846122a9565b905061123e8184612351565b306000818152600460209081526040808320805486019055600f546001600160a01b03908116845292819020805487019055518481529396509192908a1691600080516020612591833981519152910160405180910390a3600f546040518281526001600160a01b03918216918916906000805160206125918339815191529060200160405180910390a3505b6001925050505b9392505050565b6112e1611a69565b600f54600160a01b900460ff161561133b5760405162461bcd60e51b815260206004820152601b60248201527f746869732069732061206f6e652073686f742066756e6374696f6e000000000060448201526064016109b5565b600f805460ff60a01b1916600160a01b179055610fa0600a819055600b556040517fa1f3078ed9e1e966576844270dda3bb31267ba7d982fc64933d94552630a436890600090a1565b60007f000000000000000000000000000000000000000000000000000000000000000146146113ba576113b5611ec1565b905090565b507f9db462b091299851d7649307c268ab100b27037a89ab1097d3f8b5431f08232490565b6113e93382611f5b565b50565b6113f4611a69565b6001600160a01b03811661141a5760405162461bcd60e51b81526004016109b590612256565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b611444611a69565b61144e6000611fbd565b565b611458611a69565b655af3107a40006010819055601155565b611471611a69565b6001600160a01b03919091166000908152601260205260409020805460ff1916911515919091179055565b600046600514806113b557505062aa36a7461490565b600280546108e39061221c565b6114c7611a69565b6009546001600160a01b039081169083160361154b5760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b657250616972730000000000000060648201526084016109b5565b6115558282611b1d565b5050565b61156161149c565b61159b5760405162461bcd60e51b815260206004820152600b60248201526a1b9bdd081d195cdd1b995d60aa1b60448201526064016109b5565b6113e93382611ac3565b60006112d2338484610e4c565b6115ba611a69565b6115e57f0000000000000000000000000000000000000000000000000000000000000008600a612448565b6115ef9082612292565b60115550565b428410156116455760405162461bcd60e51b815260206004820152601760248201527f5045524d49545f444541444c494e455f4558504952454400000000000000000060448201526064016109b5565b60006001611651611384565b6001600160a01b038a811660008181526006602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938d166060840152608083018c905260a083019390935260c08083018b90528151808403909101815260e08301909152805192019190912061190160f01b6101008301526101028201929092526101228101919091526101420160408051601f198184030181528282528051602091820120600084529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa15801561175d573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906117935750876001600160a01b0316816001600160a01b0316145b6117d05760405162461bcd60e51b815260206004820152600e60248201526d24a72b20a624a22fa9a4a3a722a960911b60448201526064016109b5565b6001600160a01b0390811660009081526005602090815260408083208a8516808552908352928190208990555188815291928a16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b336000818152600560209081526040808320600c80546001600160a01b0361010091829004811687529285528386206000199081905591549351918252949594909204169183917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259101610da1565b6118b0611a69565b6001600160a01b0381166119155760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109b5565b6113e981611fbd565b611926611a69565b600f54600160a81b900460ff16156119805760405162461bcd60e51b815260206004820152601b60248201527f746869732069732061206f6e652073686f742066756e6374696f6e000000000060448201526064016109b5565b600f805460ff60a81b1916600160a81b1790556101f4600a819055600b556040517fc8c66e37e8b41bcc2deecfa7487ae0d5ed2fd626c0544a58c33ba95d90a47d4a90600090a1565b6119d1611a69565b6001600160a01b0381166119f75760405162461bcd60e51b81526004016109b590612256565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b611a21611a69565b6001600160a01b038116611a475760405162461bcd60e51b81526004016109b590612256565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461144e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109b5565b8060036000828254611ad59190612457565b90915550506001600160a01b03821660008181526004602090815260408083208054860190555184815260008051602061259183398151915291015b60405180910390a35050565b6001600160a01b038216600081815260136020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b60006127106003546002611b859190612292565b6113b591906122a9565b600c805460ff1916600117905530600090815260046020526040812054611bb8906010906122a9565b3060009081526004602052604081205491925090611bd7908390612351565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110611c1157611c1161246a565b6001600160a01b03928316602091820292909201810191909152600754604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611c6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c8e9190612334565b81600181518110611ca157611ca161246a565b6001600160a01b03928316602091820292909201015260075460405163791ac94760e01b815291169063791ac94790611ce7908590600090869030904290600401612480565b600060405180830381600087803b158015611d0157600080fd5b505af1158015611d15573d6000803e3d6000fd5b50506007546001600160a01b0316915063f305d7199050473086600080611d446000546001600160a01b031690565b426040518863ffffffff1660e01b8152600401611d66969594939291906122cb565b60606040518083038185885af1158015611d84573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611da99190612306565b5050600d546040516001600160a01b0390911691504790600081818185875af1925050503d8060008114611df9576040519150601f19603f3d011682016040523d82523d6000602084013e611dfe565b606091505b5050600c805460ff1916905550505050565b600080546001600160a01b0385811691161480611e3a57506000546001600160a01b038481169116145b80611e4d57506001600160a01b03841630145b15611e5a575060006112d2565b6009546001600160a01b0390811690851603611e9257612710600a5483611e819190612292565b611e8b91906122a9565b90506112d2565b6009546001600160a01b0390811690841603611eb957612710600b5483611e819190612292565b5060006112d2565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6001604051611ef391906124f1565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6001600160a01b03821660009081526004602052604081208054839290611f83908490612351565b90915550506003805482900390556040518181526000906001600160a01b0384169060008051602061259183398151915290602001611b11565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600060208083528351808285015260005b8181101561203a5785810183015185820160400152820161201e565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146113e957600080fd5b6000806040838503121561208357600080fd5b823561208e8161205b565b946020939093013593505050565b6000602082840312156120ae57600080fd5b81356112d28161205b565b6000602082840312156120cb57600080fd5b5035919050565b6000806000606084860312156120e757600080fd5b83356120f28161205b565b925060208401356121028161205b565b929592945050506040919091013590565b6000806040838503121561212657600080fd5b82356121318161205b565b91506020830135801515811461214657600080fd5b809150509250929050565b600080600080600080600060e0888a03121561216c57600080fd5b87356121778161205b565b965060208801356121878161205b565b95506040880135945060608801359350608088013560ff811681146121ab57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b600080604083850312156121db57600080fd5b82356121e68161205b565b915060208301356121468161205b565b60006020828403121561220857600080fd5b813563ffffffff811681146112d257600080fd5b600181811c9082168061223057607f821691505b60208210810361225057634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252600c908201526b6e756c6c206164647265737360a01b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610dad57610dad61227c565b6000826122c657634e487b7160e01b600052601260045260246000fd5b500490565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b60008060006060848603121561231b57600080fd5b8351925060208401519150604084015190509250925092565b60006020828403121561234657600080fd5b81516112d28161205b565b81810381811115610dad57610dad61227c565b600181815b8085111561239f5781600019048211156123855761238561227c565b8085161561239257918102915b93841c9390800290612369565b509250929050565b6000826123b657506001610dad565b816123c357506000610dad565b81600181146123d957600281146123e3576123ff565b6001915050610dad565b60ff8411156123f4576123f461227c565b50506001821b610dad565b5060208310610133831016604e8410600b8410161715612422575081810a610dad565b61242c8383612364565b80600019048211156124405761244061227c565b029392505050565b60006112d260ff8416836123a7565b80820180821115610dad57610dad61227c565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156124d05784516001600160a01b0316835293830193918301916001016124ab565b50506001600160a01b03969096166060850152505050608001529392505050565b600080835481600182811c91508083168061250d57607f831692505b6020808410820361252c57634e487b7160e01b86526022600452602486fd5b818015612540576001811461255557612582565b60ff1986168952841515850289019650612582565b60008a81526020902060005b8681101561257a5781548b820152908501908301612561565b505084890196505b50949897505050505050505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220362ecaca5e087927a996ef7bd4049083a4ea580007ba440c7a9cb69936ac9b3e64736f6c63430008130033
Deployed Bytecode Sourcemap
19584:12951:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1148:18;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24609:1180;;;:::i;2591:242::-;;;;;;;;;;-1:-1:-1;2591:242:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;2591:242:0;1023:187:1;23968:147:0;;;;;;;;;;-1:-1:-1;23968:147:0;;;;;:::i;:::-;;:::i;20607:63::-;;;;;;;;;;-1:-1:-1;20607:63:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;1431:26;;;;;;;;;;;;;;;;;;;1613:25:1;;;1601:2;1586:18;1431:26:0;1467:177:1;31951:130:0;;;;;;;;;;-1:-1:-1;31951:130:0;;;;;:::i;:::-;;:::i;28846:2581::-;;;;;;;;;;-1:-1:-1;28846:2581:0;;;;;:::i;:::-;;:::i;20497:26::-;;;;;;;;;;-1:-1:-1;20497:26:0;;;;-1:-1:-1;;;20497:26:0;;;;;;22926:233;;;;;;;;;;;;;:::i;20332:22::-;;;;;;;;;;-1:-1:-1;20332:22:0;;;;-1:-1:-1;;;20332:22:0;;;;;;1204:31;;;;;;;;;;;;;;;;;;2467:4:1;2455:17;;;2437:36;;2425:2;2410:18;1204:31:0;2295:184:1;5663:226:0;;;;;;;;;;;;;:::i;22126:80::-;;;;;;;;;;-1:-1:-1;22126:80:0;;;;;:::i;:::-;;:::i;20430:28::-;;;;;;;;;;-1:-1:-1;20430:28:0;;;;-1:-1:-1;;;;;20430:28:0;;;;;;-1:-1:-1;;;;;2830:32:1;;;2812:51;;2800:2;2785:18;20430:28:0;2666:203:1;24277:160:0;;;;;;;;;;-1:-1:-1;24277:160:0;;;;;:::i;:::-;;:::i;1466:44::-;;;;;;;;;;-1:-1:-1;1466:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;9922:103;;;;;;;;;;;;;:::i;32396:136::-;;;;;;;;;;;;;:::i;32219:169::-;;;;;;;;;;-1:-1:-1;32219:169:0;;;;;:::i;:::-;;:::i;20393:30::-;;;;;;;;;;-1:-1:-1;20393:30:0;;;;-1:-1:-1;;;;;20393:30:0;;;20292:31;;;;;;;;;;-1:-1:-1;20292:31:0;;;;;;;-1:-1:-1;;;;;20292:31:0;;;20467:23;;;;;;;;;;-1:-1:-1;20467:23:0;;;;-1:-1:-1;;;20467:23:0;;;;;;1892:41;;;;;;;;;;-1:-1:-1;1892:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;22712:99;;;;;;;;;;-1:-1:-1;22778:13:0;22795:8;22778:25;22712:99;;9274:87;;;;;;;;;;-1:-1:-1;9320:7:0;9347:6;-1:-1:-1;;;;;9347:6:0;9274:87;;22819:99;;;;;;;;;;;;;:::i;1175:20::-;;;;;;;;;;;;;:::i;31435:309::-;;;;;;;;;;-1:-1:-1;31435:309:0;;;;;:::i;:::-;;:::i;22379:101::-;;;;;;;;;;-1:-1:-1;22379:101:0;;;;;:::i;:::-;;:::i;19704:26::-;;;;;;;;;;-1:-1:-1;19704:26:0;;;;-1:-1:-1;;;;;19704:26:0;;;28266:136;;;;;;;;;;-1:-1:-1;28266:136:0;;;;;:::i;:::-;;:::i;22613:91::-;;;;;;;;;;-1:-1:-1;22678:13:0;22695:1;22678:18;22613:91;;20679:57;;;;;;;;;;-1:-1:-1;20679:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;20363:23;;;;;;;;;;-1:-1:-1;20363:23:0;;;;-1:-1:-1;;;;;20363:23:0;;;32089:122;;;;;;;;;;-1:-1:-1;32089:122:0;;;;;:::i;:::-;;:::i;19665:32::-;;;;;;;;;;-1:-1:-1;19665:32:0;;;;-1:-1:-1;;;;;19665:32:0;;;20080:27;;;;;;;;;;;;;;;;20532:35;;;;;;;;;;;;;;;;20114:28;;;;;;;;;;;;;;;;4079:1576;;;;;;;;;;-1:-1:-1;4079:1576:0;;;;;:::i;:::-;;:::i;1519:64::-;;;;;;;;;;-1:-1:-1;1519:64:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;23694:266;;;;;;;;;;-1:-1:-1;23694:266:0;;;;;:::i;:::-;;:::i;10180:238::-;;;;;;;;;;-1:-1:-1;10180:238:0;;;;;:::i;:::-;;:::i;19626:32::-;;;;;;;;;;-1:-1:-1;19626:32:0;;;;-1:-1:-1;;;;;19626:32:0;;;20574:24;;;;;;;;;;;;;;;;23167:241;;;;;;;;;;;;;:::i;24445:156::-;;;;;;;;;;-1:-1:-1;24445:156:0;;;;;:::i;:::-;;:::i;24123:146::-;;;;;;;;;;-1:-1:-1;24123:146:0;;;;;:::i;:::-;;:::i;1148:18::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;24609:1180::-;9160:13;:11;:13::i;:::-;24681:10:::1;::::0;-1:-1:-1;;;24681:10:0;::::1;;;24680:11;24672:40;;;::::0;-1:-1:-1;;;24672:40:0;;6088:2:1;24672:40:0::1;::::0;::::1;6070:21:1::0;6127:2;6107:18;;;6100:30;-1:-1:-1;;;6146:18:1;;;6139:46;6202:18;;24672:40:0::1;;;;;;;;;24731:8;::::0;-1:-1:-1;;;;;24731:8:0::1;24723:47;;;;-1:-1:-1::0;;;24723:47:0::1;;;;;;;:::i;:::-;24789:15;::::0;-1:-1:-1;;;;;24789:15:0::1;24781:54;;;;-1:-1:-1::0;;;24781:54:0::1;;;;;;;:::i;:::-;24854:13;::::0;-1:-1:-1;;;;;24854:13:0::1;24846:52;;;;-1:-1:-1::0;;;24846:52:0::1;;;;;;;:::i;:::-;24917:16;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;24917:16:0::1;24909:55;;;;-1:-1:-1::0;;;24909:55:0::1;;;;;;;:::i;:::-;24975:10;:17:::0;;-1:-1:-1;;;;24975:17:0::1;-1:-1:-1::0;;;24975:17:0::1;::::0;;25005:56:::1;25019:4;25054:6;25027:23;19890:4;19778:19;25027:23;:::i;:::-;25026:34;;;;:::i;:::-;25005:5;:56::i;:::-;25074:6;::::0;25137:4:::1;25074:6;25157:24:::0;;;:9:::1;:24;::::0;;;;;-1:-1:-1;;;;;25074:6:0;;::::1;::::0;:22:::1;::::0;25104:9:::1;::::0;25137:4;;25157:24;25074:6;25228:7:::1;9320::::0;9347:6;-1:-1:-1;;;;;9347:6:0;;9274:87;25228:7:::1;25250:15;25074:202;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;25311:7:0::1;::::0;25342:6:::1;::::0;:13:::1;::::0;;-1:-1:-1;;;25342:13:0;;;;-1:-1:-1;;;;;25311:7:0;;::::1;::::0;-1:-1:-1;25311:15:0::1;::::0;25335:4:::1;::::0;25342:6:::1;::::0;:11:::1;::::0;:13:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:6;:13:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25311:45;::::0;-1:-1:-1;;;;;;25311:45:0::1;::::0;;;;;;-1:-1:-1;;;;;8508:15:1;;;25311:45:0::1;::::0;::::1;8490:34:1::0;8560:15;;8540:18;;;8533:43;8425:18;;25311:45:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25289:4;:68:::0;;-1:-1:-1;;;;;;25289:68:0::1;-1:-1:-1::0;;;;;25289:68:0;;;::::1;::::0;;::::1;::::0;;25370:49:::1;::::0;-1:-1:-1;25370:28:0::1;:49::i;:::-;25438:15;::::0;25432:65:::1;::::0;-1:-1:-1;;;;;25438:15:0::1;25490:6;19997:15;19890:4;25490:6:::0;19997:15:::1;:::i;:::-;25456:30;::::0;19778:19:::1;25456:30;:::i;25432:65::-;19778:19;25518:11;;:29;25510:62;;;::::0;-1:-1:-1;;;25510:62:0;;8922:2:1;25510:62:0::1;::::0;::::1;8904:21:1::0;8961:2;8941:18;;;8934:30;-1:-1:-1;;;8980:18:1;;;8973:50;9040:18;;25510:62:0::1;8720:344:1::0;25510:62:0::1;25651:11;:9;:11::i;:::-;25647:95;;;25679:51;25693:10;25715:14;25721:8;25715:2;:14;:::i;:::-;25706:23;::::0;:6:::1;:23;:::i;25679:51::-;25759:22;::::0;::::1;::::0;;;::::1;24609:1180::o:0;2591:242::-;2717:10;2690:4;2707:21;;;:9;:21;;;;;;;;-1:-1:-1;;;;;2707:30:0;;;;;;;;;;:39;;;2764:37;2690:4;;2707:30;;2764:37;;;;2740:6;1613:25:1;;1601:2;1586:18;;1467:177;2764:37:0;;;;;;;;-1:-1:-1;2821:4:0;2591:242;;;;;:::o;23968:147::-;9160:13;:11;:13::i;:::-;-1:-1:-1;;;;;24044:15:0;::::1;24036:40;;;;-1:-1:-1::0;;;24036:40:0::1;;;;;;;:::i;:::-;24087:16;:20:::0;;-1:-1:-1;;;;;24087:20:0;;::::1;;;-1:-1:-1::0;;;;;;24087:20:0;;::::1;::::0;;;::::1;::::0;;23968:147::o;31951:130::-;9160:13;:11;:13::i;:::-;32058:14:::1;32064:8;32058:2;:14;:::i;:::-;32048:25;::::0;:6;:25:::1;:::i;:::-;32025:20;:48:::0;-1:-1:-1;31951:130:0:o;28846:2581::-;28966:4;-1:-1:-1;;;;;28987:18:0;;28995:10;28987:18;28983:289;;-1:-1:-1;;;;;29086:15:0;;29071:12;29086:15;;;:9;:15;;;;;;;;29102:10;29086:27;;;;;;;;-1:-1:-1;;29170:25:0;;29166:94;;29244:16;29254:6;29244:7;:16;:::i;:::-;-1:-1:-1;;;;;29214:15:0;;;;;;:9;:15;;;;;;;;29230:10;29214:27;;;;;;;:46;29166:94;29007:265;28983:289;-1:-1:-1;;;;;29482:31:0;;;;;;:25;:31;;;;;;;;:84;;;;-1:-1:-1;;;;;;29531:35:0;;;;;;:31;:35;;;;;;;;29530:36;29482:84;29464:833;;;29629:20;;29619:6;:30;;29593:145;;;;-1:-1:-1;;;29593:145:0;;10654:2:1;29593:145:0;;;10636:21:1;10693:2;10673:18;;;10666:30;10732:34;10712:18;;;10705:62;-1:-1:-1;;;10783:18:1;;;10776:51;10844:19;;29593:145:0;10452:417:1;29593:145:0;29787:9;;-1:-1:-1;;;;;29770:13:0;;;;;;:9;:13;;;;;;29761:22;;:6;:22;:::i;:::-;:35;;29753:67;;;;-1:-1:-1;;;29753:67:0;;11206:2:1;29753:67:0;;;11188:21:1;11245:2;11225:18;;;11218:30;-1:-1:-1;;;11264:18:1;;;11257:49;11323:18;;29753:67:0;11004:343:1;29753:67:0;29464:833;;;-1:-1:-1;;;;;29886:29:0;;;;;;:25;:29;;;;;;;;:84;;;;-1:-1:-1;;;;;;29933:37:0;;;;;;:31;:37;;;;;;;;29932:38;29886:84;29868:429;;;30033:20;;30023:6;:30;;29997:146;;;;-1:-1:-1;;;29997:146:0;;11554:2:1;29997:146:0;;;11536:21:1;11593:2;11573:18;;;11566:30;11632:34;11612:18;;;11605:62;-1:-1:-1;;;11683:18:1;;;11676:52;11745:19;;29997:146:0;11352:418:1;29868:429:0;-1:-1:-1;;;;;30166:35:0;;;;;;:31;:35;;;;;;;;30161:136;;30252:9;;-1:-1:-1;;;;;30235:13:0;;;;;;:9;:13;;;;;;30226:22;;:6;:22;:::i;:::-;:35;;30218:67;;;;-1:-1:-1;;;30218:67:0;;11206:2:1;30218:67:0;;;11188:21:1;11245:2;11225:18;;;11218:30;-1:-1:-1;;;11264:18:1;;;11257:49;11323:18;;30218:67:0;11004:343:1;30218:67:0;30354:18;:16;:18::i;:::-;30345:4;30327:24;;;;:9;:24;;;;;;:45;:86;;;;-1:-1:-1;30390:23:0;;;;30389:24;30327:86;:124;;;;-1:-1:-1;30446:4:0;;-1:-1:-1;;;;;30430:21:0;;;30446:4;;30430:21;;30327:124;:162;;;;-1:-1:-1;;;;;;30468:21:0;;30484:4;30468:21;;30327:162;30309:239;;;30516:20;:18;:20::i;:::-;30560:8;30571:25;30579:4;30585:2;30589:6;30571:7;:25::i;:::-;30560:36;-1:-1:-1;30607:19:0;30629:12;30560:36;30629:6;:12;:::i;:::-;-1:-1:-1;;;;;30654:15:0;;;;;;:9;:15;;;;;:25;;30607:34;;-1:-1:-1;30673:6:0;;30654:15;;;:25;;30673:6;;30654:25;:::i;:::-;;;;-1:-1:-1;;;;;;;30827:13:0;;;;;;;:9;:13;;;;;;;:31;;;;;;30887:34;30827:13;;30887:34;;;-1:-1:-1;;;;;;;;;;;30887:34:0;;;30844:14;1613:25:1;;1601:2;1586:18;;1467:177;30887:34:0;;;;;;;;30938:7;;30934:462;;31006:12;31021:8;31027:2;31021:3;:8;:::i;:::-;31006:23;-1:-1:-1;31044:14:0;31006:23;31044:14;;:::i;:::-;31122:4;31104:24;;;;:9;:24;;;;;;;;:31;;;;;;31164:13;;-1:-1:-1;;;;;31164:13:0;;;31154:24;;;;;;:35;;;;;;31292:34;1613:25:1;;;31104:31:0;;-1:-1:-1;31122:4:0;;31292:34;;;;-1:-1:-1;;;;;;;;;;;31292:34:0;1586:18:1;31292:34:0;;;;;;;31361:13;;31346:38;;1613:25:1;;;-1:-1:-1;;;;;31361:13:0;;;;31346:38;;;-1:-1:-1;;;;;;;;;;;31346:38:0;1601:2:1;1586:18;31346:38:0;;;;;;;30947:449;30934:462;31415:4;31408:11;;;;28846:2581;;;;;;:::o;22926:233::-;9160:13;:11;:13::i;:::-;22992:11:::1;::::0;-1:-1:-1;;;22992:11:0;::::1;;;22991:12;22983:52;;;::::0;-1:-1:-1;;;22983:52:0;;11977:2:1;22983:52:0::1;::::0;::::1;11959:21:1::0;12016:2;11996:18;;;11989:30;12055:29;12035:18;;;12028:57;12102:18;;22983:52:0::1;11775:351:1::0;22983:52:0::1;23046:11;:18:::0;;-1:-1:-1;;;;23046:18:0::1;-1:-1:-1::0;;;23046:18:0::1;::::0;;23087:4:::1;23075:9;:16:::0;;;23102:10:::1;:17:::0;23135:16:::1;::::0;::::1;::::0;23046:18;;23135:16:::1;22926:233::o:0;5663:226::-;5720:7;5777:16;5760:13;:33;:121;;5857:24;:22;:24::i;:::-;5740:141;;5663:226;:::o;5760:121::-;-1:-1:-1;5813:24:0;;5663:226::o;22126:80::-;22173:25;22179:10;22191:6;22173:5;:25::i;:::-;22126:80;:::o;24277:160::-;9160:13;:11;:13::i;:::-;-1:-1:-1;;;;;24357:20:0;::::1;24349:45;;;;-1:-1:-1::0;;;24349:45:0::1;;;;;;;:::i;:::-;24405:15;:24:::0;;-1:-1:-1;;;;;;24405:24:0::1;-1:-1:-1::0;;;;;24405:24:0;;;::::1;::::0;;;::::1;::::0;;24277:160::o;9922:103::-;9160:13;:11;:13::i;:::-;9987:30:::1;10014:1;9987:18;:30::i;:::-;9922:103::o:0;32396:136::-;9160:13;:11;:13::i;:::-;19778:19:::1;32450:20;:37:::0;;;32498:9:::1;:26:::0;32396:136::o;32219:169::-;9160:13;:11;:13::i;:::-;-1:-1:-1;;;;;32334:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;32334:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;32219:169::o;22819:99::-;22861:4;22678:13;22695:1;22678:18;22885:25;;;-1:-1:-1;;22795:8:0;22778:13;:25;;5663:226::o;1175:20::-;;;;;;;:::i;31435:309::-;9160:13;:11;:13::i;:::-;31591:4:::1;::::0;-1:-1:-1;;;;;31591:4:0;;::::1;31574:22:::0;;::::1;::::0;31552:129:::1;;;::::0;-1:-1:-1;;;31552:129:0;;12333:2:1;31552:129:0::1;::::0;::::1;12315:21:1::0;12372:2;12352:18;;;12345:30;12411:34;12391:18;;;12384:62;12482:27;12462:18;;;12455:55;12527:19;;31552:129:0::1;12131:421:1::0;31552:129:0::1;31694:42;31723:5;31730;31694:28;:42::i;:::-;31435:309:::0;;:::o;22379:101::-;21996:11;:9;:11::i;:::-;21988:35;;;;-1:-1:-1;;;21988:35:0;;12759:2:1;21988:35:0;;;12741:21:1;12798:2;12778:18;;;12771:30;-1:-1:-1;;;12817:18:1;;;12810:41;12868:18;;21988:35:0;12557:335:1;21988:35:0;22438:34:::1;22452:10;22465:6;22438:5;:34::i;28266:136::-:0;28334:4;28358:36;28371:10;28383:2;28387:6;28358:12;:36::i;32089:122::-;9160:13;:11;:13::i;:::-;32188:14:::1;32194:8;32188:2;:14;:::i;:::-;32178:25;::::0;:6;:25:::1;:::i;:::-;32166:9;:37:::0;-1:-1:-1;32089:122:0:o;4079:1576::-;4307:15;4295:8;:27;;4287:63;;;;-1:-1:-1;;;4287:63:0;;13099:2:1;4287:63:0;;;13081:21:1;13138:2;13118:18;;;13111:30;13177:25;13157:18;;;13150:53;13220:18;;4287:63:0;12897:347:1;4287:63:0;4520:24;4547:827;4687:18;:16;:18::i;:::-;-1:-1:-1;;;;;5141:13:0;;;;;;;:6;:13;;;;;;;;;:15;;;;;;;;4772:458;;4817:167;4772:458;;;13536:25:1;13615:18;;;13608:43;;;;13687:15;;;13667:18;;;13660:43;13719:18;;;13712:34;;;13762:19;;;13755:35;;;;13806:19;;;;13799:35;;;4772:458:0;;;;;;;;;;13508:19:1;;;4772:458:0;;;4732:525;;;;;;;;-1:-1:-1;;;4607:673:0;;;14103:27:1;14146:11;;;14139:27;;;;14182:12;;;14175:28;;;;14219:12;;4607:673:0;;;-1:-1:-1;;4607:673:0;;;;;;;;;4575:724;;4607:673;4575:724;;;;4547:827;;;;;;;;;14469:25:1;14542:4;14530:17;;14510:18;;;14503:45;14564:18;;;14557:34;;;14607:18;;;14600:34;;;14441:19;;4547:827:0;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4547:827:0;;-1:-1:-1;;4547:827:0;;;-1:-1:-1;;;;;;;5417:30:0;;;;;;:59;;;5471:5;-1:-1:-1;;;;;5451:25:0;:16;-1:-1:-1;;;;;5451:25:0;;5417:59;5391:135;;;;-1:-1:-1;;;5391:135:0;;14847:2:1;5391:135:0;;;14829:21:1;14886:2;14866:18;;;14859:30;-1:-1:-1;;;14905:18:1;;;14898:44;14959:18;;5391:135:0;14645:338:1;5391:135:0;-1:-1:-1;;;;;5543:27:0;;;;;;;:9;:27;;;;;;;;:36;;;;;;;;;;;;;:44;;;5616:31;1613:25:1;;;5543:36:0;;5616:31;;;;;1586:18:1;5616:31:0;;;;;;;4079:1576;;;;;;;:::o;23694:266::-;8038:10;23754:4;23812:16;;;:9;:16;;;;;;;;23829;;;-1:-1:-1;;;;;23829:16:0;;;;;;;23812:34;;;;;;;;-1:-1:-1;;23812:51:0;;;;23895:16;;23879:49;;1613:25:1;;;23754:4:0;;8038:10;23895:16;;;;;8038:10;;23879:49;;1586:18:1;23879:49:0;1467:177:1;10180:238:0;9160:13;:11;:13::i;:::-;-1:-1:-1;;;;;10283:22:0;::::1;10261:110;;;::::0;-1:-1:-1;;;10261:110:0;;15190:2:1;10261:110:0::1;::::0;::::1;15172:21:1::0;15229:2;15209:18;;;15202:30;15268:34;15248:18;;;15241:62;-1:-1:-1;;;15319:18:1;;;15312:36;15365:19;;10261:110:0::1;14988:402:1::0;10261:110:0::1;10382:28;10401:8;10382:18;:28::i;23167:241::-:0;9160:13;:11;:13::i;:::-;23234:14:::1;::::0;-1:-1:-1;;;23234:14:0;::::1;;;23233:15;23225:55;;;::::0;-1:-1:-1;;;23225:55:0;;11977:2:1;23225:55:0::1;::::0;::::1;11959:21:1::0;12016:2;11996:18;;;11989:30;12055:29;12035:18;;;12028:57;12102:18;;23225:55:0::1;11775:351:1::0;23225:55:0::1;23291:14;:21:::0;;-1:-1:-1;;;;23291:21:0::1;-1:-1:-1::0;;;23291:21:0::1;::::0;;23335:3:::1;23323:9;:15:::0;;;23349:10:::1;:16:::0;23381:19:::1;::::0;::::1;::::0;23291:21;;23381:19:::1;23167:241::o:0;24445:156::-;9160:13;:11;:13::i;:::-;-1:-1:-1;;;;;24523:20:0;::::1;24515:45;;;;-1:-1:-1::0;;;24515:45:0::1;;;;;;;:::i;:::-;24571:13;:22:::0;;-1:-1:-1;;;;;;24571:22:0::1;-1:-1:-1::0;;;;;24571:22:0;;;::::1;::::0;;;::::1;::::0;;24445:156::o;24123:146::-;9160:13;:11;:13::i;:::-;-1:-1:-1;;;;;24196:20:0;::::1;24188:45;;;;-1:-1:-1::0;;;24188:45:0::1;;;;;;;:::i;:::-;24244:8;:17:::0;;-1:-1:-1;;;;;;24244:17:0::1;-1:-1:-1::0;;;;;24244:17:0;;;::::1;::::0;;;::::1;::::0;;24123:146::o;9439:132::-;9320:7;9347:6;-1:-1:-1;;;;;9347:6:0;8038:10;9503:23;9495:68;;;;-1:-1:-1;;;9495:68:0;;15597:2:1;9495:68:0;;;15579:21:1;;;15616:18;;;15609:30;15675:34;15655:18;;;15648:62;15727:18;;9495:68:0;15395:356:1;6602:335:0;6688:6;6673:11;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;6845:13:0;;;;;;:9;:13;;;;;;;;:23;;;;;;6897:32;1613:25:1;;;-1:-1:-1;;;;;;;;;;;6897:32:0;1586:18:1;6897:32:0;;;;;;;;6602:335;;:::o;31752:191::-;-1:-1:-1;;;;;31836:32:0;;;;;;:25;:32;;;;;;:40;;-1:-1:-1;;31836:40:0;;;;;;;;;;31894:41;;31836:40;;:32;31894:41;;;31752:191;;:::o;22488:117::-;22539:4;22583:5;22564:11;;22578:1;22564:15;;;;:::i;:::-;22563:25;;;;:::i;26913:1124::-;21854:23;:30;;-1:-1:-1;;21854:30:0;21880:4;21854:30;;;27336:4:::1;21854:23:::0;27318:24;;;:9:::1;:24;::::0;;;;;:29:::1;::::0;27345:2:::1;::::0;27318:29:::1;:::i;:::-;27396:4;27358:17;27378:24:::0;;;:9:::1;:24;::::0;;;;;27298:49;;-1:-1:-1;27358:17:0;27378:39:::1;::::0;27298:49;;27378:39:::1;:::i;:::-;27471:16;::::0;;27485:1:::1;27471:16:::0;;;;;::::1;::::0;;27358:59;;-1:-1:-1;27447:21:0::1;::::0;27471:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;27471:16:0::1;27447:40;;27516:4;27498;27503:1;27498:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;27498:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;27542:6:::1;::::0;:13:::1;::::0;;-1:-1:-1;;;27542:13:0;;;;:6;;;::::1;::::0;:11:::1;::::0;:13:::1;::::0;;::::1;::::0;27498:7;;27542:13;;;;;:6;:13:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27532:4;27537:1;27532:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;27532:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;27566:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;27566:188:0;;:6;::::1;::::0;:57:::1;::::0;:188:::1;::::0;27638:12;;27566:6:::1;::::0;27681:4;;27708::::1;::::0;27728:15:::1;::::0;27566:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;27767:6:0::1;::::0;-1:-1:-1;;;;;27767:6:0::1;::::0;-1:-1:-1;27767:22:0::1;::::0;-1:-1:-1;27797:21:0::1;27842:4;27862:12:::0;27767:6:::1;::::0;27921:7:::1;9320::::0;9347:6;-1:-1:-1;;;;;9347:6:0;;9274:87;27921:7:::1;27943:15;27767:202;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;27982:8:0::1;::::0;:47:::1;::::0;-1:-1:-1;;;;;27982:8:0;;::::1;::::0;-1:-1:-1;28003:21:0::1;::::0;27982:47:::1;::::0;;;28003:21;27982:8;:47:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;21907:23:0;:31;;-1:-1:-1;;21907:31:0;;;-1:-1:-1;;;;26913:1124:0:o;26060:773::-;26173:4;9347:6;;-1:-1:-1;;;;;26194:15:0;;;9347:6;;26194:15;;:32;;-1:-1:-1;9320:7:0;9347:6;-1:-1:-1;;;;;26213:13:0;;;9347:6;;26213:13;26194:32;:57;;;-1:-1:-1;;;;;;26230:21:0;;26246:4;26230:21;26194:57;26190:636;;;-1:-1:-1;26411:1:0;26404:8;;26190:636;26450:4;;-1:-1:-1;;;;;26450:4:0;;;26434:21;;;;26430:396;;26553:6;26540:9;;26531:6;:18;;;;:::i;:::-;26530:29;;;;:::i;:::-;26523:36;;;;26430:396;26595:4;;-1:-1:-1;;;;;26595:4:0;;;26581:19;;;;26577:249;;26702:6;26688:10;;26679:6;:19;;;;:::i;26577:249::-;-1:-1:-1;26813:1:0;26806:8;;5897:505;5962:7;6063:143;6245:4;6229:22;;;;;;:::i;:::-;;;;;;;;;;6030:349;;;18741:25:1;;;;18782:18;;18775:34;;;;6274:14:0;18825:18:1;;;18818:34;6311:13:0;18868:18:1;;;18861:34;6355:4:0;18911:19:1;;;18904:61;18713:19;;6030:349:0;;;;;;;;;;;;6002:392;;;;;;5982:412;;5897:505;:::o;6945:338::-;-1:-1:-1;;;;;7018:15:0;;;;;;:9;:15;;;;;:25;;7037:6;;7018:15;:25;;7037:6;;7018:25;:::i;:::-;;;;-1:-1:-1;;7191:11:0;:21;;;;;;;7241:34;;1613:25:1;;;-1:-1:-1;;;;;;;7241:34:0;;;-1:-1:-1;;;;;;;;;;;7241:34:0;1601:2:1;1586:18;7241:34:0;1467:177:1;10578:191:0;10652:16;10671:6;;-1:-1:-1;;;;;10688:17:0;;;-1:-1:-1;;;;;;10688:17:0;;;;;;10721:40;;10671:6;;;;;;;10721:40;;10652:16;10721:40;10641:128;10578:191;:::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1215:247::-;1274:6;1327:2;1315:9;1306:7;1302:23;1298:32;1295:52;;;1343:1;1340;1333:12;1295:52;1382:9;1369:23;1401:31;1426:5;1401:31;:::i;1649:180::-;1708:6;1761:2;1749:9;1740:7;1736:23;1732:32;1729:52;;;1777:1;1774;1767:12;1729:52;-1:-1:-1;1800:23:1;;1649:180;-1:-1:-1;1649:180:1:o;1834:456::-;1911:6;1919;1927;1980:2;1968:9;1959:7;1955:23;1951:32;1948:52;;;1996:1;1993;1986:12;1948:52;2035:9;2022:23;2054:31;2079:5;2054:31;:::i;:::-;2104:5;-1:-1:-1;2161:2:1;2146:18;;2133:32;2174:33;2133:32;2174:33;:::i;:::-;1834:456;;2226:7;;-1:-1:-1;;;2280:2:1;2265:18;;;;2252:32;;1834:456::o;2874:416::-;2939:6;2947;3000:2;2988:9;2979:7;2975:23;2971:32;2968:52;;;3016:1;3013;3006:12;2968:52;3055:9;3042:23;3074:31;3099:5;3074:31;:::i;:::-;3124:5;-1:-1:-1;3181:2:1;3166:18;;3153:32;3223:15;;3216:23;3204:36;;3194:64;;3254:1;3251;3244:12;3194:64;3277:7;3267:17;;;2874:416;;;;;:::o;3758:829::-;3869:6;3877;3885;3893;3901;3909;3917;3970:3;3958:9;3949:7;3945:23;3941:33;3938:53;;;3987:1;3984;3977:12;3938:53;4026:9;4013:23;4045:31;4070:5;4045:31;:::i;:::-;4095:5;-1:-1:-1;4152:2:1;4137:18;;4124:32;4165:33;4124:32;4165:33;:::i;:::-;4217:7;-1:-1:-1;4271:2:1;4256:18;;4243:32;;-1:-1:-1;4322:2:1;4307:18;;4294:32;;-1:-1:-1;4378:3:1;4363:19;;4350:33;4427:4;4414:18;;4402:31;;4392:59;;4447:1;4444;4437:12;4392:59;3758:829;;;;-1:-1:-1;3758:829:1;;;;4470:7;4524:3;4509:19;;4496:33;;-1:-1:-1;4576:3:1;4561:19;;;4548:33;;3758:829;-1:-1:-1;;3758:829:1: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:1;4887:18;;4874:32;4915:33;4874:32;4915:33;:::i;4985:276::-;5043:6;5096:2;5084:9;5075:7;5071:23;5067:32;5064:52;;;5112:1;5109;5102:12;5064:52;5151:9;5138:23;5201:10;5194:5;5190:22;5183:5;5180:33;5170:61;;5227:1;5224;5217:12;5501:380;5580:1;5576:12;;;;5623;;;5644:61;;5698:4;5690:6;5686:17;5676:27;;5644:61;5751:2;5743:6;5740:14;5720:18;5717:38;5714:161;;5797:10;5792:3;5788:20;5785:1;5778:31;5832:4;5829:1;5822:15;5860:4;5857:1;5850:15;5714:161;;5501:380;;;:::o;6231:336::-;6433:2;6415:21;;;6472:2;6452:18;;;6445:30;-1:-1:-1;;;6506:2:1;6491:18;;6484:42;6558:2;6543:18;;6231:336::o;6572:127::-;6633:10;6628:3;6624:20;6621:1;6614:31;6664:4;6661:1;6654:15;6688:4;6685:1;6678:15;6704:168;6777:9;;;6808;;6825:15;;;6819:22;;6805:37;6795:71;;6846:18;;:::i;6877:217::-;6917:1;6943;6933:132;;6987:10;6982:3;6978:20;6975:1;6968:31;7022:4;7019:1;7012:15;7050:4;7047:1;7040:15;6933:132;-1:-1:-1;7079:9:1;;6877:217::o;7099:607::-;-1:-1:-1;;;;;7458:15:1;;;7440:34;;7505:2;7490:18;;7483:34;;;;7548:2;7533:18;;7526:34;;;;7591:2;7576:18;;7569:34;;;;7640:15;;;7634:3;7619:19;;7612:44;7420:3;7672:19;;7665:35;;;;7389:3;7374:19;;7099:607::o;7711:306::-;7799:6;7807;7815;7868:2;7856:9;7847:7;7843:23;7839:32;7836:52;;;7884:1;7881;7874:12;7836:52;7913:9;7907:16;7897:26;;7963:2;7952:9;7948:18;7942:25;7932:35;;8007:2;7996:9;7992:18;7986:25;7976:35;;7711:306;;;;;:::o;8022:251::-;8092:6;8145:2;8133:9;8124:7;8120:23;8116:32;8113:52;;;8161:1;8158;8151:12;8113:52;8193:9;8187:16;8212:31;8237:5;8212:31;:::i;8587:128::-;8654:9;;;8675:11;;;8672:37;;;8689:18;;:::i;9069:422::-;9158:1;9201:5;9158:1;9215:270;9236:7;9226:8;9223:21;9215:270;;;9295:4;9291:1;9287:6;9283:17;9277:4;9274:27;9271:53;;;9304:18;;:::i;:::-;9354:7;9344:8;9340:22;9337:55;;;9374:16;;;;9337:55;9453:22;;;;9413:15;;;;9215:270;;;9219:3;9069:422;;;;;:::o;9496:806::-;9545:5;9575:8;9565:80;;-1:-1:-1;9616:1:1;9630:5;;9565:80;9664:4;9654:76;;-1:-1:-1;9701:1:1;9715:5;;9654:76;9746:4;9764:1;9759:59;;;;9832:1;9827:130;;;;9739:218;;9759:59;9789:1;9780:10;;9803:5;;;9827:130;9864:3;9854:8;9851:17;9848:43;;;9871:18;;:::i;:::-;-1:-1:-1;;9927:1:1;9913:16;;9942:5;;9739:218;;10041:2;10031:8;10028:16;10022:3;10016:4;10013:13;10009:36;10003:2;9993:8;9990:16;9985:2;9979:4;9976:12;9972:35;9969:77;9966:159;;;-1:-1:-1;10078:19:1;;;10110:5;;9966:159;10157:34;10182:8;10176:4;10157:34;:::i;:::-;10227:6;10223:1;10219:6;10215:19;10206:7;10203:32;10200:58;;;10238:18;;:::i;:::-;10276:20;;9496:806;-1:-1:-1;;;9496:806:1:o;10307:140::-;10365:5;10394:47;10435:4;10425:8;10421:19;10415:4;10394:47;:::i;10874:125::-;10939:9;;;10960:10;;;10957:36;;;10973:18;;:::i;15888:127::-;15949:10;15944:3;15940:20;15937:1;15930:31;15980:4;15977:1;15970:15;16004:4;16001:1;15994:15;16020:980;16282:4;16330:3;16319:9;16315:19;16361:6;16350:9;16343:25;16387:2;16425:6;16420:2;16409:9;16405:18;16398:34;16468:3;16463:2;16452:9;16448:18;16441:31;16492:6;16527;16521:13;16558:6;16550;16543:22;16596:3;16585:9;16581:19;16574:26;;16635:2;16627:6;16623:15;16609:29;;16656:1;16666:195;16680:6;16677:1;16674:13;16666:195;;;16745:13;;-1:-1:-1;;;;;16741:39:1;16729:52;;16836:15;;;;16801:12;;;;16777:1;16695:9;16666:195;;;-1:-1:-1;;;;;;;16917:32:1;;;;16912:2;16897:18;;16890:60;-1:-1:-1;;;16981:3:1;16966:19;16959:35;16878:3;16020:980;-1:-1:-1;;;16020:980:1:o;17344:1133::-;17474:3;17503:1;17536:6;17530:13;17566:3;17588:1;17616:9;17612:2;17608:18;17598:28;;17676:2;17665:9;17661:18;17698;17688:61;;17742:4;17734:6;17730:17;17720:27;;17688:61;17768:2;17816;17808:6;17805:14;17785:18;17782:38;17779:165;;-1:-1:-1;;;17843:33:1;;17899:4;17896:1;17889:15;17929:4;17850:3;17917:17;17779:165;17960:18;17987:133;;;;18134:1;18129:323;;;;17953:499;;17987:133;-1:-1:-1;;18020:24:1;;18008:37;;18093:14;;18086:22;18074:35;;18065:45;;;-1:-1:-1;17987:133:1;;18129:323;17291:1;17284:14;;;17328:4;17315:18;;18227:1;18241:165;18255:6;18252:1;18249:13;18241:165;;;18333:14;;18320:11;;;18313:35;18376:16;;;;18270:10;;18241:165;;;18245:3;;18435:6;18430:3;18426:16;18419:23;;17953:499;-1:-1:-1;18468:3:1;;17344:1133;-1:-1:-1;;;;;;;;17344:1133:1:o
Swarm Source
ipfs://362ecaca5e087927a996ef7bd4049083a4ea580007ba440c7a9cb69936ac9b3e
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.