ERC-20
Overview
Max Total Supply
1,000,000 ZKIN
Holders
526
Market
Price
$0.02 @ 0.000009 ETH (+0.76%)
Onchain Market Cap
$23,996.71
Circulating Supply Market Cap
$0.00
Other Info
Token Contract (WITH 18 Decimals)
Balance
361.094785731207827239 ZKINValue
$8.67 ( ~0.00323142880861551 Eth) [0.0361%]Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
zkInfra
Compiler Version
v0.8.24+commit.e11b9ed9
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-03-25 */ // SPDX-License-Identifier: MIT /* Website: https://zkinfra.io/ Telegram: https://t.me/zkinfra_portal Twitter: https://x.com/zkInfra_io Medium : https://medium.com/@zkInfra Linktree: https://linktr.ee/zkinfra */ pragma solidity ^0.8.24; abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return payable(msg.sender); } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval( address indexed owner, address indexed spender, uint256 value ); } interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; uint8 private _decimals; constructor( string memory name_, string memory symbol_, uint8 decimals_ ) { _name = name_; _symbol = symbol_; _decimals = decimals_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return _decimals; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require( currentAllowance >= amount, "ERC20: transfer amount exceeds allowance" ); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve( _msgSender(), spender, _allowances[_msgSender()][spender] + addedValue ); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require( currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero" ); unchecked { _approve(_msgSender(), spender, currentAllowance - subtractedValue); } return true; } function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); uint256 senderBalance = _balances[sender]; require( senderBalance >= amount, "ERC20: transfer amount exceeds balance" ); unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); _afterTokenTransfer(sender, recipient, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; } _totalSupply -= amount; emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } library Address { function isContract(address account) internal view returns (bool) { // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } function sendValue(address payable recipient, uint256 amount) internal { require( address(this).balance >= amount, "Address: insufficient balance" ); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{value: amount}(""); require( success, "Address: unable to send value, recipient may have reverted" ); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return _functionCallWithValue(target, data, 0, errorMessage); } function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue( target, data, value, "Address: low-level call with value failed" ); } function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require( address(this).balance >= value, "Address: insufficient balance for call" ); return _functionCallWithValue(target, data, value, errorMessage); } function _functionCallWithValue( address target, bytes memory data, uint256 weiValue, string memory errorMessage ) private returns (bytes memory) { require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: weiValue}( data ); if (success) { return returndata; } else { if (returndata.length > 0) { assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } contract Ownable is Context { address private _owner; address private _previousOwner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); constructor() { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function waiveOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require( newOwner != address(0), "Ownable: new owner is the zero address" ); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } interface IUniswapV2Factory { event PairCreated( address indexed token0, address indexed token1, address pair, uint256 ); 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(uint256) external view returns (address pair); function allPairsLength() external view returns (uint256); 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, uint256 value ); event Transfer(address indexed from, address indexed to, uint256 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 (uint256); function balanceOf(address owner) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 value) external returns (bool); function transfer(address to, uint256 value) external returns (bool); function transferFrom( address from, address to, uint256 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 (uint256); function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; event Burn( address indexed sender, uint256 amount0, uint256 amount1, address indexed to ); event Swap( address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint256); 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 (uint256); function price1CumulativeLast() external view returns (uint256); function kLast() external view returns (uint256); function burn(address to) external returns (uint256 amount0, uint256 amount1); function swap( uint256 amount0Out, uint256 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, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns ( uint256 amountA, uint256 amountB, uint256 liquidity ); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function removeLiquidity( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETH( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountToken, uint256 amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETHWithPermit( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountToken, uint256 amountETH); function swapExactTokensForTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapTokensForExactTokens( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapExactETHForTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); function swapTokensForExactETH( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapExactTokensForETH( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapETHForExactTokens( uint256 amountOut, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); function quote( uint256 amountA, uint256 reserveA, uint256 reserveB ) external pure returns (uint256 amountB); function getAmountOut( uint256 amountIn, uint256 reserveIn, uint256 reserveOut ) external pure returns (uint256 amountOut); function getAmountIn( uint256 amountOut, uint256 reserveIn, uint256 reserveOut ) external pure returns (uint256 amountIn); function getAmountsOut(uint256 amountIn, address[] calldata path) external view returns (uint256[] memory amounts); function getAmountsIn(uint256 amountOut, address[] calldata path) external view returns (uint256[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } contract zkInfra is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; address public router = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; bool private swapping; uint256 public buyFees; uint256 public sellFees; uint256 private _maxSwapableTokens; uint256 public _preventSwapBefore = 20; uint256 public _removeLimitsAt = 30; uint256 public _totalBuys = 0; mapping(address => bool) private _isExcludedFromFees; mapping(address => bool) public _isExcludedmaxTransaction; mapping(address => bool) public automatedMarketMakerPairs; address private developmentWallet; address private marketingWallet; uint256 public maxTransaction; uint256 public swapTokensAtAmount; uint256 public maxWallet; bool public limitsInEffect = true; bool public tradingActive = false; bool public swapEnabled = false; mapping(address => uint256) private _holderLastTransferBlock; bool public transDelayActived = true; uint256 public launchBlockNo; event ExcludeFromFees(address indexed account, bool isExcluded); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event DevelopmentWalletUpdated( address indexed newWallet, address indexed oldWallet ); event TreasuryWalletUpdated( address indexed newWallet, address indexed oldWallet ); event MarketingWalletUpdated( address indexed newWallet, address indexed oldWallet ); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); event UpdateUniswapV2Router( address indexed newAddress, address indexed oldAddress ); constructor() ERC20("zkInfra", "ZKIN", 18) { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(router); excludeFromMaxTransaction(address(_uniswapV2Router), true); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); excludeFromMaxTransaction(address(uniswapV2Pair), true); _setAutomatedMarketMakerPair(address(uniswapV2Pair), true); uint256 totalSupply = 1_000_000 * (10**18); maxTransaction = (totalSupply * 100) / 10_000; // 1% maxWallet = (totalSupply * 100) / 10_000; // 1% swapTokensAtAmount = (totalSupply * 50) / 10_000; // 0.5% _maxSwapableTokens = (totalSupply * 100) / 10_000; // 1% buyFees = 3_000; sellFees = 4_000; developmentWallet = 0xfFC213Dd045773Ee27000D6B127c0B2524A0e5F7; marketingWallet = 0x82217b9FAb59A11FB2185d7F6938c4e804e90b95; excludeFromFees(owner(), true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); excludeFromMaxTransaction(owner(), true); excludeFromMaxTransaction(address(this), true); excludeFromMaxTransaction(address(0xdead), true); _mint(msg.sender, totalSupply); } receive() external payable {} function launch() external onlyOwner { require(!tradingActive, "Token launched"); tradingActive = true; launchBlockNo = block.number; swapEnabled = true; } function limitsOff() external onlyOwner returns (bool) { limitsInEffect = false; return true; } // disable Transfer delay - cannot be reenabled function disableTransferDelay() external onlyOwner returns (bool) { transDelayActived = false; return true; } function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner { _isExcludedmaxTransaction[updAds] = isEx; } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner { require( pair != uniswapV2Pair, "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 updateMarketingWallet(address newWallet) external onlyOwner { emit MarketingWalletUpdated(newWallet, marketingWallet); marketingWallet = newWallet; } function updateDevelopmentWallet(address newWallet) external onlyOwner { emit DevelopmentWalletUpdated(newWallet, developmentWallet); developmentWallet = newWallet; } function isExcludedFromFees(address account) public view returns (bool) { return _isExcludedFromFees[account]; } function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); if (amount == 0) { super._transfer(from, to, 0); return; } if (limitsInEffect) { if ( from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping ) { if (!tradingActive) { require( _isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active." ); } if (transDelayActived) { if ( to != owner() && to != address(uniswapV2Router) && to != address(uniswapV2Pair) ) { require( _holderLastTransferBlock[tx.origin] < block.number, "_transfer:: Transfer Delay enabled. Only one purchase per block allowed." ); _holderLastTransferBlock[tx.origin] = block.number; } } // BUY if ( automatedMarketMakerPairs[from] && !_isExcludedmaxTransaction[to] ) { require( amount <= maxTransaction, "Buy transfer amount exceeds the maxTransaction." ); require( amount + balanceOf(to) <= maxWallet, "Max wallet exceeded" ); } // SELL else if ( automatedMarketMakerPairs[to] && !_isExcludedmaxTransaction[from] ) { require( amount <= maxTransaction, "Sell transfer amount exceeds the maxTransaction." ); } else if (!_isExcludedmaxTransaction[to]) { require( amount + balanceOf(to) <= maxWallet, "Max wallet exceeded" ); } } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if ( canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] && _totalBuys > _preventSwapBefore ) { swapping = true; swapBack(min(contractTokenBalance, _maxSwapableTokens)); swapping = false; } bool takeFee = !swapping; if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } uint256 fees = 0; if (takeFee) { // SELL if (automatedMarketMakerPairs[to] && sellFees > 0) { fees = amount.mul(sellFees).div(10_000); } // BUY else if (automatedMarketMakerPairs[from] && buyFees > 0) { fees = amount.mul(buyFees).div(10_000); _totalBuys++; } if (fees > 0) { super._transfer(from, address(this), fees); } amount -= fees; } super._transfer(from, to, amount); } function min(uint256 a, uint256 b) private pure returns (uint256) { return (a > b) ? b : a; } function swapTokensForEth(uint256 tokenAmount) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function swapBack(uint256 amount) private { bool success; if (amount == 0) { return; } uint256 amountToSwapForETH = amount; swapTokensForEth(amountToSwapForETH); uint256 ethBalance = address(this).balance; // Calculate allocations uint256 mkt_amount = ethBalance / 2; uint256 development_amount = ethBalance - mkt_amount; (success, ) = address(marketingWallet).call{value: mkt_amount}(""); (success, ) = address(developmentWallet).call{ value: development_amount }(""); } function changeSwapTokensAtAmount(uint256 newValue) external onlyOwner returns (bool) { require( newValue >= (totalSupply() * 1) / 100_000, "Swap amount < 0.001% total supply." ); require( newValue <= (totalSupply() * 100) / 10_000, "Swap amount > 1% total supply." ); swapTokensAtAmount = newValue; return true; } function changeMaxTransaction(uint256 newValue) external onlyOwner { require( newValue >= ((totalSupply() * 10) / 10_000), "maxTransaction < 0.1%" ); maxTransaction = newValue * (10**decimals()); } function changeMaxWallet(uint256 newValue) external onlyOwner { require( newValue >= ((totalSupply() * 50) / 10_000), "maxWallet < 0.5%" ); maxWallet = newValue * (10**decimals()); } // only use to disable contract sales if absolutely necessary (emergency use only) function updateSwapEnabled(bool _isEnable) external onlyOwner { swapEnabled = _isEnable; } function updateBuyFee(uint256 _newFee) external onlyOwner { require(buyFees <= 5_000); buyFees = _newFee; } function updateSellFee(uint256 _newFee) external onlyOwner { require(sellFees <= 5_000); sellFees = _newFee; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"DevelopmentWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"MarketingWalletUpdated","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":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"TreasuryWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedmaxTransaction","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_preventSwapBefore","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_removeLimitsAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalBuys","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"changeMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"changeMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"changeSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"launchBlockNo","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsOff","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTransaction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellFees","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":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"transDelayActived","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newFee","type":"uint256"}],"name":"updateBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevelopmentWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newFee","type":"uint256"}],"name":"updateSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_isEnable","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"waiveOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c0604052600780546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d1790556014600b55601e600c556000600d556016805462ffffff191660019081179091556018805460ff191690911790553480156200006557600080fd5b50604051806040016040528060078152602001667a6b496e66726160c81b815250604051806040016040528060048152602001632d25a4a760e11b81525060128260039081620000b691906200075d565b506004620000c583826200075d565b506005805460ff191660ff929092169190911790555060009050620000e73390565b60058054610100600160a81b0319166101006001600160a01b03841690810291909117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506007546001600160a01b03166200015681600162000449565b6001600160a01b03811660808190526040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015620001a1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001c7919062000829565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000215573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200023b919062000829565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000289573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002af919062000829565b6001600160a01b031660a0819052620002ca90600162000449565b60a051620002da906001620004c9565b69d3c21bcecceda1000000612710620002f582606462000871565b62000301919062000891565b6013556127106200031482606462000871565b62000320919062000891565b6015556127106200033382603262000871565b6200033f919062000891565b6014556127106200035282606462000871565b6200035e919062000891565b600a55610bb8600855610fa0600955601180546001600160a01b031990811673ffc213dd045773ee27000d6b127c0b2524a0e5f717909155601280549091167382217b9fab59a11fb2185d7f6938c4e804e90b95179055620003d9620003d160055461010090046001600160a01b031690565b60016200051d565b620003e63060016200051d565b620003f561dead60016200051d565b620004196200041160055461010090046001600160a01b031690565b600162000449565b6200042630600162000449565b6200043561dead600162000449565b620004413382620005cd565b5050620008ca565b6005546001600160a01b036101009091041633146200049e5760405162461bcd60e51b8152602060048201819052602482015260008051602062002fee83398151915260448201526064015b60405180910390fd5b6001600160a01b03919091166000908152600f60205260409020805460ff1916911515919091179055565b6001600160a01b038216600081815260106020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6005546001600160a01b036101009091041633146200056e5760405162461bcd60e51b8152602060048201819052602482015260008051602062002fee833981519152604482015260640162000495565b6001600160a01b0382166000818152600e6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620006255760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162000495565b8060026000828254620006399190620008b4565b90915550506001600160a01b0382166000908152602081905260408120805483929062000668908490620008b4565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620006e257607f821691505b6020821081036200070357634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620006b2576000816000526020600020601f850160051c81016020861015620007345750805b601f850160051c820191505b81811015620007555782815560010162000740565b505050505050565b81516001600160401b03811115620007795762000779620006b7565b62000791816200078a8454620006cd565b8462000709565b602080601f831160018114620007c95760008415620007b05750858301515b600019600386901b1c1916600185901b17855562000755565b600085815260208120601f198616915b82811015620007fa57888601518255948401946001909101908401620007d9565b5085821015620008195787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156200083c57600080fd5b81516001600160a01b03811681146200085457600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176200088b576200088b6200085b565b92915050565b600082620008af57634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156200088b576200088b6200085b565b60805160a0516126d46200091a6000396000818161047e01528181610ef001526116f601526000818161035c015281816116b80152818161203d015281816120f6015261213201526126d46000f3fe60806040526004361061028c5760003560e01c8063914eb66a1161015a578063cd73ab02116100c1578063e4748b9e1161007a578063e4748b9e1461080f578063e884f26014610825578063f023f5731461083a578063f2fde38b1461085a578063f887ea401461087a578063f8b45b051461089a57600080fd5b8063cd73ab0214610733578063d14df23914610753578063dd62ed3e1461076d578063e0f3ccf5146107b3578063e1bc3394146107c9578063e2f45605146107f957600080fd5b8063aacebbe311610113578063aacebbe314610678578063b62496f514610698578063bbc0c742146106c8578063c0246668146106e7578063c3f70b5214610707578063c81d92461461071d57600080fd5b8063914eb66a146105ce578063924de9b7146105e357806395d89b41146106035780639a7a23d614610618578063a457c2d714610638578063a9059cbb1461065857600080fd5b806339509351116101fe57806368018226116101b757806368018226146105095780636ddd17131461051f57806370a082311461053f57806373a94292146105755780637571336a1461058b5780638da5cb5b146105ab57600080fd5b8063395093511461042c578063467abe0a1461044c57806349bd5a5e1461046c5780634a62bb65146104a05780634fbee193146104ba57806363ee4d1c146104f357600080fd5b80631694505e116102505780631694505e1461034a57806318160ddd146103965780631d933a4a146103b5578063232050f9146103d557806323b872dd146103ea578063313ce5671461040a57600080fd5b806301339c211461029857806306fdde03146102af578063095ea7b3146102da57806309d6bf0a1461030a5780630b006d601461032a57600080fd5b3661029357005b600080fd5b3480156102a457600080fd5b506102ad6108b0565b005b3480156102bb57600080fd5b506102c4610949565b6040516102d191906121dd565b60405180910390f35b3480156102e657600080fd5b506102fa6102f5366004612244565b6109db565b60405190151581526020016102d1565b34801561031657600080fd5b506102fa610325366004612270565b6109f2565b34801561033657600080fd5b506102ad610345366004612270565b610b1f565b34801561035657600080fd5b5061037e7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016102d1565b3480156103a257600080fd5b506002545b6040519081526020016102d1565b3480156103c157600080fd5b506102ad6103d0366004612270565b610bd3565b3480156103e157600080fd5b506102fa610c19565b3480156103f657600080fd5b506102fa610405366004612289565b610c5c565b34801561041657600080fd5b5060055460405160ff90911681526020016102d1565b34801561043857600080fd5b506102fa610447366004612244565b610d06565b34801561045857600080fd5b506102ad610467366004612270565b610d42565b34801561047857600080fd5b5061037e7f000000000000000000000000000000000000000000000000000000000000000081565b3480156104ac57600080fd5b506016546102fa9060ff1681565b3480156104c657600080fd5b506102fa6104d53660046122ca565b6001600160a01b03166000908152600e602052604090205460ff1690565b3480156104ff57600080fd5b506103a760195481565b34801561051557600080fd5b506103a7600c5481565b34801561052b57600080fd5b506016546102fa9062010000900460ff1681565b34801561054b57600080fd5b506103a761055a3660046122ca565b6001600160a01b031660009081526020819052604090205490565b34801561058157600080fd5b506103a7600d5481565b34801561059757600080fd5b506102ad6105a63660046122f7565b610d88565b3480156105b757600080fd5b5060055461010090046001600160a01b031661037e565b3480156105da57600080fd5b506102ad610de3565b3480156105ef57600080fd5b506102ad6105fe36600461232c565b610e63565b34801561060f57600080fd5b506102c4610eaf565b34801561062457600080fd5b506102ad6106333660046122f7565b610ebe565b34801561064457600080fd5b506102fa610653366004612244565b610fa3565b34801561066457600080fd5b506102fa610673366004612244565b61103c565b34801561068457600080fd5b506102ad6106933660046122ca565b611049565b3480156106a457600080fd5b506102fa6106b33660046122ca565b60106020526000908152604090205460ff1681565b3480156106d457600080fd5b506016546102fa90610100900460ff1681565b3480156106f357600080fd5b506102ad6107023660046122f7565b6110d6565b34801561071357600080fd5b506103a760135481565b34801561072957600080fd5b506103a7600b5481565b34801561073f57600080fd5b506102ad61074e366004612270565b611165565b34801561075f57600080fd5b506018546102fa9060ff1681565b34801561077957600080fd5b506103a7610788366004612347565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156107bf57600080fd5b506103a760095481565b3480156107d557600080fd5b506102fa6107e43660046122ca565b600f6020526000908152604090205460ff1681565b34801561080557600080fd5b506103a760145481565b34801561081b57600080fd5b506103a760085481565b34801561083157600080fd5b506102fa61121e565b34801561084657600080fd5b506102ad6108553660046122ca565b611261565b34801561086657600080fd5b506102ad6108753660046122ca565b6112ee565b34801561088657600080fd5b5060075461037e906001600160a01b031681565b3480156108a657600080fd5b506103a760155481565b6005546001600160a01b036101009091041633146108e95760405162461bcd60e51b81526004016108e090612380565b60405180910390fd5b601654610100900460ff16156109325760405162461bcd60e51b815260206004820152600e60248201526d151bdad95b881b185d5b98da195960921b60448201526064016108e0565b601680544360195562ffff00191662010100179055565b606060038054610958906123b5565b80601f0160208091040260200160405190810160405280929190818152602001828054610984906123b5565b80156109d15780601f106109a6576101008083540402835291602001916109d1565b820191906000526020600020905b8154815290600101906020018083116109b457829003601f168201915b5050505050905090565b60006109e83384846113ea565b5060015b92915050565b6005546000906001600160a01b03610100909104163314610a255760405162461bcd60e51b81526004016108e090612380565b620186a0610a3260025490565b610a3d906001612405565b610a47919061241c565b821015610aa15760405162461bcd60e51b815260206004820152602260248201527f5377617020616d6f756e74203c20302e3030312520746f74616c20737570706c6044820152613c9760f11b60648201526084016108e0565b612710610aad60025490565b610ab8906064612405565b610ac2919061241c565b821115610b115760405162461bcd60e51b815260206004820152601e60248201527f5377617020616d6f756e74203e20312520746f74616c20737570706c792e000060448201526064016108e0565b50601481905560015b919050565b6005546001600160a01b03610100909104163314610b4f5760405162461bcd60e51b81526004016108e090612380565b612710610b5b60025490565b610b66906032612405565b610b70919061241c565b811015610bb25760405162461bcd60e51b815260206004820152601060248201526f6d617857616c6c6574203c20302e352560801b60448201526064016108e0565b60055460ff16610bc390600a612522565b610bcd9082612405565b60155550565b6005546001600160a01b03610100909104163314610c035760405162461bcd60e51b81526004016108e090612380565b6113886009541115610c1457600080fd5b600955565b6005546000906001600160a01b03610100909104163314610c4c5760405162461bcd60e51b81526004016108e090612380565b506016805460ff19169055600190565b6000610c6984848461150e565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610cee5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016108e0565b610cfb85338584036113ea565b506001949350505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916109e8918590610d3d908690612531565b6113ea565b6005546001600160a01b03610100909104163314610d725760405162461bcd60e51b81526004016108e090612380565b6113886008541115610d8357600080fd5b600855565b6005546001600160a01b03610100909104163314610db85760405162461bcd60e51b81526004016108e090612380565b6001600160a01b03919091166000908152600f60205260409020805460ff1916911515919091179055565b6005546001600160a01b03610100909104163314610e135760405162461bcd60e51b81526004016108e090612380565b60055460405160009161010090046001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a360058054610100600160a81b0319169055565b6005546001600160a01b03610100909104163314610e935760405162461bcd60e51b81526004016108e090612380565b60168054911515620100000262ff000019909216919091179055565b606060048054610958906123b5565b6005546001600160a01b03610100909104163314610eee5760405162461bcd60e51b81526004016108e090612380565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031603610f955760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b657250616972730000000000000060648201526084016108e0565b610f9f8282611c7a565b5050565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156110255760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016108e0565b61103233858584036113ea565b5060019392505050565b60006109e833848461150e565b6005546001600160a01b036101009091041633146110795760405162461bcd60e51b81526004016108e090612380565b6012546040516001600160a01b03918216918316907f8616c7a330e3cf61290821331585511f1e2778171e2b005fb5ec60cfe874dc6790600090a3601280546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b036101009091041633146111065760405162461bcd60e51b81526004016108e090612380565b6001600160a01b0382166000818152600e6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b036101009091041633146111955760405162461bcd60e51b81526004016108e090612380565b6127106111a160025490565b6111ac90600a612405565b6111b6919061241c565b8110156111fd5760405162461bcd60e51b81526020600482015260156024820152746d61785472616e73616374696f6e203c20302e312560581b60448201526064016108e0565b60055460ff1661120e90600a612522565b6112189082612405565b60135550565b6005546000906001600160a01b036101009091041633146112515760405162461bcd60e51b81526004016108e090612380565b506018805460ff19169055600190565b6005546001600160a01b036101009091041633146112915760405162461bcd60e51b81526004016108e090612380565b6011546040516001600160a01b03918216918316907f94cc1498503be9a145caf3e96f856665f29cf9b26c7179a93fbe1c1e5f56a0fd90600090a3601180546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b0361010090910416331461131e5760405162461bcd60e51b81526004016108e090612380565b6001600160a01b0381166113835760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108e0565b6005546040516001600160a01b0380841692610100900416907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6001600160a01b03831661144c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108e0565b6001600160a01b0382166114ad5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108e0565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166115345760405162461bcd60e51b81526004016108e090612544565b6001600160a01b03821661155a5760405162461bcd60e51b81526004016108e090612589565b806000036115735761156e83836000611cce565b505050565b60165460ff1615611a33576005546001600160a01b0384811661010090920416148015906115b457506005546001600160a01b038381166101009092041614155b80156115c857506001600160a01b03821615155b80156115df57506001600160a01b03821661dead14155b80156115f55750600754600160a01b900460ff16155b15611a3357601654610100900460ff1661168d576001600160a01b0383166000908152600e602052604090205460ff168061164857506001600160a01b0382166000908152600e602052604090205460ff165b61168d5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b60448201526064016108e0565b60185460ff16156117d9576005546001600160a01b0383811661010090920416148015906116ed57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b801561172b57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b156117d9573260009081526017602052604090205443116117c65760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a4016108e0565b3260009081526017602052604090204390555b6001600160a01b03831660009081526010602052604090205460ff16801561181a57506001600160a01b0382166000908152600f602052604090205460ff16155b156118f8576013548111156118895760405162461bcd60e51b815260206004820152602f60248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526e36b0bc2a3930b739b0b1ba34b7b71760891b60648201526084016108e0565b6015546001600160a01b0383166000908152602081905260409020546118af9083612531565b11156118f35760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016108e0565b611a33565b6001600160a01b03821660009081526010602052604090205460ff16801561193957506001600160a01b0383166000908152600f602052604090205460ff16155b156119a9576013548111156118f35760405162461bcd60e51b815260206004820152603060248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201526f1036b0bc2a3930b739b0b1ba34b7b71760811b60648201526084016108e0565b6001600160a01b0382166000908152600f602052604090205460ff16611a33576015546001600160a01b0383166000908152602081905260409020546119ef9083612531565b1115611a335760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016108e0565b3060009081526020819052604090205460145481108015908190611a5f575060165462010000900460ff165b8015611a755750600754600160a01b900460ff16155b8015611a9a57506001600160a01b03851660009081526010602052604090205460ff16155b8015611abf57506001600160a01b0385166000908152600e602052604090205460ff16155b8015611ae457506001600160a01b0384166000908152600e602052604090205460ff16155b8015611af35750600b54600d54115b15611b30576007805460ff60a01b1916600160a01b179055600a54611b2290611b1d908490611e23565b611e3b565b6007805460ff60a01b191690555b6007546001600160a01b0386166000908152600e602052604090205460ff600160a01b909204821615911680611b7e57506001600160a01b0385166000908152600e602052604090205460ff165b15611b87575060005b60008115611c66576001600160a01b03861660009081526010602052604090205460ff168015611bb957506000600954115b15611be657611bdf612710611bd960095488611f2290919063ffffffff16565b90611fa4565b9050611c48565b6001600160a01b03871660009081526010602052604090205460ff168015611c1057506000600854115b15611c4857611c30612710611bd960085488611f2290919063ffffffff16565b600d80549192506000611c42836125cc565b91905055505b8015611c5957611c59873083611cce565b611c6381866125e5565b94505b611c71878787611cce565b50505050505050565b6001600160a01b038216600081815260106020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b038316611cf45760405162461bcd60e51b81526004016108e090612544565b6001600160a01b038216611d1a5760405162461bcd60e51b81526004016108e090612589565b6001600160a01b03831660009081526020819052604090205481811015611d925760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016108e0565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611dc9908490612531565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611e1591815260200190565b60405180910390a350505050565b6000818311611e325782611e34565b815b9392505050565b600081600003611e49575050565b81611e5381611fe6565b476000611e6160028361241c565b90506000611e6f82846125e5565b6012546040519192506001600160a01b0316908390600081818185875af1925050503d8060008114611ebd576040519150601f19603f3d011682016040523d82523d6000602084013e611ec2565b606091505b50506011546040519196506001600160a01b0316908290600081818185875af1925050503d8060008114611f12576040519150601f19603f3d011682016040523d82523d6000602084013e611f17565b606091505b505050505050505050565b600082600003611f34575060006109ec565b6000611f408385612405565b905082611f4d858361241c565b14611e345760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016108e0565b6000611e3483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506121a6565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061201b5761201b6125f8565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612099573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120bd919061260e565b816001815181106120d0576120d06125f8565b60200260200101906001600160a01b031690816001600160a01b03168152505061211b307f0000000000000000000000000000000000000000000000000000000000000000846113ea565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac9479061217090859060009086903090429060040161262b565b600060405180830381600087803b15801561218a57600080fd5b505af115801561219e573d6000803e3d6000fd5b505050505050565b600081836121c75760405162461bcd60e51b81526004016108e091906121dd565b5060006121d4848661241c565b95945050505050565b60006020808352835180602085015260005b8181101561220b578581018301518582016040015282016121ef565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461224157600080fd5b50565b6000806040838503121561225757600080fd5b82356122628161222c565b946020939093013593505050565b60006020828403121561228257600080fd5b5035919050565b60008060006060848603121561229e57600080fd5b83356122a98161222c565b925060208401356122b98161222c565b929592945050506040919091013590565b6000602082840312156122dc57600080fd5b8135611e348161222c565b80358015158114610b1a57600080fd5b6000806040838503121561230a57600080fd5b82356123158161222c565b9150612323602084016122e7565b90509250929050565b60006020828403121561233e57600080fd5b611e34826122e7565b6000806040838503121561235a57600080fd5b82356123658161222c565b915060208301356123758161222c565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c908216806123c957607f821691505b6020821081036123e957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176109ec576109ec6123ef565b60008261243957634e487b7160e01b600052601260045260246000fd5b500490565b600181815b8085111561247957816000190482111561245f5761245f6123ef565b8085161561246c57918102915b93841c9390800290612443565b509250929050565b600082612490575060016109ec565b8161249d575060006109ec565b81600181146124b357600281146124bd576124d9565b60019150506109ec565b60ff8411156124ce576124ce6123ef565b50506001821b6109ec565b5060208310610133831016604e8410600b84101617156124fc575081810a6109ec565b612506838361243e565b806000190482111561251a5761251a6123ef565b029392505050565b6000611e3460ff841683612481565b808201808211156109ec576109ec6123ef565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6000600182016125de576125de6123ef565b5060010190565b818103818111156109ec576109ec6123ef565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561262057600080fd5b8151611e348161222c565b600060a08201878352602087602085015260a0604085015281875180845260c08601915060208901935060005b8181101561267d5784516001600160a01b031683529383019391830191600101612658565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212206c8816ba3f4e5367d90c6c2a8cfb9511a4c2719d9b57f433ec7640762147f44d64736f6c634300081800334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572
Deployed Bytecode
0x60806040526004361061028c5760003560e01c8063914eb66a1161015a578063cd73ab02116100c1578063e4748b9e1161007a578063e4748b9e1461080f578063e884f26014610825578063f023f5731461083a578063f2fde38b1461085a578063f887ea401461087a578063f8b45b051461089a57600080fd5b8063cd73ab0214610733578063d14df23914610753578063dd62ed3e1461076d578063e0f3ccf5146107b3578063e1bc3394146107c9578063e2f45605146107f957600080fd5b8063aacebbe311610113578063aacebbe314610678578063b62496f514610698578063bbc0c742146106c8578063c0246668146106e7578063c3f70b5214610707578063c81d92461461071d57600080fd5b8063914eb66a146105ce578063924de9b7146105e357806395d89b41146106035780639a7a23d614610618578063a457c2d714610638578063a9059cbb1461065857600080fd5b806339509351116101fe57806368018226116101b757806368018226146105095780636ddd17131461051f57806370a082311461053f57806373a94292146105755780637571336a1461058b5780638da5cb5b146105ab57600080fd5b8063395093511461042c578063467abe0a1461044c57806349bd5a5e1461046c5780634a62bb65146104a05780634fbee193146104ba57806363ee4d1c146104f357600080fd5b80631694505e116102505780631694505e1461034a57806318160ddd146103965780631d933a4a146103b5578063232050f9146103d557806323b872dd146103ea578063313ce5671461040a57600080fd5b806301339c211461029857806306fdde03146102af578063095ea7b3146102da57806309d6bf0a1461030a5780630b006d601461032a57600080fd5b3661029357005b600080fd5b3480156102a457600080fd5b506102ad6108b0565b005b3480156102bb57600080fd5b506102c4610949565b6040516102d191906121dd565b60405180910390f35b3480156102e657600080fd5b506102fa6102f5366004612244565b6109db565b60405190151581526020016102d1565b34801561031657600080fd5b506102fa610325366004612270565b6109f2565b34801561033657600080fd5b506102ad610345366004612270565b610b1f565b34801561035657600080fd5b5061037e7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b0390911681526020016102d1565b3480156103a257600080fd5b506002545b6040519081526020016102d1565b3480156103c157600080fd5b506102ad6103d0366004612270565b610bd3565b3480156103e157600080fd5b506102fa610c19565b3480156103f657600080fd5b506102fa610405366004612289565b610c5c565b34801561041657600080fd5b5060055460405160ff90911681526020016102d1565b34801561043857600080fd5b506102fa610447366004612244565b610d06565b34801561045857600080fd5b506102ad610467366004612270565b610d42565b34801561047857600080fd5b5061037e7f000000000000000000000000e69a25ecd29ab877ce5a0ed6336d12bad3fe931d81565b3480156104ac57600080fd5b506016546102fa9060ff1681565b3480156104c657600080fd5b506102fa6104d53660046122ca565b6001600160a01b03166000908152600e602052604090205460ff1690565b3480156104ff57600080fd5b506103a760195481565b34801561051557600080fd5b506103a7600c5481565b34801561052b57600080fd5b506016546102fa9062010000900460ff1681565b34801561054b57600080fd5b506103a761055a3660046122ca565b6001600160a01b031660009081526020819052604090205490565b34801561058157600080fd5b506103a7600d5481565b34801561059757600080fd5b506102ad6105a63660046122f7565b610d88565b3480156105b757600080fd5b5060055461010090046001600160a01b031661037e565b3480156105da57600080fd5b506102ad610de3565b3480156105ef57600080fd5b506102ad6105fe36600461232c565b610e63565b34801561060f57600080fd5b506102c4610eaf565b34801561062457600080fd5b506102ad6106333660046122f7565b610ebe565b34801561064457600080fd5b506102fa610653366004612244565b610fa3565b34801561066457600080fd5b506102fa610673366004612244565b61103c565b34801561068457600080fd5b506102ad6106933660046122ca565b611049565b3480156106a457600080fd5b506102fa6106b33660046122ca565b60106020526000908152604090205460ff1681565b3480156106d457600080fd5b506016546102fa90610100900460ff1681565b3480156106f357600080fd5b506102ad6107023660046122f7565b6110d6565b34801561071357600080fd5b506103a760135481565b34801561072957600080fd5b506103a7600b5481565b34801561073f57600080fd5b506102ad61074e366004612270565b611165565b34801561075f57600080fd5b506018546102fa9060ff1681565b34801561077957600080fd5b506103a7610788366004612347565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156107bf57600080fd5b506103a760095481565b3480156107d557600080fd5b506102fa6107e43660046122ca565b600f6020526000908152604090205460ff1681565b34801561080557600080fd5b506103a760145481565b34801561081b57600080fd5b506103a760085481565b34801561083157600080fd5b506102fa61121e565b34801561084657600080fd5b506102ad6108553660046122ca565b611261565b34801561086657600080fd5b506102ad6108753660046122ca565b6112ee565b34801561088657600080fd5b5060075461037e906001600160a01b031681565b3480156108a657600080fd5b506103a760155481565b6005546001600160a01b036101009091041633146108e95760405162461bcd60e51b81526004016108e090612380565b60405180910390fd5b601654610100900460ff16156109325760405162461bcd60e51b815260206004820152600e60248201526d151bdad95b881b185d5b98da195960921b60448201526064016108e0565b601680544360195562ffff00191662010100179055565b606060038054610958906123b5565b80601f0160208091040260200160405190810160405280929190818152602001828054610984906123b5565b80156109d15780601f106109a6576101008083540402835291602001916109d1565b820191906000526020600020905b8154815290600101906020018083116109b457829003601f168201915b5050505050905090565b60006109e83384846113ea565b5060015b92915050565b6005546000906001600160a01b03610100909104163314610a255760405162461bcd60e51b81526004016108e090612380565b620186a0610a3260025490565b610a3d906001612405565b610a47919061241c565b821015610aa15760405162461bcd60e51b815260206004820152602260248201527f5377617020616d6f756e74203c20302e3030312520746f74616c20737570706c6044820152613c9760f11b60648201526084016108e0565b612710610aad60025490565b610ab8906064612405565b610ac2919061241c565b821115610b115760405162461bcd60e51b815260206004820152601e60248201527f5377617020616d6f756e74203e20312520746f74616c20737570706c792e000060448201526064016108e0565b50601481905560015b919050565b6005546001600160a01b03610100909104163314610b4f5760405162461bcd60e51b81526004016108e090612380565b612710610b5b60025490565b610b66906032612405565b610b70919061241c565b811015610bb25760405162461bcd60e51b815260206004820152601060248201526f6d617857616c6c6574203c20302e352560801b60448201526064016108e0565b60055460ff16610bc390600a612522565b610bcd9082612405565b60155550565b6005546001600160a01b03610100909104163314610c035760405162461bcd60e51b81526004016108e090612380565b6113886009541115610c1457600080fd5b600955565b6005546000906001600160a01b03610100909104163314610c4c5760405162461bcd60e51b81526004016108e090612380565b506016805460ff19169055600190565b6000610c6984848461150e565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610cee5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016108e0565b610cfb85338584036113ea565b506001949350505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916109e8918590610d3d908690612531565b6113ea565b6005546001600160a01b03610100909104163314610d725760405162461bcd60e51b81526004016108e090612380565b6113886008541115610d8357600080fd5b600855565b6005546001600160a01b03610100909104163314610db85760405162461bcd60e51b81526004016108e090612380565b6001600160a01b03919091166000908152600f60205260409020805460ff1916911515919091179055565b6005546001600160a01b03610100909104163314610e135760405162461bcd60e51b81526004016108e090612380565b60055460405160009161010090046001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a360058054610100600160a81b0319169055565b6005546001600160a01b03610100909104163314610e935760405162461bcd60e51b81526004016108e090612380565b60168054911515620100000262ff000019909216919091179055565b606060048054610958906123b5565b6005546001600160a01b03610100909104163314610eee5760405162461bcd60e51b81526004016108e090612380565b7f000000000000000000000000e69a25ecd29ab877ce5a0ed6336d12bad3fe931d6001600160a01b0316826001600160a01b031603610f955760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b657250616972730000000000000060648201526084016108e0565b610f9f8282611c7a565b5050565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156110255760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016108e0565b61103233858584036113ea565b5060019392505050565b60006109e833848461150e565b6005546001600160a01b036101009091041633146110795760405162461bcd60e51b81526004016108e090612380565b6012546040516001600160a01b03918216918316907f8616c7a330e3cf61290821331585511f1e2778171e2b005fb5ec60cfe874dc6790600090a3601280546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b036101009091041633146111065760405162461bcd60e51b81526004016108e090612380565b6001600160a01b0382166000818152600e6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b036101009091041633146111955760405162461bcd60e51b81526004016108e090612380565b6127106111a160025490565b6111ac90600a612405565b6111b6919061241c565b8110156111fd5760405162461bcd60e51b81526020600482015260156024820152746d61785472616e73616374696f6e203c20302e312560581b60448201526064016108e0565b60055460ff1661120e90600a612522565b6112189082612405565b60135550565b6005546000906001600160a01b036101009091041633146112515760405162461bcd60e51b81526004016108e090612380565b506018805460ff19169055600190565b6005546001600160a01b036101009091041633146112915760405162461bcd60e51b81526004016108e090612380565b6011546040516001600160a01b03918216918316907f94cc1498503be9a145caf3e96f856665f29cf9b26c7179a93fbe1c1e5f56a0fd90600090a3601180546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b0361010090910416331461131e5760405162461bcd60e51b81526004016108e090612380565b6001600160a01b0381166113835760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108e0565b6005546040516001600160a01b0380841692610100900416907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6001600160a01b03831661144c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108e0565b6001600160a01b0382166114ad5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108e0565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166115345760405162461bcd60e51b81526004016108e090612544565b6001600160a01b03821661155a5760405162461bcd60e51b81526004016108e090612589565b806000036115735761156e83836000611cce565b505050565b60165460ff1615611a33576005546001600160a01b0384811661010090920416148015906115b457506005546001600160a01b038381166101009092041614155b80156115c857506001600160a01b03821615155b80156115df57506001600160a01b03821661dead14155b80156115f55750600754600160a01b900460ff16155b15611a3357601654610100900460ff1661168d576001600160a01b0383166000908152600e602052604090205460ff168061164857506001600160a01b0382166000908152600e602052604090205460ff165b61168d5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b60448201526064016108e0565b60185460ff16156117d9576005546001600160a01b0383811661010090920416148015906116ed57507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0316826001600160a01b031614155b801561172b57507f000000000000000000000000e69a25ecd29ab877ce5a0ed6336d12bad3fe931d6001600160a01b0316826001600160a01b031614155b156117d9573260009081526017602052604090205443116117c65760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a4016108e0565b3260009081526017602052604090204390555b6001600160a01b03831660009081526010602052604090205460ff16801561181a57506001600160a01b0382166000908152600f602052604090205460ff16155b156118f8576013548111156118895760405162461bcd60e51b815260206004820152602f60248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526e36b0bc2a3930b739b0b1ba34b7b71760891b60648201526084016108e0565b6015546001600160a01b0383166000908152602081905260409020546118af9083612531565b11156118f35760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016108e0565b611a33565b6001600160a01b03821660009081526010602052604090205460ff16801561193957506001600160a01b0383166000908152600f602052604090205460ff16155b156119a9576013548111156118f35760405162461bcd60e51b815260206004820152603060248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201526f1036b0bc2a3930b739b0b1ba34b7b71760811b60648201526084016108e0565b6001600160a01b0382166000908152600f602052604090205460ff16611a33576015546001600160a01b0383166000908152602081905260409020546119ef9083612531565b1115611a335760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016108e0565b3060009081526020819052604090205460145481108015908190611a5f575060165462010000900460ff165b8015611a755750600754600160a01b900460ff16155b8015611a9a57506001600160a01b03851660009081526010602052604090205460ff16155b8015611abf57506001600160a01b0385166000908152600e602052604090205460ff16155b8015611ae457506001600160a01b0384166000908152600e602052604090205460ff16155b8015611af35750600b54600d54115b15611b30576007805460ff60a01b1916600160a01b179055600a54611b2290611b1d908490611e23565b611e3b565b6007805460ff60a01b191690555b6007546001600160a01b0386166000908152600e602052604090205460ff600160a01b909204821615911680611b7e57506001600160a01b0385166000908152600e602052604090205460ff165b15611b87575060005b60008115611c66576001600160a01b03861660009081526010602052604090205460ff168015611bb957506000600954115b15611be657611bdf612710611bd960095488611f2290919063ffffffff16565b90611fa4565b9050611c48565b6001600160a01b03871660009081526010602052604090205460ff168015611c1057506000600854115b15611c4857611c30612710611bd960085488611f2290919063ffffffff16565b600d80549192506000611c42836125cc565b91905055505b8015611c5957611c59873083611cce565b611c6381866125e5565b94505b611c71878787611cce565b50505050505050565b6001600160a01b038216600081815260106020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b038316611cf45760405162461bcd60e51b81526004016108e090612544565b6001600160a01b038216611d1a5760405162461bcd60e51b81526004016108e090612589565b6001600160a01b03831660009081526020819052604090205481811015611d925760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016108e0565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611dc9908490612531565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611e1591815260200190565b60405180910390a350505050565b6000818311611e325782611e34565b815b9392505050565b600081600003611e49575050565b81611e5381611fe6565b476000611e6160028361241c565b90506000611e6f82846125e5565b6012546040519192506001600160a01b0316908390600081818185875af1925050503d8060008114611ebd576040519150601f19603f3d011682016040523d82523d6000602084013e611ec2565b606091505b50506011546040519196506001600160a01b0316908290600081818185875af1925050503d8060008114611f12576040519150601f19603f3d011682016040523d82523d6000602084013e611f17565b606091505b505050505050505050565b600082600003611f34575060006109ec565b6000611f408385612405565b905082611f4d858361241c565b14611e345760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016108e0565b6000611e3483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506121a6565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061201b5761201b6125f8565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612099573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120bd919061260e565b816001815181106120d0576120d06125f8565b60200260200101906001600160a01b031690816001600160a01b03168152505061211b307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846113ea565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac9479061217090859060009086903090429060040161262b565b600060405180830381600087803b15801561218a57600080fd5b505af115801561219e573d6000803e3d6000fd5b505050505050565b600081836121c75760405162461bcd60e51b81526004016108e091906121dd565b5060006121d4848661241c565b95945050505050565b60006020808352835180602085015260005b8181101561220b578581018301518582016040015282016121ef565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461224157600080fd5b50565b6000806040838503121561225757600080fd5b82356122628161222c565b946020939093013593505050565b60006020828403121561228257600080fd5b5035919050565b60008060006060848603121561229e57600080fd5b83356122a98161222c565b925060208401356122b98161222c565b929592945050506040919091013590565b6000602082840312156122dc57600080fd5b8135611e348161222c565b80358015158114610b1a57600080fd5b6000806040838503121561230a57600080fd5b82356123158161222c565b9150612323602084016122e7565b90509250929050565b60006020828403121561233e57600080fd5b611e34826122e7565b6000806040838503121561235a57600080fd5b82356123658161222c565b915060208301356123758161222c565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c908216806123c957607f821691505b6020821081036123e957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176109ec576109ec6123ef565b60008261243957634e487b7160e01b600052601260045260246000fd5b500490565b600181815b8085111561247957816000190482111561245f5761245f6123ef565b8085161561246c57918102915b93841c9390800290612443565b509250929050565b600082612490575060016109ec565b8161249d575060006109ec565b81600181146124b357600281146124bd576124d9565b60019150506109ec565b60ff8411156124ce576124ce6123ef565b50506001821b6109ec565b5060208310610133831016604e8410600b84101617156124fc575081810a6109ec565b612506838361243e565b806000190482111561251a5761251a6123ef565b029392505050565b6000611e3460ff841683612481565b808201808211156109ec576109ec6123ef565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6000600182016125de576125de6123ef565b5060010190565b818103818111156109ec576109ec6123ef565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561262057600080fd5b8151611e348161222c565b600060a08201878352602087602085015260a0604085015281875180845260c08601915060208901935060005b8181101561267d5784516001600160a01b031683529383019391830191600101612658565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212206c8816ba3f4e5367d90c6c2a8cfb9511a4c2719d9b57f433ec7640762147f44d64736f6c63430008180033
Deployed Bytecode Sourcemap
22457:11899:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25792:196;;;;;;;;;;;;;:::i;:::-;;2397:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3459:210;;;;;;;;;;-1:-1:-1;3459:210:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;3459:210:0;1023:187:1;32906:457:0;;;;;;;;;;-1:-1:-1;32906:457:0;;;;;:::i;:::-;;:::i;33634:240::-;;;;;;;;;;-1:-1:-1;33634:240:0;;;;;:::i;:::-;;:::i;22534:51::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1591:32:1;;;1573:51;;1561:2;1546:18;22534:51:0;1400:230:1;2725:108:0;;;;;;;;;;-1:-1:-1;2813:12:0;;2725:108;;;1781:25:1;;;1769:2;1754:18;2725:108:0;1635:177:1;34220:133:0;;;;;;;;;;-1:-1:-1;34220:133:0;;;;;:::i;:::-;;:::i;25996:118::-;;;;;;;;;;;;;:::i;3677:529::-;;;;;;;;;;-1:-1:-1;3677:529:0;;;;;:::i;:::-;;:::i;2617:100::-;;;;;;;;;;-1:-1:-1;2700:9:0;;2617:100;;2700:9;;;;2420:36:1;;2408:2;2393:18;2617:100:0;2278:184:1;4214:297:0;;;;;;;;;;-1:-1:-1;4214:297:0;;;;;:::i;:::-;;:::i;34082:130::-;;;;;;;;;;-1:-1:-1;34082:130:0;;;;;:::i;:::-;;:::i;22592:38::-;;;;;;;;;;;;;;;23345:33;;;;;;;;;;-1:-1:-1;23345:33:0;;;;;;;;27566:126;;;;;;;;;;-1:-1:-1;27566:126:0;;;;;:::i;:::-;-1:-1:-1;;;;;27656:28:0;27632:4;27656:28;;;:19;:28;;;;;;;;;27566:126;23575:28;;;;;;;;;;;;;;;;22887:35;;;;;;;;;;;;;;;;23425:31;;;;;;;;;;-1:-1:-1;23425:31:0;;;;;;;;;;;2841:177;;;;;;;;;;-1:-1:-1;2841:177:0;;;;;:::i;:::-;-1:-1:-1;;;;;2992:18:0;2960:7;2992:18;;;;;;;;;;;;2841:177;22929:29;;;;;;;;;;;;;;;;26315:161;;;;;;;;;;-1:-1:-1;26315:161:0;;;;;:::i;:::-;;:::i;12605:79::-;;;;;;;;;;-1:-1:-1;12670:6:0;;;;;-1:-1:-1;;;;;12670:6:0;12605:79;;12819:145;;;;;;;;;;;;;:::i;33970:104::-;;;;;;;;;;-1:-1:-1;33970:104:0;;;;;:::i;:::-;;:::i;2505:::-;;;;;;;;;;;;;:::i;26674:304::-;;;;;;;;;;-1:-1:-1;26674:304:0;;;;;:::i;:::-;;:::i;4519:482::-;;;;;;;;;;-1:-1:-1;4519:482:0;;;;;:::i;:::-;;:::i;3026:216::-;;;;;;;;;;-1:-1:-1;3026:216:0;;;;;:::i;:::-;;:::i;27180:181::-;;;;;;;;;;-1:-1:-1;27180:181:0;;;;;:::i;:::-;;:::i;23090:57::-;;;;;;;;;;-1:-1:-1;23090:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;23385:33;;;;;;;;;;-1:-1:-1;23385:33:0;;;;;;;;;;;26484:182;;;;;;;;;;-1:-1:-1;26484:182:0;;;;;:::i;:::-;;:::i;23234:29::-;;;;;;;;;;;;;;;;22842:38;;;;;;;;;;;;;;;;33371:255;;;;;;;;;;-1:-1:-1;33371:255:0;;;;;:::i;:::-;;:::i;23532:36::-;;;;;;;;;;-1:-1:-1;23532:36:0;;;;;;;;3250:201;;;;;;;;;;-1:-1:-1;3250:201:0;;;;;:::i;:::-;-1:-1:-1;;;;;3416:18:0;;;3384:7;3416:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3250:201;22769:23;;;;;;;;;;;;;;;;23026:57;;;;;;;;;;-1:-1:-1;23026:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;23270:33;;;;;;;;;;;;;;;;22740:22;;;;;;;;;;;;;;;;26175:132;;;;;;;;;;;;;:::i;27369:189::-;;;;;;;;;;-1:-1:-1;27369:189:0;;;;;:::i;:::-;;:::i;12972:281::-;;;;;;;;;;-1:-1:-1;12972:281:0;;;;;:::i;:::-;;:::i;22637:66::-;;;;;;;;;;-1:-1:-1;22637:66:0;;;;-1:-1:-1;;;;;22637:66:0;;;23310:24;;;;;;;;;;;;;;;;25792:196;12732:6;;-1:-1:-1;;;;;12732:6:0;;;;;385:10;12732:22;12724:67;;;;-1:-1:-1;;;12724:67:0;;;;;;;:::i;:::-;;;;;;;;;25849:13:::1;::::0;::::1;::::0;::::1;;;25848:14;25840:41;;;::::0;-1:-1:-1;;;25840:41:0;;4553:2:1;25840:41:0::1;::::0;::::1;4535:21:1::0;4592:2;4572:18;;;4565:30;-1:-1:-1;;;4611:18:1;;;4604:44;4665:18;;25840:41:0::1;4351:338:1::0;25840:41:0::1;25892:13;:20:::0;;25939:12:::1;25923:13;:28:::0;-1:-1:-1;;25962:18:0;;;;;25792:196::o;2397:100::-;2451:13;2484:5;2477:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2397:100;:::o;3459:210::-;3578:4;3600:39;385:10;3623:7;3632:6;3600:8;:39::i;:::-;-1:-1:-1;3657:4:0;3459:210;;;;;:::o;32906:457::-;12732:6;;33013:4;;-1:-1:-1;;;;;12732:6:0;;;;;385:10;12732:22;12724:67;;;;-1:-1:-1;;;12724:67:0;;;;;;;:::i;:::-;33091:7:::1;33070:13;2813:12:::0;;;2725:108;33070:13:::1;:17;::::0;33086:1:::1;33070:17;:::i;:::-;33069:29;;;;:::i;:::-;33057:8;:41;;33035:125;;;::::0;-1:-1:-1;;;33035:125:0;;5808:2:1;33035:125:0::1;::::0;::::1;5790:21:1::0;5847:2;5827:18;;;5820:30;5886:34;5866:18;;;5859:62;-1:-1:-1;;;5937:18:1;;;5930:32;5979:19;;33035:125:0::1;5606:398:1::0;33035:125:0::1;33229:6;33206:13;2813:12:::0;;;2725:108;33206:13:::1;:19;::::0;33222:3:::1;33206:19;:::i;:::-;33205:30;;;;:::i;:::-;33193:8;:42;;33171:122;;;::::0;-1:-1:-1;;;33171:122:0;;6211:2:1;33171:122:0::1;::::0;::::1;6193:21:1::0;6250:2;6230:18;;;6223:30;6289:32;6269:18;;;6262:60;6339:18;;33171:122:0::1;6009:354:1::0;33171:122:0::1;-1:-1:-1::0;33304:18:0::1;:29:::0;;;33351:4:::1;12802:1;32906:457:::0;;;:::o;33634:240::-;12732:6;;-1:-1:-1;;;;;12732:6:0;;;;;385:10;12732:22;12724:67;;;;-1:-1:-1;;;12724:67:0;;;;;;;:::i;:::-;33765:6:::1;33743:13;2813:12:::0;;;2725:108;33743:13:::1;:18;::::0;33759:2:::1;33743:18;:::i;:::-;33742:29;;;;:::i;:::-;33729:8;:43;;33707:109;;;::::0;-1:-1:-1;;;33707:109:0;;6570:2:1;33707:109:0::1;::::0;::::1;6552:21:1::0;6609:2;6589:18;;;6582:30;-1:-1:-1;;;6628:18:1;;;6621:46;6684:18;;33707:109:0::1;6368:340:1::0;33707:109:0::1;2700:9:::0;;;;33851:14:::1;::::0;:2:::1;:14;:::i;:::-;33839:27;::::0;:8;:27:::1;:::i;:::-;33827:9;:39:::0;-1:-1:-1;33634:240:0:o;34220:133::-;12732:6;;-1:-1:-1;;;;;12732:6:0;;;;;385:10;12732:22;12724:67;;;;-1:-1:-1;;;12724:67:0;;;;;;;:::i;:::-;34310:5:::1;34298:8;;:17;;34290:26;;;::::0;::::1;;34327:8;:18:::0;34220:133::o;25996:118::-;12732:6;;26045:4;;-1:-1:-1;;;;;12732:6:0;;;;;385:10;12732:22;12724:67;;;;-1:-1:-1;;;12724:67:0;;;;;;;:::i;:::-;-1:-1:-1;26062:14:0::1;:22:::0;;-1:-1:-1;;26062:22:0::1;::::0;;;25996:118;:::o;3677:529::-;3817:4;3834:36;3844:6;3852:9;3863:6;3834:9;:36::i;:::-;-1:-1:-1;;;;;3910:19:0;;3883:24;3910:19;;;:11;:19;;;;;;;;385:10;3910:33;;;;;;;;3976:26;;;;3954:116;;;;-1:-1:-1;;;3954:116:0;;8292:2:1;3954:116:0;;;8274:21:1;8331:2;8311:18;;;8304:30;8370:34;8350:18;;;8343:62;-1:-1:-1;;;8421:18:1;;;8414:38;8469:19;;3954:116:0;8090:404:1;3954:116:0;4106:57;4115:6;385:10;4156:6;4137:16;:25;4106:8;:57::i;:::-;-1:-1:-1;4194:4:0;;3677:529;-1:-1:-1;;;;3677:529:0:o;4214:297::-;385:10;4329:4;4423:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;4423:34:0;;;;;;;;;;4329:4;;4351:130;;4401:7;;4423:47;;4460:10;;4423:47;:::i;:::-;4351:8;:130::i;34082:::-;12732:6;;-1:-1:-1;;;;;12732:6:0;;;;;385:10;12732:22;12724:67;;;;-1:-1:-1;;;12724:67:0;;;;;;;:::i;:::-;34170:5:::1;34159:7;;:16;;34151:25;;;::::0;::::1;;34187:7;:17:::0;34082:130::o;26315:161::-;12732:6;;-1:-1:-1;;;;;12732:6:0;;;;;385:10;12732:22;12724:67;;;;-1:-1:-1;;;12724:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;26428:33:0;;;::::1;;::::0;;;:25:::1;:33;::::0;;;;:40;;-1:-1:-1;;26428:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;26315:161::o;12819:145::-;12732:6;;-1:-1:-1;;;;;12732:6:0;;;;;385:10;12732:22;12724:67;;;;-1:-1:-1;;;12724:67:0;;;;;;;:::i;:::-;12907:6:::1;::::0;12886:40:::1;::::0;12923:1:::1;::::0;12907:6:::1;::::0;::::1;-1:-1:-1::0;;;;;12907:6:0::1;::::0;12886:40:::1;::::0;12923:1;;12886:40:::1;12937:6;:19:::0;;-1:-1:-1;;;;;;12937:19:0::1;::::0;;12819:145::o;33970:104::-;12732:6;;-1:-1:-1;;;;;12732:6:0;;;;;385:10;12732:22;12724:67;;;;-1:-1:-1;;;12724:67:0;;;;;;;:::i;:::-;34043:11:::1;:23:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;34043:23:0;;::::1;::::0;;;::::1;::::0;;33970:104::o;2505:::-;2561:13;2594:7;2587:14;;;;;:::i;26674:304::-;12732:6;;-1:-1:-1;;;;;12732:6:0;;;;;385:10;12732:22;12724:67;;;;-1:-1:-1;;;12724:67:0;;;;;;;:::i;:::-;26818:13:::1;-1:-1:-1::0;;;;;26810:21:0::1;:4;-1:-1:-1::0;;;;;26810:21:0::1;::::0;26788:128:::1;;;::::0;-1:-1:-1;;;26788:128:0;;8831:2:1;26788:128:0::1;::::0;::::1;8813:21:1::0;8870:2;8850:18;;;8843:30;8909:34;8889:18;;;8882:62;8980:27;8960:18;;;8953:55;9025:19;;26788:128:0::1;8629:421:1::0;26788:128:0::1;26929:41;26958:4;26964:5;26929:28;:41::i;:::-;26674:304:::0;;:::o;4519:482::-;385:10;4639:4;4688:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;4688:34:0;;;;;;;;;;4755:35;;;;4733:122;;;;-1:-1:-1;;;4733:122:0;;9257:2:1;4733:122:0;;;9239:21:1;9296:2;9276:18;;;9269:30;9335:34;9315:18;;;9308:62;-1:-1:-1;;;9386:18:1;;;9379:35;9431:19;;4733:122:0;9055:401:1;4733:122:0;4891:67;385:10;4914:7;4942:15;4923:16;:34;4891:8;:67::i;:::-;-1:-1:-1;4989:4:0;;4519:482;-1:-1:-1;;;4519:482:0:o;3026:216::-;3148:4;3170:42;385:10;3194:9;3205:6;3170:9;:42::i;27180:181::-;12732:6;;-1:-1:-1;;;;;12732:6:0;;;;;385:10;12732:22;12724:67;;;;-1:-1:-1;;;12724:67:0;;;;;;;:::i;:::-;27299:15:::1;::::0;27265:50:::1;::::0;-1:-1:-1;;;;;27299:15:0;;::::1;::::0;27265:50;::::1;::::0;::::1;::::0;27299:15:::1;::::0;27265:50:::1;27326:15;:27:::0;;-1:-1:-1;;;;;;27326:27:0::1;-1:-1:-1::0;;;;;27326:27:0;;;::::1;::::0;;;::::1;::::0;;27180:181::o;26484:182::-;12732:6;;-1:-1:-1;;;;;12732:6:0;;;;;385:10;12732:22;12724:67;;;;-1:-1:-1;;;12724:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;26569:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;26569:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;26624:34;;1163:41:1;;;26624:34:0::1;::::0;1136:18:1;26624:34:0::1;;;;;;;26484:182:::0;;:::o;33371:255::-;12732:6;;-1:-1:-1;;;;;12732:6:0;;;;;385:10;12732:22;12724:67;;;;-1:-1:-1;;;12724:67:0;;;;;;;:::i;:::-;33507:6:::1;33485:13;2813:12:::0;;;2725:108;33485:13:::1;:18;::::0;33501:2:::1;33485:18;:::i;:::-;33484:29;;;;:::i;:::-;33471:8;:43;;33449:114;;;::::0;-1:-1:-1;;;33449:114:0;;9663:2:1;33449:114:0::1;::::0;::::1;9645:21:1::0;9702:2;9682:18;;;9675:30;-1:-1:-1;;;9721:18:1;;;9714:51;9782:18;;33449:114:0::1;9461:345:1::0;33449:114:0::1;2700:9:::0;;;;33603:14:::1;::::0;:2:::1;:14;:::i;:::-;33591:27;::::0;:8;:27:::1;:::i;:::-;33574:14;:44:::0;-1:-1:-1;33371:255:0:o;26175:132::-;12732:6;;26235:4;;-1:-1:-1;;;;;12732:6:0;;;;;385:10;12732:22;12724:67;;;;-1:-1:-1;;;12724:67:0;;;;;;;:::i;:::-;-1:-1:-1;26252:17:0::1;:25:::0;;-1:-1:-1;;26252:25:0::1;::::0;;;26175:132;:::o;27369:189::-;12732:6;;-1:-1:-1;;;;;12732:6:0;;;;;385:10;12732:22;12724:67;;;;-1:-1:-1;;;12724:67:0;;;;;;;:::i;:::-;27492:17:::1;::::0;27456:54:::1;::::0;-1:-1:-1;;;;;27492:17:0;;::::1;::::0;27456:54;::::1;::::0;::::1;::::0;27492:17:::1;::::0;27456:54:::1;27521:17;:29:::0;;-1:-1:-1;;;;;;27521:29:0::1;-1:-1:-1::0;;;;;27521:29:0;;;::::1;::::0;;;::::1;::::0;;27369:189::o;12972:281::-;12732:6;;-1:-1:-1;;;;;12732:6:0;;;;;385:10;12732:22;12724:67;;;;-1:-1:-1;;;12724:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13075:22:0;::::1;13053:110;;;::::0;-1:-1:-1;;;13053:110:0;;10013:2:1;13053:110:0::1;::::0;::::1;9995:21:1::0;10052:2;10032:18;;;10025:30;10091:34;10071:18;;;10064:62;-1:-1:-1;;;10142:18:1;;;10135:36;10188:19;;13053:110:0::1;9811:402:1::0;13053:110:0::1;13200:6;::::0;13179:38:::1;::::0;-1:-1:-1;;;;;13179:38:0;;::::1;::::0;13200:6:::1;::::0;::::1;;::::0;13179:38:::1;::::0;;;::::1;13228:6;:17:::0;;-1:-1:-1;;;;;13228:17:0;;::::1;;;-1:-1:-1::0;;;;;;13228:17:0;;::::1;::::0;;;::::1;::::0;;12972:281::o;6793:380::-;-1:-1:-1;;;;;6929:19:0;;6921:68;;;;-1:-1:-1;;;6921:68:0;;10420:2:1;6921:68:0;;;10402:21:1;10459:2;10439:18;;;10432:30;10498:34;10478:18;;;10471:62;-1:-1:-1;;;10549:18:1;;;10542:34;10593:19;;6921:68:0;10218:400:1;6921:68:0;-1:-1:-1;;;;;7008:21:0;;7000:68;;;;-1:-1:-1;;;7000:68:0;;10825:2:1;7000:68:0;;;10807:21:1;10864:2;10844:18;;;10837:30;10903:34;10883:18;;;10876:62;-1:-1:-1;;;10954:18:1;;;10947:32;10996:19;;7000:68:0;10623:398:1;7000:68:0;-1:-1:-1;;;;;7081:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7133:32;;1781:25:1;;;7133:32:0;;1754:18:1;7133:32:0;;;;;;;6793:380;;;:::o;27700:3976::-;-1:-1:-1;;;;;27832:18:0;;27824:68;;;;-1:-1:-1;;;27824:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;27911:16:0;;27903:64;;;;-1:-1:-1;;;27903:64:0;;;;;;;:::i;:::-;27984:6;27994:1;27984:11;27980:93;;28012:28;28028:4;28034:2;28038:1;28012:15;:28::i;:::-;27700:3976;;;:::o;27980:93::-;28089:14;;;;28085:2261;;;12670:6;;-1:-1:-1;;;;;28142:15:0;;;12670:6;;;;;28142:15;;;;:49;;-1:-1:-1;12670:6:0;;-1:-1:-1;;;;;28178:13:0;;;12670:6;;;;;28178:13;;28142:49;:86;;;;-1:-1:-1;;;;;;28212:16:0;;;;28142:86;:128;;;;-1:-1:-1;;;;;;28249:21:0;;28263:6;28249:21;;28142:128;:158;;;;-1:-1:-1;28292:8:0;;-1:-1:-1;;;28292:8:0;;;;28291:9;28142:158;28120:2215;;;28340:13;;;;;;;28335:223;;-1:-1:-1;;;;;28412:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;28441:23:0;;;;;;:19;:23;;;;;;;;28412:52;28378:160;;;;-1:-1:-1;;;28378:160:0;;12038:2:1;28378:160:0;;;12020:21:1;12077:2;12057:18;;;12050:30;-1:-1:-1;;;12096:18:1;;;12089:52;12158:18;;28378:160:0;11836:346:1;28378:160:0;28582:17;;;;28578:597;;;12670:6;;-1:-1:-1;;;;;28654:13:0;;;12670:6;;;;;28654:13;;;;:72;;;28710:15;-1:-1:-1;;;;;28696:30:0;:2;-1:-1:-1;;;;;28696:30:0;;;28654:72;:129;;;;;28769:13;-1:-1:-1;;;;;28755:28:0;:2;-1:-1:-1;;;;;28755:28:0;;;28654:129;28624:532;;;28897:9;28872:35;;;;:24;:35;;;;;;28910:12;-1:-1:-1;28834:221:0;;;;-1:-1:-1;;;28834:221:0;;12389:2:1;28834:221:0;;;12371:21:1;12428:2;12408:18;;;12401:30;12467:34;12447:18;;;12440:62;12538:34;12518:18;;;12511:62;-1:-1:-1;;;12589:19:1;;;12582:40;12639:19;;28834:221:0;12187:477:1;28834:221:0;29107:9;29082:35;;;;:24;:35;;;;;29120:12;29082:50;;28624:532;-1:-1:-1;;;;;29245:31:0;;;;;;:25;:31;;;;;;;;:86;;;;-1:-1:-1;;;;;;29302:29:0;;;;;;:25;:29;;;;;;;;29301:30;29245:86;29219:1101;;;29418:14;;29408:6;:24;;29374:157;;;;-1:-1:-1;;;29374:157:0;;12871:2:1;29374:157:0;;;12853:21:1;12910:2;12890:18;;;12883:30;12949:34;12929:18;;;12922:62;-1:-1:-1;;;13000:18:1;;;12993:45;13055:19;;29374:157:0;12669:411:1;29374:157:0;29614:9;;-1:-1:-1;;;;;2992:18:0;;2960:7;2992:18;;;;;;;;;;;29588:22;;:6;:22;:::i;:::-;:35;;29554:140;;;;-1:-1:-1;;;29554:140:0;;13287:2:1;29554:140:0;;;13269:21:1;13326:2;13306:18;;;13299:30;-1:-1:-1;;;13345:18:1;;;13338:49;13404:18;;29554:140:0;13085:343:1;29554:140:0;29219:1101;;;-1:-1:-1;;;;;29788:29:0;;;;;;:25;:29;;;;;;;;:86;;;;-1:-1:-1;;;;;;29843:31:0;;;;;;:25;:31;;;;;;;;29842:32;29788:86;29762:558;;;29961:14;;29951:6;:24;;29917:158;;;;-1:-1:-1;;;29917:158:0;;13635:2:1;29917:158:0;;;13617:21:1;13674:2;13654:18;;;13647:30;13713:34;13693:18;;;13686:62;-1:-1:-1;;;13764:18:1;;;13757:46;13820:19;;29917:158:0;13433:412:1;29762:558:0;-1:-1:-1;;;;;30106:29:0;;;;;;:25;:29;;;;;;;;30101:219;;30220:9;;-1:-1:-1;;;;;2992:18:0;;2960:7;2992:18;;;;;;;;;;;30194:22;;:6;:22;:::i;:::-;:35;;30160:140;;;;-1:-1:-1;;;30160:140:0;;13287:2:1;30160:140:0;;;13269:21:1;13326:2;13306:18;;;13299:30;-1:-1:-1;;;13345:18:1;;;13338:49;13404:18;;30160:140:0;13085:343:1;30160:140:0;30409:4;30360:28;2992:18;;;;;;;;;;;30467;;30443:42;;;;;;;30516:35;;-1:-1:-1;30540:11:0;;;;;;;30516:35;:61;;;;-1:-1:-1;30569:8:0;;-1:-1:-1;;;30569:8:0;;;;30568:9;30516:61;:110;;;;-1:-1:-1;;;;;;30595:31:0;;;;;;:25;:31;;;;;;;;30594:32;30516:110;:153;;;;-1:-1:-1;;;;;;30644:25:0;;;;;;:19;:25;;;;;;;;30643:26;30516:153;:194;;;;-1:-1:-1;;;;;;30687:23:0;;;;;;:19;:23;;;;;;;;30686:24;30516:194;:242;;;;;30740:18;;30727:10;;:31;30516:242;30498:415;;;30785:8;:15;;-1:-1:-1;;;;30785:15:0;-1:-1:-1;;;30785:15:0;;;30850:18;;30815:55;;30824:45;;30828:20;;30824:3;:45::i;:::-;30815:8;:55::i;:::-;30885:8;:16;;-1:-1:-1;;;;30885:16:0;;;30498:415;30941:8;;-1:-1:-1;;;;;30966:25:0;;30925:12;30966:25;;;:19;:25;;;;;;30941:8;-1:-1:-1;;;30941:8:0;;;;;30940:9;;30966:25;;:52;;-1:-1:-1;;;;;;30995:23:0;;;;;;:19;:23;;;;;;;;30966:52;30962:100;;;-1:-1:-1;31045:5:0;30962:100;31074:12;31107:7;31103:518;;;-1:-1:-1;;;;;31156:29:0;;;;;;:25;:29;;;;;;;;:45;;;;;31200:1;31189:8;;:12;31156:45;31152:320;;;31229:32;31254:6;31229:20;31240:8;;31229:6;:10;;:20;;;;:::i;:::-;:24;;:32::i;:::-;31222:39;;31152:320;;;-1:-1:-1;;;;;31320:31:0;;;;;;:25;:31;;;;;;;;:46;;;;;31365:1;31355:7;;:11;31320:46;31316:156;;;31394:31;31418:6;31394:19;31405:7;;31394:6;:10;;:19;;;;:::i;:31::-;31444:10;:12;;31387:38;;-1:-1:-1;31444:10:0;:12;;;:::i;:::-;;;;;;31316:156;31492:8;;31488:91;;31521:42;31537:4;31551;31558;31521:15;:42::i;:::-;31595:14;31605:4;31595:14;;:::i;:::-;;;31103:518;31633:33;31649:4;31655:2;31659:6;31633:15;:33::i;:::-;27813:3863;;;;27700:3976;;;:::o;26986:186::-;-1:-1:-1;;;;;27069:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;27069:39:0;;;;;;;;;;27124:40;;27069:39;;:31;27124:40;;;26986:186;;:::o;5009:770::-;-1:-1:-1;;;;;5149:20:0;;5141:70;;;;-1:-1:-1;;;5141:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5230:23:0;;5222:71;;;;-1:-1:-1;;;5222:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5390:17:0;;5366:21;5390:17;;;;;;;;;;;5440:23;;;;5418:111;;;;-1:-1:-1;;;5418:111:0;;14325:2:1;5418:111:0;;;14307:21:1;14364:2;14344:18;;;14337:30;14403:34;14383:18;;;14376:62;-1:-1:-1;;;14454:18:1;;;14447:36;14500:19;;5418:111:0;14123:402:1;5418:111:0;-1:-1:-1;;;;;5565:17:0;;;:9;:17;;;;;;;;;;;5585:22;;;5565:42;;5629:20;;;;;;;;:30;;5601:6;;5565:9;5629:30;;5601:6;;5629:30;:::i;:::-;;;;;;;;5694:9;-1:-1:-1;;;;;5677:35:0;5686:6;-1:-1:-1;;;;;5677:35:0;;5705:6;5677:35;;;;1781:25:1;;1769:2;1754:18;;1635:177;5677:35:0;;;;;;;;5130:649;5009:770;;;:::o;31684:107::-;31741:7;31773:1;31769;:5;31768:15;;31782:1;31768:15;;;31778:1;31768:15;31761:22;31684:107;-1:-1:-1;;;31684:107:0:o;32282:616::-;32335:12;32364:6;32374:1;32364:11;32360:50;;32392:7;32282:616;:::o;32360:50::-;32451:6;32468:36;32451:6;32468:16;:36::i;:::-;32536:21;32515:18;32623:14;32636:1;32536:21;32623:14;:::i;:::-;32602:35;-1:-1:-1;32648:26:0;32677:23;32602:35;32677:10;:23;:::i;:::-;32735:15;;32727:52;;32648;;-1:-1:-1;;;;;;32735:15:0;;32764:10;;32727:52;;;;32764:10;32735:15;32727:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;32812:17:0;;32804:86;;32713:66;;-1:-1:-1;;;;;;32812:17:0;;32857:18;;32804:86;;;;32857:18;32812:17;32804:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;32282:616:0:o;8036:250::-;8094:7;8118:1;8123;8118:6;8114:47;;-1:-1:-1;8148:1:0;8141:8;;8114:47;8173:9;8185:5;8189:1;8185;:5;:::i;:::-;8173:17;-1:-1:-1;8218:1:0;8209:5;8213:1;8173:17;8209:5;:::i;:::-;:10;8201:56;;;;-1:-1:-1;;;8201:56:0;;14942:2:1;8201:56:0;;;14924:21:1;14981:2;14961:18;;;14954:30;15020:34;15000:18;;;14993:62;-1:-1:-1;;;15071:18:1;;;15064:31;15112:19;;8201:56:0;14740:397:1;8294:132:0;8352:7;8379:39;8383:1;8386;8379:39;;;;;;;;;;;;;;;;;:3;:39::i;31799:475::-;31889:16;;;31903:1;31889:16;;;;;;;;31865:21;;31889:16;;;;;;;;;;-1:-1:-1;31889:16:0;31865:40;;31934:4;31916;31921:1;31916:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;31916:23:0;;;-1:-1:-1;;;;;31916:23:0;;;;;31960:15;-1:-1:-1;;;;;31960:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31950:4;31955:1;31950:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;31950:32:0;;;-1:-1:-1;;;;;31950:32:0;;;;;31995:62;32012:4;32027:15;32045:11;31995:8;:62::i;:::-;32070:196;;-1:-1:-1;;;32070:196:0;;-1:-1:-1;;;;;32070:15:0;:66;;;;:196;;32151:11;;32177:1;;32193:4;;32220;;32240:15;;32070:196;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31854:420;31799:475;:::o;8434:312::-;8554:7;8589:12;8582:5;8574:28;;;;-1:-1:-1;;;8574:28:0;;;;;;;;:::i;:::-;-1:-1:-1;8613:9:0;8625:5;8629:1;8625;:5;:::i;:::-;8613:17;8434:312;-1:-1:-1;;;;;8434:312:0: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;622:70;567:131;:::o;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:180::-;1274:6;1327:2;1315:9;1306:7;1302:23;1298:32;1295:52;;;1343:1;1340;1333:12;1295:52;-1:-1:-1;1366:23:1;;1215:180;-1:-1:-1;1215:180:1:o;1817:456::-;1894:6;1902;1910;1963:2;1951:9;1942:7;1938:23;1934:32;1931:52;;;1979:1;1976;1969:12;1931:52;2018:9;2005:23;2037:31;2062:5;2037:31;:::i;:::-;2087:5;-1:-1:-1;2144:2:1;2129:18;;2116:32;2157:33;2116:32;2157:33;:::i;:::-;1817:456;;2209:7;;-1:-1:-1;;;2263:2:1;2248:18;;;;2235:32;;1817:456::o;2675:247::-;2734:6;2787:2;2775:9;2766:7;2762:23;2758:32;2755:52;;;2803:1;2800;2793:12;2755:52;2842:9;2829:23;2861:31;2886:5;2861:31;:::i;2927:160::-;2992:20;;3048:13;;3041:21;3031:32;;3021:60;;3077:1;3074;3067:12;3092:315;3157:6;3165;3218:2;3206:9;3197:7;3193:23;3189:32;3186:52;;;3234:1;3231;3224:12;3186:52;3273:9;3260:23;3292:31;3317:5;3292:31;:::i;:::-;3342:5;-1:-1:-1;3366:35:1;3397:2;3382:18;;3366:35;:::i;:::-;3356:45;;3092:315;;;;;:::o;3412:180::-;3468:6;3521:2;3509:9;3500:7;3496:23;3492:32;3489:52;;;3537:1;3534;3527:12;3489:52;3560:26;3576:9;3560:26;:::i;3597:388::-;3665:6;3673;3726:2;3714:9;3705:7;3701:23;3697:32;3694:52;;;3742:1;3739;3732:12;3694:52;3781:9;3768:23;3800:31;3825:5;3800:31;:::i;:::-;3850:5;-1:-1:-1;3907:2:1;3892:18;;3879:32;3920:33;3879:32;3920:33;:::i;:::-;3972:7;3962:17;;;3597:388;;;;;:::o;3990:356::-;4192:2;4174:21;;;4211:18;;;4204:30;4270:34;4265:2;4250:18;;4243:62;4337:2;4322:18;;3990:356::o;4694:380::-;4773:1;4769:12;;;;4816;;;4837:61;;4891:4;4883:6;4879:17;4869:27;;4837:61;4944:2;4936:6;4933:14;4913:18;4910:38;4907:161;;4990:10;4985:3;4981:20;4978:1;4971:31;5025:4;5022:1;5015:15;5053:4;5050:1;5043:15;4907:161;;4694:380;;;:::o;5079:127::-;5140:10;5135:3;5131:20;5128:1;5121:31;5171:4;5168:1;5161:15;5195:4;5192:1;5185:15;5211:168;5284:9;;;5315;;5332:15;;;5326:22;;5312:37;5302:71;;5353:18;;:::i;5384:217::-;5424:1;5450;5440:132;;5494:10;5489:3;5485:20;5482:1;5475:31;5529:4;5526:1;5519:15;5557:4;5554:1;5547:15;5440:132;-1:-1:-1;5586:9:1;;5384:217::o;6713:416::-;6802:1;6839:5;6802:1;6853:270;6874:7;6864:8;6861:21;6853:270;;;6933:4;6929:1;6925:6;6921:17;6915:4;6912:27;6909:53;;;6942:18;;:::i;:::-;6992:7;6982:8;6978:22;6975:55;;;7012:16;;;;6975:55;7091:22;;;;7051:15;;;;6853:270;;;6857:3;6713:416;;;;;:::o;7134:806::-;7183:5;7213:8;7203:80;;-1:-1:-1;7254:1:1;7268:5;;7203:80;7302:4;7292:76;;-1:-1:-1;7339:1:1;7353:5;;7292:76;7384:4;7402:1;7397:59;;;;7470:1;7465:130;;;;7377:218;;7397:59;7427:1;7418:10;;7441:5;;;7465:130;7502:3;7492:8;7489:17;7486:43;;;7509:18;;:::i;:::-;-1:-1:-1;;7565:1:1;7551:16;;7580:5;;7377:218;;7679:2;7669:8;7666:16;7660:3;7654:4;7651:13;7647:36;7641:2;7631:8;7628:16;7623:2;7617:4;7614:12;7610:35;7607:77;7604:159;;;-1:-1:-1;7716:19:1;;;7748:5;;7604:159;7795:34;7820:8;7814:4;7795:34;:::i;:::-;7865:6;7861:1;7857:6;7853:19;7844:7;7841:32;7838:58;;;7876:18;;:::i;:::-;7914:20;;7134:806;-1:-1:-1;;;7134:806:1:o;7945:140::-;8003:5;8032:47;8073:4;8063:8;8059:19;8053:4;8032:47;:::i;8499:125::-;8564:9;;;8585:10;;;8582:36;;;8598:18;;:::i;11026:401::-;11228:2;11210:21;;;11267:2;11247:18;;;11240:30;11306:34;11301:2;11286:18;;11279:62;-1:-1:-1;;;11372:2:1;11357:18;;11350:35;11417:3;11402:19;;11026:401::o;11432:399::-;11634:2;11616:21;;;11673:2;11653:18;;;11646:30;11712:34;11707:2;11692:18;;11685:62;-1:-1:-1;;;11778:2:1;11763:18;;11756:33;11821:3;11806:19;;11432:399::o;13850:135::-;13889:3;13910:17;;;13907:43;;13930:18;;:::i;:::-;-1:-1:-1;13977:1:1;13966:13;;13850:135::o;13990:128::-;14057:9;;;14078:11;;;14075:37;;;14092:18;;:::i;15274:127::-;15335:10;15330:3;15326:20;15323:1;15316:31;15366:4;15363:1;15356:15;15390:4;15387:1;15380:15;15406:251;15476:6;15529:2;15517:9;15508:7;15504:23;15500:32;15497:52;;;15545:1;15542;15535:12;15497:52;15577:9;15571:16;15596:31;15621:5;15596:31;:::i;15662:980::-;15924:4;15972:3;15961:9;15957:19;16003:6;15992:9;15985:25;16029:2;16067:6;16062:2;16051:9;16047:18;16040:34;16110:3;16105:2;16094:9;16090:18;16083:31;16134:6;16169;16163:13;16200:6;16192;16185:22;16238:3;16227:9;16223:19;16216:26;;16277:2;16269:6;16265:15;16251:29;;16298:1;16308:195;16322:6;16319:1;16316:13;16308:195;;;16387:13;;-1:-1:-1;;;;;16383:39:1;16371:52;;16478:15;;;;16443:12;;;;16419:1;16337:9;16308:195;;;-1:-1:-1;;;;;;;16559:32:1;;;;16554:2;16539:18;;16532:60;-1:-1:-1;;;16623:3:1;16608:19;16601:35;16520:3;15662:980;-1:-1:-1;;;15662:980:1:o
Swarm Source
ipfs://6c8816ba3f4e5367d90c6c2a8cfb9511a4c2719d9b57f433ec7640762147f44d
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.