ERC-20
Overview
Max Total Supply
100,000,000,000 GURI
Holders
23
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
549,384,194.852142968331257854 GURIValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
GURIMI
Compiler Version
v0.8.15+commit.e14f2714
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-01-25 */ /* GURIMI https://t.me/gurimi_erc */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { 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); } 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); } } } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _setOwner(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _setOwner(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } contract GURIMI is Context,IERC20, Ownable{ using Address for address; string private _name = "GURIMI"; string private _symbol = "GURI"; uint8 private _decimals = 18; uint256 totalFeeFortx = 0; uint256 maxWalletTreshold = 2; uint256 maxTxTreshold = 1; uint256 private swapTreshold =1; uint256 private currentThreshold = 10; //Once the token value goes up this number can be decreased (To reduce price impact on asset) uint256 private _totalSupply = (10000000 * 10**4) * 10**_decimals; // uint256 public requiredTokensToSwap = _totalSupply * swapTreshold /1000; mapping (address => uint256) private _balances; mapping (address => bool) private _excludedFromFees; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) public automatedMarketMakerPairs; address _owner; address payable public marketingAddress = payable(0xDe6Bd29Eb2b2A245bB0674A6E76C860D51Fa9463); uint256 maxWalletAmount = _totalSupply*maxWalletTreshold/200; // starting 2% uint256 maxTxAmount = _totalSupply*maxTxTreshold/100; mapping (address => bool) botWallets; bool botTradeEnabled = false; bool checkWalletSize = true; mapping (address => bool) private _liquidityHolders; mapping (address => bool) private presaleAddresses; //GURIMI Taxes uint256 private buyliqFee = 1; //0 uint256 private buyprevLiqFee = 0; uint256 private buymktFee = 6;//0 uint256 private buyPrevmktFee = 0; uint256 GURIMICOINDaycooldown = 0; bool private tradeEnabled = false; uint256 private sellliqFee = 1; uint256 private sellprevLiqFee = 0; uint256 private sellmktFee = 49; uint256 private sellPrevmktFee = 0; uint256 private maxFeeSet = 99; bool public inSwapAndLiquify; bool public swapAndLiquifyEnabled = true; address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD; uint256 private mktTokens = 0; uint256 private liqTokens = 0; event SwapAndLiquify(uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); event tokensSwappedDuringTokenomics(uint256 amount); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); // 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D IUniswapV2Router02 _router; address public uniswapV2Pair; //Balances tracker modifier lockTheSwap{ inSwapAndLiquify = true; _; inSwapAndLiquify = false; } constructor(){ _balances[_msgSender()] = _totalSupply; //0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D mainnet and all networks IUniswapV2Router02 _uniRouter = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); uniswapV2Pair = IUniswapV2Factory(_uniRouter.factory()) .createPair(address(this), _uniRouter.WETH()); _excludedFromFees[owner()] = true; _excludedFromFees[address(this)] = true;// exclude owner and contract instance from fees _router = _uniRouter; _liquidityHolders[address(_router)] = true; _liquidityHolders[owner()] = true; _liquidityHolders[address(this)] = true; _setAutomatedMarketMakerPair(address(uniswapV2Pair), true); emit Transfer(address(0),_msgSender(),_totalSupply); } receive() external payable{} //general token data and tracking of balances to be swapped. function getOwner()external view returns(address){ return owner(); } function currentmktTokens() external view returns (uint256){ return mktTokens; } function currentLiqTokens() external view returns (uint256){ return liqTokens; } function totalSupply() external view override returns (uint256){ return _totalSupply; } function balanceOf(address account) public view override returns (uint256){ return _balances[account]; } function transfer(address recipient, uint256 amount) external override returns (bool){ _transfer(_msgSender(),recipient,amount); return true; } function allowance(address owner, address spender) external view override returns (uint256){ return _allowances[owner][spender]; } function approve(address spender, uint256 amount) external override returns (bool){ _approve(_msgSender(),spender,amount); return true; } function decimals()external view returns(uint256){ return _decimals; } function name() external view returns (string memory) { return _name; } function symbol() external view returns (string memory){ return _symbol; } function updateMaxTxTreshold(uint256 newVal) public onlyOwner{ require (newVal > 1, "newVal can not be lower than 1"); maxTxTreshold = newVal; maxTxAmount = _totalSupply*maxTxTreshold/100;// 1% } function updateMaxWalletTreshold(uint256 newVal) public onlyOwner{ require (newVal > 1, "newVal can not be lower than 1"); maxWalletTreshold = newVal; maxWalletAmount = _totalSupply*maxWalletTreshold/100; } function transferFrom( address sender, address recipient, uint256 amount ) public override returns (bool){ require(amount <= _allowances[sender][_msgSender()], "ERC20: transfer amount exceeds allowance"); _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()] - amount); return true; } //Tokenomics related functions function COINDay() public onlyOwner{ require(block.timestamp > GURIMICOINDaycooldown, "You cant call GURIMICOINCoinDay more than once a day"); buyPrevmktFee = buymktFee; buyprevLiqFee = buyliqFee; buyliqFee = 0; buymktFee = 0; } function GURIMICOINCoinDayOver() public onlyOwner{ buyliqFee = buyprevLiqFee; buymktFee = buyPrevmktFee; GURIMICOINDaycooldown = block.timestamp + 86400; } function addBotWallet (address payable detectedBot, bool isBot) public onlyOwner{ botWallets[detectedBot] = isBot; } function currentbuyliqFee() public view returns (uint256){ return buyliqFee; } function currentbuymktfee() public view returns (uint256){ return buymktFee; } function currentsellLiqFee() public view returns (uint256){ return sellliqFee; } function currentsellmktfee() public view returns (uint256){ return sellmktFee; } function currentThresholdInt()public view returns (uint256){ return currentThreshold; } function isExcluded(address toCheck)public view returns (bool){ return _excludedFromFees[toCheck]; } function _transfer(address from, address to, uint256 amount) internal{ require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0,"ERC20: transfered amount must be greater than zero"); uint256 senderBalance = _balances[from]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); if(tradeEnabled == false){ require(_liquidityHolders[to] || _liquidityHolders[from],"Cant trade, trade is disabled"); } if(_liquidityHolders[to]==false && _liquidityHolders[from]==false){ require(amount <= maxTxAmount, "Transfer amount exceeds the maxTxAmount."); if(from == uniswapV2Pair){ require(balanceOf(to)+amount <= maxWalletAmount); } } uint256 inContractBalance = balanceOf(address(this)); if(inContractBalance >=requiredTokensToSwap && !inSwapAndLiquify && from != uniswapV2Pair && swapAndLiquifyEnabled){ if(inContractBalance >= requiredTokensToSwap ){ inContractBalance = requiredTokensToSwap; swapForTokenomics(inContractBalance); } } bool takeFees = true; if(_excludedFromFees[from] || _excludedFromFees[to]) { totalFeeFortx = 0; takeFees = false; } uint256 mktAmount = 0; uint256 liqAmount = 0; // Amount to be added to liquidity. if(takeFees){ //bot fees if(botWallets[from] == true||botWallets[to]==true){ revert("No bots can trade"); } //Selling fees if (automatedMarketMakerPairs[to] && to != address(_router) ){ totalFeeFortx = 0; mktAmount = amount * sellmktFee/100; liqAmount = amount * sellliqFee/100; totalFeeFortx = mktAmount + liqAmount; } //Buy Fees else if(automatedMarketMakerPairs[from] && from != address(_router)) { totalFeeFortx = 0; mktAmount = amount * buymktFee/100; liqAmount = amount * buyliqFee/100; totalFeeFortx = mktAmount + liqAmount ; } } _balances[from] = senderBalance - amount; _balances[to] += amount - mktAmount - liqAmount; if(liqAmount != 0) { _balances[address(this)] += totalFeeFortx; //tLiqTotal += liqAmount; liqTokens += liqAmount; mktTokens += mktAmount; emit Transfer(from, address(this), totalFeeFortx); } emit Transfer(from, to,amount-totalFeeFortx); } function swapForTokenomics(uint256 balanceToswap) private lockTheSwap{ swapAndLiquify(liqTokens); swapTokensForETHmkt(mktTokens); emit tokensSwappedDuringTokenomics(balanceToswap); mktTokens = 0; liqTokens = 0; } function addLimitExempt(address newAddress)external onlyOwner{ _liquidityHolders[newAddress] = true; } function swapTokensForETHmkt(uint256 amount)private { address[] memory path = new address[](2); path[0] = address(this); path[1] = _router.WETH(); _approve(address(this), address(_router), amount); _router.swapExactTokensForETHSupportingFeeOnTransferTokens( amount, 0, // Accept any amount of ETH. path, marketingAddress, block.timestamp ); } function unstuckTokens (IERC20 tokenToClear, address payable destination, uint256 amount) public onlyOwner{ //uint256 contractBalance = tokenToClear.balanceOf(address(this)); tokenToClear.transfer(destination, amount); } function unstuckETH(address payable destination) public onlyOwner{ uint256 ethBalance = address(this).balance; payable(destination).transfer(ethBalance); } function tradeStatus(bool status) public onlyOwner{ tradeEnabled = status; } function swapAndLiquify(uint256 liqTokensPassed) private { uint256 half = liqTokensPassed / 2; uint256 otherHalf = liqTokensPassed - half; uint256 initialBalance = address(this).balance; swapTokensForETH(half); uint256 newBalance = address(this).balance - (initialBalance); addLiquidity(otherHalf, newBalance); emit SwapAndLiquify(half,newBalance,otherHalf); } function swapTokensForETH(uint256 tokenAmount) private{ address[] memory path = new address[](2); path[0] = address(this); path[1] = _router.WETH(); _approve(address(this), address(_router), tokenAmount); _router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // Accept any amount of ETH. path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount,uint256 ethAmount) private{ _approve(address(this), address(_router), tokenAmount); _router.addLiquidityETH{value:ethAmount}( address(this), tokenAmount, 0, 0, deadAddress,// tr block.timestamp ); } function _approve(address owner,address spender, uint256 amount) internal{ 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); } //Fees related functions function addToExcluded(address toExclude) public onlyOwner{ _excludedFromFees[toExclude] = true; } function removeFromExcluded(address toRemove) public onlyOwner{ _excludedFromFees[toRemove] = false; } function excludePresaleAddresses(address router, address presale) external onlyOwner { _liquidityHolders[address(router)] = true; _liquidityHolders[presale] = true; presaleAddresses[address(router)] = true; presaleAddresses[presale] = true; } function endPresaleStatus() public onlyOwner{ buymktFee = 4; buyliqFee = 2; sellmktFee = 4; sellliqFee = 2; setSwapAndLiquify(true); } function updateThreshold(uint newThreshold) public onlyOwner{ currentThreshold = newThreshold; } function setSwapAndLiquify(bool _enabled) public onlyOwner{ swapAndLiquifyEnabled = _enabled; } //Marketing related function setMktAddress(address newAddress) external onlyOwner{ marketingAddress = payable(newAddress); } function transferAssetsETH(address payable to, uint256 amount) internal{ to.transfer(amount); } 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 updatecurrentbuyliqFee(uint256 newAmount) public onlyOwner{ require (newAmount < maxFeeSet, "newAmount exceeds maxFeeSet "); buyliqFee = newAmount; } function updatecurrentbuymktfee(uint256 newAmount) public onlyOwner{ require (newAmount < maxFeeSet, "newAmount exceeds maxFeeSet "); buymktFee= newAmount; } function updatecurrentsellLiqFee(uint256 newAmount) public onlyOwner{ require (newAmount < maxFeeSet, "newAmount exceeds maxFeeSet "); sellliqFee= newAmount; } function updatecurrentsellmktfee(uint256 newAmount)public onlyOwner{ require (newAmount < maxFeeSet, "newAmount exceeds maxFeeSet "); sellmktFee= newAmount; } function currentMaxWallet() public view returns(uint256){ return maxWalletAmount; } function currentMaxTx() public view returns(uint256){ return maxTxAmount; } function updateSwapTreshold(uint256 newVal) public onlyOwner{ swapTreshold = newVal; requiredTokensToSwap = _totalSupply*swapTreshold/1000; } function currentTradeStatus() public view returns (bool){ return tradeEnabled; } function currentSwapTreshold() public view returns(uint256){ return swapTreshold; } function currentTokensToSwap() public view returns(uint256){ return requiredTokensToSwap; } } interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"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":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"tokensSwappedDuringTokenomics","type":"event"},{"inputs":[],"name":"COINDay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"GURIMICOINCoinDayOver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"detectedBot","type":"address"},{"internalType":"bool","name":"isBot","type":"bool"}],"name":"addBotWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"addLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"toExclude","type":"address"}],"name":"addToExcluded","outputs":[],"stateMutability":"nonpayable","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":"currentLiqTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentMaxTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentMaxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentSwapTreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentThresholdInt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentTokensToSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentTradeStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentbuyliqFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentbuymktfee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentmktTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentsellLiqFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentsellmktfee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"endPresaleStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"router","type":"address"},{"internalType":"address","name":"presale","type":"address"}],"name":"excludePresaleAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"inSwapAndLiquify","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"toCheck","type":"address"}],"name":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"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":[{"internalType":"address","name":"toRemove","type":"address"}],"name":"removeFromExcluded","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"requiredTokensToSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setMktAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquify","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[{"internalType":"bool","name":"status","type":"bool"}],"name":"tradeStatus","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"address payable","name":"destination","type":"address"}],"name":"unstuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"tokenToClear","type":"address"},{"internalType":"address payable","name":"destination","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"unstuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newVal","type":"uint256"}],"name":"updateMaxTxTreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newVal","type":"uint256"}],"name":"updateMaxWalletTreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newVal","type":"uint256"}],"name":"updateSwapTreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newThreshold","type":"uint256"}],"name":"updateThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updatecurrentbuyliqFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updatecurrentbuymktfee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updatecurrentsellLiqFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updatecurrentsellmktfee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60e0604052600660a090815265475552494d4960d01b60c05260019062000027908262000557565b506040805180820190915260048152634755524960e01b602082015260029062000052908262000557565b506003805460ff191660129081179091556000600455600260055560016006819055600755600a60088190556200008a919062000738565b6200009b9064174876e80062000750565b6009556103e8600754600954620000b3919062000750565b620000bf919062000772565b600a55601080546001600160a01b03191673de6bd29eb2b2a245bb0674a6e76c860d51fa946317905560055460095460c891620000fc9162000750565b62000108919062000772565b60115560646006546009546200011f919062000750565b6200012b919062000772565b6012556014805461ffff191661010090811790915560016017819055600060188190556006601955601a819055601b819055601c805460ff19169055601d91909155601e8190556031601f55602081905560636021556022805461ff00191690921790915561dead6080526023819055602455348015620001ab57600080fd5b50620001b7336200040e565b600954336000908152600b602090815260409182902092909255805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d92839263c45a015592600480830193928290030181865afa1580156200021e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000244919062000795565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000292573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002b8919062000795565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000306573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200032c919062000795565b602680546001600160a01b03199081166001600160a01b039384161782556000805484168152600c60209081526040808320805460ff199081166001908117909255308086528386208054831684179055602580548b8b169816881790559585526015909352818420805484168217905583548716845281842080548416821790559383529091208054909116821790559054620003cc9216906200045e565b60095460405190815233906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a350620007c0565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0382166000818152600e6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620004dd57607f821691505b602082108103620004fe57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200055257600081815260208120601f850160051c810160208610156200052d5750805b601f850160051c820191505b818110156200054e5782815560010162000539565b5050505b505050565b81516001600160401b03811115620005735762000573620004b2565b6200058b81620005848454620004c8565b8462000504565b602080601f831160018114620005c35760008415620005aa5750858301515b600019600386901b1c1916600185901b1785556200054e565b600085815260208120601f198616915b82811015620005f457888601518255948401946001909101908401620005d3565b5085821015620006135787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200067a5781600019048211156200065e576200065e62000623565b808516156200066c57918102915b93841c93908002906200063e565b509250929050565b600082620006935750600162000732565b81620006a25750600062000732565b8160018114620006bb5760028114620006c657620006e6565b600191505062000732565b60ff841115620006da57620006da62000623565b50506001821b62000732565b5060208310610133831016604e8410600b84101617156200070b575081810a62000732565b62000717838362000639565b80600019048211156200072e576200072e62000623565b0290505b92915050565b60006200074960ff84168362000682565b9392505050565b60008160001904831182151516156200076d576200076d62000623565b500290565b6000826200079057634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215620007a857600080fd5b81516001600160a01b03811681146200074957600080fd5b608051612620620007e36000396000818161047d015261219501526126206000f3fe6080604052600436106103545760003560e01c80638cd0260c116101c6578063bf9b0159116100f7578063dd62ed3e11610095578063edcf19b21161006f578063edcf19b214610985578063f2fde38b146109a5578063f7da6785146109c5578063f953cf3a146109e557600080fd5b8063dd62ed3e14610915578063ddcf9b981461095b578063e1370dd31461097057600080fd5b8063cba0e996116100d1578063cba0e99614610884578063d1294d4c146108bd578063d15bcf0f146108dd578063d7d7442f146108f557600080fd5b8063bf9b01591461082f578063bf9eb54014610844578063cb6645341461086457600080fd5b8063a04bdc8111610164578063a7a074521161013e578063a7a074521461079f578063a9059cbb146107bf578063b4d95a93146107df578063b62496f5146107ff57600080fd5b8063a04bdc8114610749578063a5ece9411461075f578063a6c38f591461077f57600080fd5b806395d89b41116101a057806395d89b41146106ea5780639a7a23d6146106ff5780639b136da41461071f5780639c5c3d0d1461073457600080fd5b80638cd0260c146106b55780638da5cb5b1461069757806390f50283146106d557600080fd5b80634a0e963c116102a05780636df3333a1161023e57806376b662371161021857806376b6623714610642578063801527ce146106575780638628c23f14610677578063893d20e81461069757600080fd5b80636df3333a146105e257806370a08231146105f7578063715018a61461062d57600080fd5b80635297defd1161027a5780635297defd146105785780635be76f111461058d57806364c16163146105ad5780636573c4df146105c257600080fd5b80634a0e963c146105245780634a74bb02146105445780634bd7ace51461056357600080fd5b806322788f861161030d5780632d03420b116102e75780632d03420b146104b7578063313ce567146104d7578063487a6905146104ef57806349bd5a5e1461050457600080fd5b806322788f861461043657806323b872dd1461044b57806327c8f8351461046b57600080fd5b806306fdde03146103605780630882a8631461038b578063095ea7b3146103ad57806313b4a7f4146103dd57806318160ddd146103fd578063220f66961461041c57600080fd5b3661035b57005b600080fd5b34801561036c57600080fd5b506103756109fa565b604051610382919061221a565b60405180910390f35b34801561039757600080fd5b506103ab6103a636600461226f565b610a8c565b005b3480156103b957600080fd5b506103cd6103c836600461229d565b610ae5565b6040519015158152602001610382565b3480156103e957600080fd5b506103ab6103f83660046122c9565b610afb565b34801561040957600080fd5b506009545b604051908152602001610382565b34801561042857600080fd5b506022546103cd9060ff1681565b34801561044257600080fd5b5060085461040e565b34801561045757600080fd5b506103cd610466366004612302565b610b85565b34801561047757600080fd5b5061049f7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610382565b3480156104c357600080fd5b506103ab6104d2366004612351565b610c59565b3480156104e357600080fd5b5060035460ff1661040e565b3480156104fb57600080fd5b50600a5461040e565b34801561051057600080fd5b5060265461049f906001600160a01b031681565b34801561053057600080fd5b506103ab61053f366004612375565b610c96565b34801561055057600080fd5b506022546103cd90610100900460ff1681565b34801561056f57600080fd5b5060175461040e565b34801561058457600080fd5b50601f5461040e565b34801561059957600080fd5b506103ab6105a8366004612375565b610ce4565b3480156105b957600080fd5b5060245461040e565b3480156105ce57600080fd5b506103ab6105dd36600461226f565b610d4b565b3480156105ee57600080fd5b5060075461040e565b34801561060357600080fd5b5061040e610612366004612375565b6001600160a01b03166000908152600b602052604090205490565b34801561063957600080fd5b506103ab610deb565b34801561064e57600080fd5b506103ab610e21565b34801561066357600080fd5b506103ab610672366004612351565b610e69565b34801561068357600080fd5b506103ab61069236600461226f565b610ead565b3480156106a357600080fd5b506000546001600160a01b031661049f565b3480156106c157600080fd5b506103ab6106d036600461226f565b610efd565b3480156106e157600080fd5b50601d5461040e565b3480156106f657600080fd5b50610375610f4d565b34801561070b57600080fd5b506103ab61071a366004612392565b610f5c565b34801561072b57600080fd5b5060195461040e565b34801561074057600080fd5b506103ab611018565b34801561075557600080fd5b5061040e600a5481565b34801561076b57600080fd5b5060105461049f906001600160a01b031681565b34801561078b57600080fd5b506103ab61079a366004612392565b6110c8565b3480156107ab57600080fd5b506103ab6107ba36600461226f565b61111d565b3480156107cb57600080fd5b506103cd6107da36600461229d565b6111bd565b3480156107eb57600080fd5b506103ab6107fa366004612375565b6111ca565b34801561080b57600080fd5b506103cd61081a366004612375565b600e6020526000908152604090205460ff1681565b34801561083b57600080fd5b5060125461040e565b34801561085057600080fd5b506103ab61085f366004612375565b611215565b34801561087057600080fd5b506103ab61087f366004612375565b611261565b34801561089057600080fd5b506103cd61089f366004612375565b6001600160a01b03166000908152600c602052604090205460ff1690565b3480156108c957600080fd5b506103ab6108d836600461226f565b6112af565b3480156108e957600080fd5b50601c5460ff166103cd565b34801561090157600080fd5b506103ab61091036600461226f565b611300565b34801561092157600080fd5b5061040e6109303660046122c9565b6001600160a01b039182166000908152600d6020908152604080832093909416825291909152205490565b34801561096757600080fd5b5060235461040e565b34801561097c57600080fd5b5060115461040e565b34801561099157600080fd5b506103ab6109a036600461226f565b61132f565b3480156109b157600080fd5b506103ab6109c0366004612375565b61137f565b3480156109d157600080fd5b506103ab6109e0366004612302565b61141a565b3480156109f157600080fd5b506103ab6114bd565b606060018054610a09906123c0565b80601f0160208091040260200160405190810160405280929190818152602001828054610a35906123c0565b8015610a825780601f10610a5757610100808354040283529160200191610a82565b820191906000526020600020905b815481529060010190602001808311610a6557829003601f168201915b5050505050905090565b6000546001600160a01b03163314610abf5760405162461bcd60e51b8152600401610ab6906123fa565b60405180910390fd5b6021548110610ae05760405162461bcd60e51b8152600401610ab69061242f565b601755565b6000610af2338484611508565b50600192915050565b6000546001600160a01b03163314610b255760405162461bcd60e51b8152600401610ab6906123fa565b6001600160a01b0391821660008181526015602090815260408083208054600160ff199182168117909255959096168084528184208054871688179055938352601690915280822080548516861790559181522080549091169091179055565b6001600160a01b0383166000908152600d60209081526040808320338452909152812054821115610c095760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610ab6565b610c1484848461162c565b6001600160a01b0384166000908152600d6020908152604080832033808552925290912054610c4f918691610c4a90869061247c565b611508565b5060019392505050565b6000546001600160a01b03163314610c835760405162461bcd60e51b8152600401610ab6906123fa565b601c805460ff1916911515919091179055565b6000546001600160a01b03163314610cc05760405162461bcd60e51b8152600401610ab6906123fa565b6001600160a01b03166000908152600c60205260409020805460ff19166001179055565b6000546001600160a01b03163314610d0e5760405162461bcd60e51b8152600401610ab6906123fa565b60405147906001600160a01b0383169082156108fc029083906000818181858888f19350505050158015610d46573d6000803e3d6000fd5b505050565b6000546001600160a01b03163314610d755760405162461bcd60e51b8152600401610ab6906123fa565b60018111610dc55760405162461bcd60e51b815260206004820152601e60248201527f6e657756616c2063616e206e6f74206265206c6f776572207468616e203100006044820152606401610ab6565b6005819055600954606490610ddb908390612493565b610de591906124b2565b60115550565b6000546001600160a01b03163314610e155760405162461bcd60e51b8152600401610ab6906123fa565b610e1f6000611d2d565b565b6000546001600160a01b03163314610e4b5760405162461bcd60e51b8152600401610ab6906123fa565b601854601755601a54601955610e6442620151806124d4565b601b55565b6000546001600160a01b03163314610e935760405162461bcd60e51b8152600401610ab6906123fa565b602280549115156101000261ff0019909216919091179055565b6000546001600160a01b03163314610ed75760405162461bcd60e51b8152600401610ab6906123fa565b6021548110610ef85760405162461bcd60e51b8152600401610ab69061242f565b601f55565b6000546001600160a01b03163314610f275760405162461bcd60e51b8152600401610ab6906123fa565b6021548110610f485760405162461bcd60e51b8152600401610ab69061242f565b601d55565b606060028054610a09906123c0565b6000546001600160a01b03163314610f865760405162461bcd60e51b8152600401610ab6906123fa565b6026546001600160a01b039081169083160361100a5760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610ab6565b6110148282611d7d565b5050565b6000546001600160a01b031633146110425760405162461bcd60e51b8152600401610ab6906123fa565b601b5442116110b05760405162461bcd60e51b815260206004820152603460248201527f596f752063616e742063616c6c20475552494d49434f494e436f696e446179206044820152736d6f7265207468616e206f6e636520612064617960601b6064820152608401610ab6565b60198054601a55601780546018556000908190559055565b6000546001600160a01b031633146110f25760405162461bcd60e51b8152600401610ab6906123fa565b6001600160a01b03919091166000908152601360205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146111475760405162461bcd60e51b8152600401610ab6906123fa565b600181116111975760405162461bcd60e51b815260206004820152601e60248201527f6e657756616c2063616e206e6f74206265206c6f776572207468616e203100006044820152606401610ab6565b60068190556009546064906111ad908390612493565b6111b791906124b2565b60125550565b6000610af233848461162c565b6000546001600160a01b031633146111f45760405162461bcd60e51b8152600401610ab6906123fa565b6001600160a01b03166000908152600c60205260409020805460ff19169055565b6000546001600160a01b0316331461123f5760405162461bcd60e51b8152600401610ab6906123fa565b601080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461128b5760405162461bcd60e51b8152600401610ab6906123fa565b6001600160a01b03166000908152601560205260409020805460ff19166001179055565b6000546001600160a01b031633146112d95760405162461bcd60e51b8152600401610ab6906123fa565b60078190556009546103e8906112f0908390612493565b6112fa91906124b2565b600a5550565b6000546001600160a01b0316331461132a5760405162461bcd60e51b8152600401610ab6906123fa565b600855565b6000546001600160a01b031633146113595760405162461bcd60e51b8152600401610ab6906123fa565b602154811061137a5760405162461bcd60e51b8152600401610ab69061242f565b601955565b6000546001600160a01b031633146113a95760405162461bcd60e51b8152600401610ab6906123fa565b6001600160a01b03811661140e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ab6565b61141781611d2d565b50565b6000546001600160a01b031633146114445760405162461bcd60e51b8152600401610ab6906123fa565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303816000875af1158015611493573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114b791906124ec565b50505050565b6000546001600160a01b031633146114e75760405162461bcd60e51b8152600401610ab6906123fa565b6004601981905560026017819055601f91909155601d55610e1f6001610e69565b6001600160a01b03831661156a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610ab6565b6001600160a01b0382166115cb5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610ab6565b6001600160a01b038381166000818152600d602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166116905760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610ab6565b6001600160a01b0382166116f25760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610ab6565b6000811161175d5760405162461bcd60e51b815260206004820152603260248201527f45524332303a207472616e73666572656420616d6f756e74206d7573742062656044820152712067726561746572207468616e207a65726f60701b6064820152608401610ab6565b6001600160a01b0383166000908152600b6020526040902054818110156117d55760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610ab6565b601c5460ff16151560000361186f576001600160a01b03831660009081526015602052604090205460ff168061182357506001600160a01b03841660009081526015602052604090205460ff165b61186f5760405162461bcd60e51b815260206004820152601d60248201527f43616e742074726164652c2074726164652069732064697361626c65640000006044820152606401610ab6565b6001600160a01b03831660009081526015602052604090205460ff161580156118b157506001600160a01b03841660009081526015602052604090205460ff16155b15611967576012548211156119195760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610ab6565b6026546001600160a01b03908116908516036119675760115482611952856001600160a01b03166000908152600b602052604090205490565b61195c91906124d4565b111561196757600080fd5b306000908152600b6020526040902054600a54811080159061198c575060225460ff16155b80156119a657506026546001600160a01b03868116911614155b80156119b95750602254610100900460ff165b156119d457600a5481106119d45750600a546119d481611dd1565b6001600160a01b0385166000908152600c602052604090205460019060ff1680611a1657506001600160a01b0385166000908152600c602052604090205460ff165b15611a245750600060048190555b6000808215611bc7576001600160a01b03881660009081526013602052604090205460ff16151560011480611a7657506001600160a01b03871660009081526013602052604090205460ff1615156001145b15611ab75760405162461bcd60e51b81526020600482015260116024820152704e6f20626f74732063616e20747261646560781b6044820152606401610ab6565b6001600160a01b0387166000908152600e602052604090205460ff168015611aed57506025546001600160a01b03888116911614155b15611b41576000600455601f54606490611b079088612493565b611b1191906124b2565b91506064601d5487611b239190612493565b611b2d91906124b2565b9050611b3981836124d4565b600455611bc7565b6001600160a01b0388166000908152600e602052604090205460ff168015611b7757506025546001600160a01b03898116911614155b15611bc7576000600455601954606490611b919088612493565b611b9b91906124b2565b9150606460175487611bad9190612493565b611bb791906124b2565b9050611bc381836124d4565b6004555b611bd1868661247c565b6001600160a01b0389166000908152600b602052604090205580611bf5838861247c565b611bff919061247c565b6001600160a01b0388166000908152600b602052604081208054909190611c279084906124d4565b90915550508015611ccf57600454306000908152600b602052604081208054909190611c549084906124d4565b925050819055508060246000828254611c6d91906124d4565b925050819055508160236000828254611c8691906124d4565b909155505060045460405190815230906001600160a01b038a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b866001600160a01b0316886001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60045489611d12919061247c565b60405190815260200160405180910390a35050505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0382166000818152600e6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6022805460ff19166001179055602454611dea90611e3f565b611df5602354611ec6565b6040518181527f4596ef7337c1c88bb740707471cfc0ec6d0212036b05ab1bdbb09cf3e3f019049060200160405180910390a150600060238190556024556022805460ff19169055565b6000611e4c6002836124b2565b90506000611e5a828461247c565b905047611e6683612024565b6000611e72824761247c565b9050611e7e8382612148565b60408051858152602081018390529081018490527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611efb57611efb612509565b6001600160a01b03928316602091820292909201810191909152602554604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611f54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f78919061251f565b81600181518110611f8b57611f8b612509565b6001600160a01b039283166020918202929092010152602554611fb19130911684611508565b60255460105460405163791ac94760e01b81526001600160a01b039283169263791ac94792611fee92879260009288929116904290600401612580565b600060405180830381600087803b15801561200857600080fd5b505af115801561201c573d6000803e3d6000fd5b505050505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061205957612059612509565b6001600160a01b03928316602091820292909201810191909152602554604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156120b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120d6919061251f565b816001815181106120e9576120e9612509565b6001600160a01b03928316602091820292909201015260255461210f9130911684611508565b60255460405163791ac94760e01b81526001600160a01b039091169063791ac94790611fee908590600090869030904290600401612580565b6025546121609030906001600160a01b031684611508565b60255460405163f305d71960e01b81523060048201526024810184905260006044820181905260648201526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660848301524260a48301529091169063f305d71990839060c40160606040518083038185885af11580156121ee573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061221391906125bc565b5050505050565b600060208083528351808285015260005b818110156122475785810183015185820160400152820161222b565b81811115612259576000604083870101525b50601f01601f1916929092016040019392505050565b60006020828403121561228157600080fd5b5035919050565b6001600160a01b038116811461141757600080fd5b600080604083850312156122b057600080fd5b82356122bb81612288565b946020939093013593505050565b600080604083850312156122dc57600080fd5b82356122e781612288565b915060208301356122f781612288565b809150509250929050565b60008060006060848603121561231757600080fd5b833561232281612288565b9250602084013561233281612288565b929592945050506040919091013590565b801515811461141757600080fd5b60006020828403121561236357600080fd5b813561236e81612343565b9392505050565b60006020828403121561238757600080fd5b813561236e81612288565b600080604083850312156123a557600080fd5b82356123b081612288565b915060208301356122f781612343565b600181811c908216806123d457607f821691505b6020821081036123f457634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601c908201527f6e6577416d6f756e742065786365656473206d61784665655365742000000000604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008282101561248e5761248e612466565b500390565b60008160001904831182151516156124ad576124ad612466565b500290565b6000826124cf57634e487b7160e01b600052601260045260246000fd5b500490565b600082198211156124e7576124e7612466565b500190565b6000602082840312156124fe57600080fd5b815161236e81612343565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561253157600080fd5b815161236e81612288565b600081518084526020808501945080840160005b838110156125755781516001600160a01b031687529582019590820190600101612550565b509495945050505050565b85815284602082015260a06040820152600061259f60a083018661253c565b6001600160a01b0394909416606083015250608001529392505050565b6000806000606084860312156125d157600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212202445943dc73a5607bae95e01e98d4804c5943c7f95a83bf06bc2546aba392d3364736f6c634300080f0033
Deployed Bytecode
0x6080604052600436106103545760003560e01c80638cd0260c116101c6578063bf9b0159116100f7578063dd62ed3e11610095578063edcf19b21161006f578063edcf19b214610985578063f2fde38b146109a5578063f7da6785146109c5578063f953cf3a146109e557600080fd5b8063dd62ed3e14610915578063ddcf9b981461095b578063e1370dd31461097057600080fd5b8063cba0e996116100d1578063cba0e99614610884578063d1294d4c146108bd578063d15bcf0f146108dd578063d7d7442f146108f557600080fd5b8063bf9b01591461082f578063bf9eb54014610844578063cb6645341461086457600080fd5b8063a04bdc8111610164578063a7a074521161013e578063a7a074521461079f578063a9059cbb146107bf578063b4d95a93146107df578063b62496f5146107ff57600080fd5b8063a04bdc8114610749578063a5ece9411461075f578063a6c38f591461077f57600080fd5b806395d89b41116101a057806395d89b41146106ea5780639a7a23d6146106ff5780639b136da41461071f5780639c5c3d0d1461073457600080fd5b80638cd0260c146106b55780638da5cb5b1461069757806390f50283146106d557600080fd5b80634a0e963c116102a05780636df3333a1161023e57806376b662371161021857806376b6623714610642578063801527ce146106575780638628c23f14610677578063893d20e81461069757600080fd5b80636df3333a146105e257806370a08231146105f7578063715018a61461062d57600080fd5b80635297defd1161027a5780635297defd146105785780635be76f111461058d57806364c16163146105ad5780636573c4df146105c257600080fd5b80634a0e963c146105245780634a74bb02146105445780634bd7ace51461056357600080fd5b806322788f861161030d5780632d03420b116102e75780632d03420b146104b7578063313ce567146104d7578063487a6905146104ef57806349bd5a5e1461050457600080fd5b806322788f861461043657806323b872dd1461044b57806327c8f8351461046b57600080fd5b806306fdde03146103605780630882a8631461038b578063095ea7b3146103ad57806313b4a7f4146103dd57806318160ddd146103fd578063220f66961461041c57600080fd5b3661035b57005b600080fd5b34801561036c57600080fd5b506103756109fa565b604051610382919061221a565b60405180910390f35b34801561039757600080fd5b506103ab6103a636600461226f565b610a8c565b005b3480156103b957600080fd5b506103cd6103c836600461229d565b610ae5565b6040519015158152602001610382565b3480156103e957600080fd5b506103ab6103f83660046122c9565b610afb565b34801561040957600080fd5b506009545b604051908152602001610382565b34801561042857600080fd5b506022546103cd9060ff1681565b34801561044257600080fd5b5060085461040e565b34801561045757600080fd5b506103cd610466366004612302565b610b85565b34801561047757600080fd5b5061049f7f000000000000000000000000000000000000000000000000000000000000dead81565b6040516001600160a01b039091168152602001610382565b3480156104c357600080fd5b506103ab6104d2366004612351565b610c59565b3480156104e357600080fd5b5060035460ff1661040e565b3480156104fb57600080fd5b50600a5461040e565b34801561051057600080fd5b5060265461049f906001600160a01b031681565b34801561053057600080fd5b506103ab61053f366004612375565b610c96565b34801561055057600080fd5b506022546103cd90610100900460ff1681565b34801561056f57600080fd5b5060175461040e565b34801561058457600080fd5b50601f5461040e565b34801561059957600080fd5b506103ab6105a8366004612375565b610ce4565b3480156105b957600080fd5b5060245461040e565b3480156105ce57600080fd5b506103ab6105dd36600461226f565b610d4b565b3480156105ee57600080fd5b5060075461040e565b34801561060357600080fd5b5061040e610612366004612375565b6001600160a01b03166000908152600b602052604090205490565b34801561063957600080fd5b506103ab610deb565b34801561064e57600080fd5b506103ab610e21565b34801561066357600080fd5b506103ab610672366004612351565b610e69565b34801561068357600080fd5b506103ab61069236600461226f565b610ead565b3480156106a357600080fd5b506000546001600160a01b031661049f565b3480156106c157600080fd5b506103ab6106d036600461226f565b610efd565b3480156106e157600080fd5b50601d5461040e565b3480156106f657600080fd5b50610375610f4d565b34801561070b57600080fd5b506103ab61071a366004612392565b610f5c565b34801561072b57600080fd5b5060195461040e565b34801561074057600080fd5b506103ab611018565b34801561075557600080fd5b5061040e600a5481565b34801561076b57600080fd5b5060105461049f906001600160a01b031681565b34801561078b57600080fd5b506103ab61079a366004612392565b6110c8565b3480156107ab57600080fd5b506103ab6107ba36600461226f565b61111d565b3480156107cb57600080fd5b506103cd6107da36600461229d565b6111bd565b3480156107eb57600080fd5b506103ab6107fa366004612375565b6111ca565b34801561080b57600080fd5b506103cd61081a366004612375565b600e6020526000908152604090205460ff1681565b34801561083b57600080fd5b5060125461040e565b34801561085057600080fd5b506103ab61085f366004612375565b611215565b34801561087057600080fd5b506103ab61087f366004612375565b611261565b34801561089057600080fd5b506103cd61089f366004612375565b6001600160a01b03166000908152600c602052604090205460ff1690565b3480156108c957600080fd5b506103ab6108d836600461226f565b6112af565b3480156108e957600080fd5b50601c5460ff166103cd565b34801561090157600080fd5b506103ab61091036600461226f565b611300565b34801561092157600080fd5b5061040e6109303660046122c9565b6001600160a01b039182166000908152600d6020908152604080832093909416825291909152205490565b34801561096757600080fd5b5060235461040e565b34801561097c57600080fd5b5060115461040e565b34801561099157600080fd5b506103ab6109a036600461226f565b61132f565b3480156109b157600080fd5b506103ab6109c0366004612375565b61137f565b3480156109d157600080fd5b506103ab6109e0366004612302565b61141a565b3480156109f157600080fd5b506103ab6114bd565b606060018054610a09906123c0565b80601f0160208091040260200160405190810160405280929190818152602001828054610a35906123c0565b8015610a825780601f10610a5757610100808354040283529160200191610a82565b820191906000526020600020905b815481529060010190602001808311610a6557829003601f168201915b5050505050905090565b6000546001600160a01b03163314610abf5760405162461bcd60e51b8152600401610ab6906123fa565b60405180910390fd5b6021548110610ae05760405162461bcd60e51b8152600401610ab69061242f565b601755565b6000610af2338484611508565b50600192915050565b6000546001600160a01b03163314610b255760405162461bcd60e51b8152600401610ab6906123fa565b6001600160a01b0391821660008181526015602090815260408083208054600160ff199182168117909255959096168084528184208054871688179055938352601690915280822080548516861790559181522080549091169091179055565b6001600160a01b0383166000908152600d60209081526040808320338452909152812054821115610c095760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610ab6565b610c1484848461162c565b6001600160a01b0384166000908152600d6020908152604080832033808552925290912054610c4f918691610c4a90869061247c565b611508565b5060019392505050565b6000546001600160a01b03163314610c835760405162461bcd60e51b8152600401610ab6906123fa565b601c805460ff1916911515919091179055565b6000546001600160a01b03163314610cc05760405162461bcd60e51b8152600401610ab6906123fa565b6001600160a01b03166000908152600c60205260409020805460ff19166001179055565b6000546001600160a01b03163314610d0e5760405162461bcd60e51b8152600401610ab6906123fa565b60405147906001600160a01b0383169082156108fc029083906000818181858888f19350505050158015610d46573d6000803e3d6000fd5b505050565b6000546001600160a01b03163314610d755760405162461bcd60e51b8152600401610ab6906123fa565b60018111610dc55760405162461bcd60e51b815260206004820152601e60248201527f6e657756616c2063616e206e6f74206265206c6f776572207468616e203100006044820152606401610ab6565b6005819055600954606490610ddb908390612493565b610de591906124b2565b60115550565b6000546001600160a01b03163314610e155760405162461bcd60e51b8152600401610ab6906123fa565b610e1f6000611d2d565b565b6000546001600160a01b03163314610e4b5760405162461bcd60e51b8152600401610ab6906123fa565b601854601755601a54601955610e6442620151806124d4565b601b55565b6000546001600160a01b03163314610e935760405162461bcd60e51b8152600401610ab6906123fa565b602280549115156101000261ff0019909216919091179055565b6000546001600160a01b03163314610ed75760405162461bcd60e51b8152600401610ab6906123fa565b6021548110610ef85760405162461bcd60e51b8152600401610ab69061242f565b601f55565b6000546001600160a01b03163314610f275760405162461bcd60e51b8152600401610ab6906123fa565b6021548110610f485760405162461bcd60e51b8152600401610ab69061242f565b601d55565b606060028054610a09906123c0565b6000546001600160a01b03163314610f865760405162461bcd60e51b8152600401610ab6906123fa565b6026546001600160a01b039081169083160361100a5760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610ab6565b6110148282611d7d565b5050565b6000546001600160a01b031633146110425760405162461bcd60e51b8152600401610ab6906123fa565b601b5442116110b05760405162461bcd60e51b815260206004820152603460248201527f596f752063616e742063616c6c20475552494d49434f494e436f696e446179206044820152736d6f7265207468616e206f6e636520612064617960601b6064820152608401610ab6565b60198054601a55601780546018556000908190559055565b6000546001600160a01b031633146110f25760405162461bcd60e51b8152600401610ab6906123fa565b6001600160a01b03919091166000908152601360205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146111475760405162461bcd60e51b8152600401610ab6906123fa565b600181116111975760405162461bcd60e51b815260206004820152601e60248201527f6e657756616c2063616e206e6f74206265206c6f776572207468616e203100006044820152606401610ab6565b60068190556009546064906111ad908390612493565b6111b791906124b2565b60125550565b6000610af233848461162c565b6000546001600160a01b031633146111f45760405162461bcd60e51b8152600401610ab6906123fa565b6001600160a01b03166000908152600c60205260409020805460ff19169055565b6000546001600160a01b0316331461123f5760405162461bcd60e51b8152600401610ab6906123fa565b601080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461128b5760405162461bcd60e51b8152600401610ab6906123fa565b6001600160a01b03166000908152601560205260409020805460ff19166001179055565b6000546001600160a01b031633146112d95760405162461bcd60e51b8152600401610ab6906123fa565b60078190556009546103e8906112f0908390612493565b6112fa91906124b2565b600a5550565b6000546001600160a01b0316331461132a5760405162461bcd60e51b8152600401610ab6906123fa565b600855565b6000546001600160a01b031633146113595760405162461bcd60e51b8152600401610ab6906123fa565b602154811061137a5760405162461bcd60e51b8152600401610ab69061242f565b601955565b6000546001600160a01b031633146113a95760405162461bcd60e51b8152600401610ab6906123fa565b6001600160a01b03811661140e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ab6565b61141781611d2d565b50565b6000546001600160a01b031633146114445760405162461bcd60e51b8152600401610ab6906123fa565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303816000875af1158015611493573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114b791906124ec565b50505050565b6000546001600160a01b031633146114e75760405162461bcd60e51b8152600401610ab6906123fa565b6004601981905560026017819055601f91909155601d55610e1f6001610e69565b6001600160a01b03831661156a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610ab6565b6001600160a01b0382166115cb5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610ab6565b6001600160a01b038381166000818152600d602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166116905760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610ab6565b6001600160a01b0382166116f25760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610ab6565b6000811161175d5760405162461bcd60e51b815260206004820152603260248201527f45524332303a207472616e73666572656420616d6f756e74206d7573742062656044820152712067726561746572207468616e207a65726f60701b6064820152608401610ab6565b6001600160a01b0383166000908152600b6020526040902054818110156117d55760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610ab6565b601c5460ff16151560000361186f576001600160a01b03831660009081526015602052604090205460ff168061182357506001600160a01b03841660009081526015602052604090205460ff165b61186f5760405162461bcd60e51b815260206004820152601d60248201527f43616e742074726164652c2074726164652069732064697361626c65640000006044820152606401610ab6565b6001600160a01b03831660009081526015602052604090205460ff161580156118b157506001600160a01b03841660009081526015602052604090205460ff16155b15611967576012548211156119195760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610ab6565b6026546001600160a01b03908116908516036119675760115482611952856001600160a01b03166000908152600b602052604090205490565b61195c91906124d4565b111561196757600080fd5b306000908152600b6020526040902054600a54811080159061198c575060225460ff16155b80156119a657506026546001600160a01b03868116911614155b80156119b95750602254610100900460ff165b156119d457600a5481106119d45750600a546119d481611dd1565b6001600160a01b0385166000908152600c602052604090205460019060ff1680611a1657506001600160a01b0385166000908152600c602052604090205460ff165b15611a245750600060048190555b6000808215611bc7576001600160a01b03881660009081526013602052604090205460ff16151560011480611a7657506001600160a01b03871660009081526013602052604090205460ff1615156001145b15611ab75760405162461bcd60e51b81526020600482015260116024820152704e6f20626f74732063616e20747261646560781b6044820152606401610ab6565b6001600160a01b0387166000908152600e602052604090205460ff168015611aed57506025546001600160a01b03888116911614155b15611b41576000600455601f54606490611b079088612493565b611b1191906124b2565b91506064601d5487611b239190612493565b611b2d91906124b2565b9050611b3981836124d4565b600455611bc7565b6001600160a01b0388166000908152600e602052604090205460ff168015611b7757506025546001600160a01b03898116911614155b15611bc7576000600455601954606490611b919088612493565b611b9b91906124b2565b9150606460175487611bad9190612493565b611bb791906124b2565b9050611bc381836124d4565b6004555b611bd1868661247c565b6001600160a01b0389166000908152600b602052604090205580611bf5838861247c565b611bff919061247c565b6001600160a01b0388166000908152600b602052604081208054909190611c279084906124d4565b90915550508015611ccf57600454306000908152600b602052604081208054909190611c549084906124d4565b925050819055508060246000828254611c6d91906124d4565b925050819055508160236000828254611c8691906124d4565b909155505060045460405190815230906001600160a01b038a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b866001600160a01b0316886001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60045489611d12919061247c565b60405190815260200160405180910390a35050505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0382166000818152600e6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6022805460ff19166001179055602454611dea90611e3f565b611df5602354611ec6565b6040518181527f4596ef7337c1c88bb740707471cfc0ec6d0212036b05ab1bdbb09cf3e3f019049060200160405180910390a150600060238190556024556022805460ff19169055565b6000611e4c6002836124b2565b90506000611e5a828461247c565b905047611e6683612024565b6000611e72824761247c565b9050611e7e8382612148565b60408051858152602081018390529081018490527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611efb57611efb612509565b6001600160a01b03928316602091820292909201810191909152602554604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611f54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f78919061251f565b81600181518110611f8b57611f8b612509565b6001600160a01b039283166020918202929092010152602554611fb19130911684611508565b60255460105460405163791ac94760e01b81526001600160a01b039283169263791ac94792611fee92879260009288929116904290600401612580565b600060405180830381600087803b15801561200857600080fd5b505af115801561201c573d6000803e3d6000fd5b505050505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061205957612059612509565b6001600160a01b03928316602091820292909201810191909152602554604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156120b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120d6919061251f565b816001815181106120e9576120e9612509565b6001600160a01b03928316602091820292909201015260255461210f9130911684611508565b60255460405163791ac94760e01b81526001600160a01b039091169063791ac94790611fee908590600090869030904290600401612580565b6025546121609030906001600160a01b031684611508565b60255460405163f305d71960e01b81523060048201526024810184905260006044820181905260648201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000dead811660848301524260a48301529091169063f305d71990839060c40160606040518083038185885af11580156121ee573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061221391906125bc565b5050505050565b600060208083528351808285015260005b818110156122475785810183015185820160400152820161222b565b81811115612259576000604083870101525b50601f01601f1916929092016040019392505050565b60006020828403121561228157600080fd5b5035919050565b6001600160a01b038116811461141757600080fd5b600080604083850312156122b057600080fd5b82356122bb81612288565b946020939093013593505050565b600080604083850312156122dc57600080fd5b82356122e781612288565b915060208301356122f781612288565b809150509250929050565b60008060006060848603121561231757600080fd5b833561232281612288565b9250602084013561233281612288565b929592945050506040919091013590565b801515811461141757600080fd5b60006020828403121561236357600080fd5b813561236e81612343565b9392505050565b60006020828403121561238757600080fd5b813561236e81612288565b600080604083850312156123a557600080fd5b82356123b081612288565b915060208301356122f781612343565b600181811c908216806123d457607f821691505b6020821081036123f457634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601c908201527f6e6577416d6f756e742065786365656473206d61784665655365742000000000604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008282101561248e5761248e612466565b500390565b60008160001904831182151516156124ad576124ad612466565b500290565b6000826124cf57634e487b7160e01b600052601260045260246000fd5b500490565b600082198211156124e7576124e7612466565b500190565b6000602082840312156124fe57600080fd5b815161236e81612343565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561253157600080fd5b815161236e81612288565b600081518084526020808501945080840160005b838110156125755781516001600160a01b031687529582019590820190600101612550565b509495945050505050565b85815284602082015260a06040820152600061259f60a083018661253c565b6001600160a01b0394909416606083015250608001529392505050565b6000806000606084860312156125d157600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212202445943dc73a5607bae95e01e98d4804c5943c7f95a83bf06bc2546aba392d3364736f6c634300080f0033
Deployed Bytecode Sourcemap
4857:14321:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9040:75;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17897:169;;;;;;;;;;-1:-1:-1;17897:169:0;;;;;:::i;:::-;;:::i;:::-;;8810:152;;;;;;;;;;-1:-1:-1;8810:152:0;;;;;:::i;:::-;;:::i;:::-;;;1422:14:1;;1415:22;1397:41;;1385:2;1370:18;8810:152:0;1257:187:1;16644:256:0;;;;;;;;;;-1:-1:-1;16644:256:0;;;;;:::i;:::-;;:::i;8303:95::-;;;;;;;;;;-1:-1:-1;8382:12:0;;8303:95;;;1988:25:1;;;1976:2;1961:18;8303:95:0;1842:177:1;6524:28:0;;;;;;;;;;-1:-1:-1;6524:28:0;;;;;;;;10914:91;;;;;;;;;;-1:-1:-1;10985:16:0;;10914:91;;9625:356;;;;;;;;;;-1:-1:-1;9625:356:0;;;;;:::i;:::-;;:::i;6598:81::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2649:32:1;;;2631:51;;2619:2;2604:18;6598:81:0;2485:203:1;14930:80:0;;;;;;;;;;-1:-1:-1;14930:80:0;;;;;:::i;:::-;;:::i;8964:74::-;;;;;;;;;;-1:-1:-1;9025:9:0;;;;8964:74;;19080:95;;;;;;;;;;-1:-1:-1;19151:20:0;;19080:95;;7058:28;;;;;;;;;;-1:-1:-1;7058:28:0;;;;-1:-1:-1;;;;;7058:28:0;;;16432:102;;;;;;;;;;-1:-1:-1;16432:102:0;;;;;:::i;:::-;;:::i;6555:40::-;;;;;;;;;;-1:-1:-1;6555:40:0;;;;;;;;;;;10558:86;;;;;;;;;;-1:-1:-1;10631:9:0;;10558:86;;10824:88;;;;;;;;;;-1:-1:-1;10898:10:0;;10824:88;;14766:162;;;;;;;;;;-1:-1:-1;14766:162:0;;;;;:::i;:::-;;:::i;8213:88::-;;;;;;;;;;-1:-1:-1;8288:9:0;;8213:88;;9406:217;;;;;;;;;;-1:-1:-1;9406:217:0;;;;;:::i;:::-;;:::i;18991:87::-;;;;;;;;;;-1:-1:-1;19062:12:0;;18991:87;;8400:108;;;;;;;;;;-1:-1:-1;8400:108:0;;;;;:::i;:::-;-1:-1:-1;;;;;8486:18:0;8466:7;8486:18;;;:9;:18;;;;;;;8400:108;4309:84;;;;;;;;;;;;;:::i;10266:168::-;;;;;;;;;;;;;:::i;17156:103::-;;;;;;;;;;-1:-1:-1;17156:103:0;;;;;:::i;:::-;;:::i;18413:170::-;;;;;;;;;;-1:-1:-1;18413:170:0;;;;;:::i;:::-;;:::i;8045:76::-;;;;;;;;;;-1:-1:-1;8086:7:0;3811:6;-1:-1:-1;;;;;3811:6:0;8045:76;;18239:172;;;;;;;;;;-1:-1:-1;18239:172:0;;;;;:::i;:::-;;:::i;10734:88::-;;;;;;;;;;-1:-1:-1;10808:10:0;;10734:88;;9117:78;;;;;;;;;;;;;:::i;17497:226::-;;;;;;;;;;-1:-1:-1;17497:226:0;;;;;:::i;:::-;;:::i;10646:86::-;;;;;;;;;;-1:-1:-1;10719:9:0;;10646:86;;10015:249;;;;;;;;;;;;;:::i;5356:71::-;;;;;;;;;;;;;;;;5683:93;;;;;;;;;;-1:-1:-1;5683:93:0;;;;-1:-1:-1;;;;;5683:93:0;;;10436:120;;;;;;;;;;-1:-1:-1;10436:120:0;;;;;:::i;:::-;;:::i;9199:205::-;;;;;;;;;;-1:-1:-1;9199:205:0;;;;;:::i;:::-;;:::i;8510:158::-;;;;;;;;;;-1:-1:-1;8510:158:0;;;;;:::i;:::-;;:::i;16536:106::-;;;;;;;;;;-1:-1:-1;16536:106:0;;;;;:::i;:::-;;:::i;5605:58::-;;;;;;;;;;-1:-1:-1;5605:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;18674:79;;;;;;;;;;-1:-1:-1;18738:11:0;;18674:79;;17282:108;;;;;;;;;;-1:-1:-1;17282:108:0;;;;;:::i;:::-;;:::i;14030:106::-;;;;;;;;;;-1:-1:-1;14030:106:0;;;;;:::i;:::-;;:::i;11007:108::-;;;;;;;;;;-1:-1:-1;11007:108:0;;;;;:::i;:::-;-1:-1:-1;;;;;11085:26:0;11064:4;11085:26;;;:17;:26;;;;;;;;;11007:108;18755:148;;;;;;;;;;-1:-1:-1;18755:148:0;;;;;:::i;:::-;;:::i;18905:84::-;;;;;;;;;;-1:-1:-1;18973:12:0;;;;18905:84;;17054:100;;;;;;;;;;-1:-1:-1;17054:100:0;;;;;:::i;:::-;;:::i;8670:138::-;;;;;;;;;;-1:-1:-1;8670:138:0;;;;;:::i;:::-;-1:-1:-1;;;;;8777:18:0;;;8753:7;8777:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8670:138;8123:88;;;;;;;;;;-1:-1:-1;8198:9:0;;8123:88;;18585:87;;;;;;;;;;-1:-1:-1;18653:15:0;;18585:87;;18068:169;;;;;;;;;;-1:-1:-1;18068:169:0;;;;;:::i;:::-;;:::i;4523:176::-;;;;;;;;;;-1:-1:-1;4523:176:0;;;;;:::i;:::-;;:::i;14537:227::-;;;;;;;;;;-1:-1:-1;14537:227:0;;;;;:::i;:::-;;:::i;16902:150::-;;;;;;;;;;;;;:::i;9040:75::-;9079:13;9106:5;9099:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9040:75;:::o;17897:169::-;3790:7;3811:6;-1:-1:-1;;;;;3811:6:0;210:10;3928:23;3920:68;;;;-1:-1:-1;;;3920:68:0;;;;;;;:::i;:::-;;;;;;;;;17990:9:::1;;17978;:21;17969:63;;;;-1:-1:-1::0;;;17969:63:0::1;;;;;;;:::i;:::-;18041:9;:21:::0;17897:169::o;8810:152::-;8887:4;8901:37;210:10;8923:7;8931:6;8901:8;:37::i;:::-;-1:-1:-1;8954:4:0;8810:152;;;;:::o;16644:256::-;3790:7;3811:6;-1:-1:-1;;;;;3811:6:0;210:10;3928:23;3920:68;;;;-1:-1:-1;;;3920:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16735:34:0;;::::1;;::::0;;;:17:::1;:34;::::0;;;;;;;:41;;16772:4:::1;-1:-1:-1::0;;16735:41:0;;::::1;::::0;::::1;::::0;;;16781:26;;;::::1;::::0;;;;;;:33;;;::::1;::::0;::::1;::::0;;16819;;;:16:::1;:33:::0;;;;;;:40;;;::::1;::::0;::::1;::::0;;16864:25;;;;:32;;;;::::1;::::0;;::::1;::::0;;16644:256::o;9625:356::-;-1:-1:-1;;;;;9763:19:0;;9735:4;9763:19;;;:11;:19;;;;;;;;210:10;9763:33;;;;;;;;9753:43;;;9745:96;;;;-1:-1:-1;;;9745:96:0;;6367:2:1;9745:96:0;;;6349:21:1;6406:2;6386:18;;;6379:30;6445:34;6425:18;;;6418:62;-1:-1:-1;;;6496:18:1;;;6489:38;6544:19;;9745:96:0;6165:404:1;9745:96:0;9846:36;9856:6;9864:9;9875:6;9846:9;:36::i;:::-;-1:-1:-1;;;;;9918:19:0;;;;;;:11;:19;;;;;;;;210:10;9918:33;;;;;;;;;9887:74;;9896:6;;9918:42;;9954:6;;9918:42;:::i;:::-;9887:8;:74::i;:::-;-1:-1:-1;9973:4:0;9625:356;;;;;:::o;14930:80::-;3790:7;3811:6;-1:-1:-1;;;;;3811:6:0;210:10;3928:23;3920:68;;;;-1:-1:-1;;;3920:68:0;;;;;;;:::i;:::-;14985:12:::1;:21:::0;;-1:-1:-1;;14985:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14930:80::o;16432:102::-;3790:7;3811:6;-1:-1:-1;;;;;3811:6:0;210:10;3928:23;3920:68;;;;-1:-1:-1;;;3920:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16495:28:0::1;;::::0;;;:17:::1;:28;::::0;;;;:35;;-1:-1:-1;;16495:35:0::1;16526:4;16495:35;::::0;;16432:102::o;14766:162::-;3790:7;3811:6;-1:-1:-1;;;;;3811:6:0;210:10;3928:23;3920:68;;;;-1:-1:-1;;;3920:68:0;;;;;;;:::i;:::-;14883:41:::1;::::0;14857:21:::1;::::0;-1:-1:-1;;;;;14883:29:0;::::1;::::0;:41;::::1;;;::::0;14857:21;;14836:18:::1;14883:41:::0;14836:18;14883:41;14857:21;14883:29;:41;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;14831:97;14766:162:::0;:::o;9406:217::-;3790:7;3811:6;-1:-1:-1;;;;;3811:6:0;210:10;3928:23;3920:68;;;;-1:-1:-1;;;3920:68:0;;;;;;;:::i;:::-;9495:1:::1;9486:6;:10;9477:54;;;::::0;-1:-1:-1;;;9477:54:0;;7038:2:1;9477:54:0::1;::::0;::::1;7020:21:1::0;7077:2;7057:18;;;7050:30;7116:32;7096:18;;;7089:60;7166:18;;9477:54:0::1;6836:354:1::0;9477:54:0::1;9536:17;:26:::0;;;9585:12:::1;::::0;9616:3:::1;::::0;9585:30:::1;::::0;9556:6;;9585:30:::1;:::i;:::-;:34;;;;:::i;:::-;9567:15;:52:::0;-1:-1:-1;9406:217:0:o;4309:84::-;3790:7;3811:6;-1:-1:-1;;;;;3811:6:0;210:10;3928:23;3920:68;;;;-1:-1:-1;;;3920:68:0;;;;;;;:::i;:::-;4368:21:::1;4386:1;4368:9;:21::i;:::-;4309:84::o:0;10266:168::-;3790:7;3811:6;-1:-1:-1;;;;;3811:6:0;210:10;3928:23;3920:68;;;;-1:-1:-1;;;3920:68:0;;;;;;;:::i;:::-;10333:13:::1;::::0;10321:9:::1;:25:::0;10364:13:::1;::::0;10352:9:::1;:25:::0;10407:23:::1;:15;10425:5;10407:23;:::i;:::-;10383:21;:47:::0;10266:168::o;17156:103::-;3790:7;3811:6;-1:-1:-1;;;;;3811:6:0;210:10;3928:23;3920:68;;;;-1:-1:-1;;;3920:68:0;;;;;;;:::i;:::-;17223:21:::1;:32:::0;;;::::1;;;;-1:-1:-1::0;;17223:32:0;;::::1;::::0;;;::::1;::::0;;17156:103::o;18413:170::-;3790:7;3811:6;-1:-1:-1;;;;;3811:6:0;210:10;3928:23;3920:68;;;;-1:-1:-1;;;3920:68:0;;;;;;;:::i;:::-;18506:9:::1;;18494;:21;18485:63;;;;-1:-1:-1::0;;;18485:63:0::1;;;;;;;:::i;:::-;18558:10;:21:::0;18413:170::o;18239:172::-;3790:7;3811:6;-1:-1:-1;;;;;3811:6:0;210:10;3928:23;3920:68;;;;-1:-1:-1;;;3920:68:0;;;;;;;:::i;:::-;18334:9:::1;;18322;:21;18313:63;;;;-1:-1:-1::0;;;18313:63:0::1;;;;;;;:::i;:::-;18386:10;:21:::0;18239:172::o;9117:78::-;9158:13;9184:7;9177:14;;;;;:::i;17497:226::-;3790:7;3811:6;-1:-1:-1;;;;;3811:6:0;210:10;3928:23;3920:68;;;;-1:-1:-1;;;3920:68:0;;;;;;;:::i;:::-;17598:13:::1;::::0;-1:-1:-1;;;;;17598:13:0;;::::1;17590:21:::0;;::::1;::::0;17582:91:::1;;;::::0;-1:-1:-1;;;17582:91:0;;7925:2:1;17582:91:0::1;::::0;::::1;7907:21:1::0;7964:2;7944:18;;;7937:30;8003:34;7983:18;;;7976:62;8074:27;8054:18;;;8047:55;8119:19;;17582:91:0::1;7723:421:1::0;17582:91:0::1;17678:41;17707:4;17713:5;17678:28;:41::i;:::-;17497:226:::0;;:::o;10015:249::-;3790:7;3811:6;-1:-1:-1;;;;;3811:6:0;210:10;3928:23;3920:68;;;;-1:-1:-1;;;3920:68:0;;;;;;;:::i;:::-;10082:21:::1;;10064:15;:39;10056:104;;;::::0;-1:-1:-1;;;10056:104:0;;8351:2:1;10056:104:0::1;::::0;::::1;8333:21:1::0;8390:2;8370:18;;;8363:30;8429:34;8409:18;;;8402:62;-1:-1:-1;;;8480:18:1;;;8473:50;8540:19;;10056:104:0::1;8149:416:1::0;10056:104:0::1;10182:9;::::0;;10166:13:::1;:25:::0;10213:9:::1;::::0;;10197:13:::1;:25:::0;-1:-1:-1;10228:13:0;;;;10247;;10015:249::o;10436:120::-;3790:7;3811:6;-1:-1:-1;;;;;3811:6:0;210:10;3928:23;3920:68;;;;-1:-1:-1;;;3920:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10521:23:0;;;::::1;;::::0;;;:10:::1;:23;::::0;;;;:31;;-1:-1:-1;;10521:31:0::1;::::0;::::1;;::::0;;;::::1;::::0;;10436:120::o;9199:205::-;3790:7;3811:6;-1:-1:-1;;;;;3811:6:0;210:10;3928:23;3920:68;;;;-1:-1:-1;;;3920:68:0;;;;;;;:::i;:::-;9283:1:::1;9274:6;:10;9265:54;;;::::0;-1:-1:-1;;;9265:54:0;;7038:2:1;9265:54:0::1;::::0;::::1;7020:21:1::0;7077:2;7057:18;;;7050:30;7116:32;7096:18;;;7089:60;7166:18;;9265:54:0::1;6836:354:1::0;9265:54:0::1;9324:13;:22:::0;;;9365:12:::1;::::0;9392:3:::1;::::0;9365:26:::1;::::0;9340:6;;9365:26:::1;:::i;:::-;:30;;;;:::i;:::-;9351:11;:44:::0;-1:-1:-1;9199:205:0:o;8510:158::-;8590:4;8604:40;210:10;8627:9;8637:6;8604:9;:40::i;16536:106::-;3790:7;3811:6;-1:-1:-1;;;;;3811:6:0;210:10;3928:23;3920:68;;;;-1:-1:-1;;;3920:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16603:27:0::1;16633:5;16603:27:::0;;;:17:::1;:27;::::0;;;;:35;;-1:-1:-1;;16603:35:0::1;::::0;;16536:106::o;17282:108::-;3790:7;3811:6;-1:-1:-1;;;;;3811:6:0;210:10;3928:23;3920:68;;;;-1:-1:-1;;;3920:68:0;;;;;;;:::i;:::-;17348:16:::1;:38:::0;;-1:-1:-1;;;;;;17348:38:0::1;-1:-1:-1::0;;;;;17348:38:0;;;::::1;::::0;;;::::1;::::0;;17282:108::o;14030:106::-;3790:7;3811:6;-1:-1:-1;;;;;3811:6:0;210:10;3928:23;3920:68;;;;-1:-1:-1;;;3920:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14096:29:0::1;;::::0;;;:17:::1;:29;::::0;;;;:36;;-1:-1:-1;;14096:36:0::1;14128:4;14096:36;::::0;;14030:106::o;18755:148::-;3790:7;3811:6;-1:-1:-1;;;;;3811:6:0;210:10;3928:23;3920:68;;;;-1:-1:-1;;;3920:68:0;;;;;;;:::i;:::-;18820:12:::1;:21:::0;;;18869:12:::1;::::0;18895:4:::1;::::0;18869:25:::1;::::0;18835:6;;18869:25:::1;:::i;:::-;:30;;;;:::i;:::-;18846:20;:53:::0;-1:-1:-1;18755:148:0:o;17054:100::-;3790:7;3811:6;-1:-1:-1;;;;;3811:6:0;210:10;3928:23;3920:68;;;;-1:-1:-1;;;3920:68:0;;;;;;;:::i;:::-;17119:16:::1;:31:::0;17054:100::o;18068:169::-;3790:7;3811:6;-1:-1:-1;;;;;3811:6:0;210:10;3928:23;3920:68;;;;-1:-1:-1;;;3920:68:0;;;;;;;:::i;:::-;18161:9:::1;;18149;:21;18140:63;;;;-1:-1:-1::0;;;18140:63:0::1;;;;;;;:::i;:::-;18213:9;:20:::0;18068:169::o;4523:176::-;3790:7;3811:6;-1:-1:-1;;;;;3811:6:0;210:10;3928:23;3920:68;;;;-1:-1:-1;;;3920:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4606:22:0;::::1;4598:73;;;::::0;-1:-1:-1;;;4598:73:0;;8772:2:1;4598:73:0::1;::::0;::::1;8754:21:1::0;8811:2;8791:18;;;8784:30;8850:34;8830:18;;;8823:62;-1:-1:-1;;;8901:18:1;;;8894:36;8947:19;;4598:73:0::1;8570:402:1::0;4598:73:0::1;4676:19;4686:8;4676:9;:19::i;:::-;4523:176:::0;:::o;14537:227::-;3790:7;3811:6;-1:-1:-1;;;;;3811:6:0;210:10;3928:23;3920:68;;;;-1:-1:-1;;;3920:68:0;;;;;;;:::i;:::-;14718:42:::1;::::0;-1:-1:-1;;;14718:42:0;;-1:-1:-1;;;;;9177:32:1;;;14718:42:0::1;::::0;::::1;9159:51:1::0;9226:18;;;9219:34;;;14718:21:0;::::1;::::0;::::1;::::0;9132:18:1;;14718:42:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14537:227:::0;;;:::o;16902:150::-;3790:7;3811:6;-1:-1:-1;;;;;3811:6:0;210:10;3928:23;3920:68;;;;-1:-1:-1;;;3920:68:0;;;;;;;:::i;:::-;16963:1:::1;16951:9;:13:::0;;;16981:1:::1;16969:9;:13:::0;;;16987:10:::1;:14:::0;;;;17006:10:::1;:14:::0;17025:23:::1;17043:4;17025:17;:23::i;16098:306::-:0;-1:-1:-1;;;;;16184:19:0;;16176:68;;;;-1:-1:-1;;;16176:68:0;;9716:2:1;16176:68:0;;;9698:21:1;9755:2;9735:18;;;9728:30;9794:34;9774:18;;;9767:62;-1:-1:-1;;;9845:18:1;;;9838:34;9889:19;;16176:68:0;9514:400:1;16176:68:0;-1:-1:-1;;;;;16257:21:0;;16249:68;;;;-1:-1:-1;;;16249:68:0;;10121:2:1;16249:68:0;;;10103:21:1;10160:2;10140:18;;;10133:30;10199:34;10179:18;;;10172:62;-1:-1:-1;;;10250:18:1;;;10243:32;10292:19;;16249:68:0;9919:398:1;16249:68:0;-1:-1:-1;;;;;16322:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;16368:32;;1988:25:1;;;16368:32:0;;1961:18:1;16368:32:0;;;;;;;16098:306;;;:::o;11117:2681::-;-1:-1:-1;;;;;11200:18:0;;11192:68;;;;-1:-1:-1;;;11192:68:0;;10524:2:1;11192:68:0;;;10506:21:1;10563:2;10543:18;;;10536:30;10602:34;10582:18;;;10575:62;-1:-1:-1;;;10653:18:1;;;10646:35;10698:19;;11192:68:0;10322:401:1;11192:68:0;-1:-1:-1;;;;;11273:16:0;;11265:64;;;;-1:-1:-1;;;11265:64:0;;10930:2:1;11265:64:0;;;10912:21:1;10969:2;10949:18;;;10942:30;11008:34;10988:18;;;10981:62;-1:-1:-1;;;11059:18:1;;;11052:33;11102:19;;11265:64:0;10728:399:1;11265:64:0;11351:1;11342:6;:10;11334:72;;;;-1:-1:-1;;;11334:72:0;;:2:1;:72:0;;;11316:21:1;11373:2;11353:18;;;11346:30;11412:34;11392:18;;;11385:62;-1:-1:-1;;;11463:18:1;;;11456:48;11521:19;;11334:72:0;11132:414:1;11334:72:0;-1:-1:-1;;;;;11435:15:0;;11411:21;11435:15;;;:9;:15;;;;;;11463:23;;;;11455:74;;;;-1:-1:-1;;;11455:74:0;;11753:2:1;11455:74:0;;;11735:21:1;11792:2;11772:18;;;11765:30;11831:34;11811:18;;;11804:62;-1:-1:-1;;;11882:18:1;;;11875:36;11928:19;;11455:74:0;11551:402:1;11455:74:0;11537:12;;;;:21;;:12;:21;11534:129;;-1:-1:-1;;;;;11576:21:0;;;;;;:17;:21;;;;;;;;;:48;;-1:-1:-1;;;;;;11601:23:0;;;;;;:17;:23;;;;;;;;11576:48;11568:89;;;;-1:-1:-1;;;11568:89:0;;12160:2:1;11568:89:0;;;12142:21:1;12199:2;12179:18;;;12172:30;12238:31;12218:18;;;12211:59;12287:18;;11568:89:0;11958:353:1;11568:89:0;-1:-1:-1;;;;;11670:21:0;;;;;;:17;:21;;;;;;;;:28;;;:62;;-1:-1:-1;;;;;;11702:23:0;;;;;;:17;:23;;;;;;;;:30;11670:62;11667:252;;;11756:11;;11746:6;:21;;11738:74;;;;-1:-1:-1;;;11738:74:0;;12518:2:1;11738:74:0;;;12500:21:1;12557:2;12537:18;;;12530:30;12596:34;12576:18;;;12569:62;-1:-1:-1;;;12647:18:1;;;12640:38;12695:19;;11738:74:0;12316:404:1;11738:74:0;11829:13;;-1:-1:-1;;;;;11829:13:0;;;11821:21;;;;11818:96;;11888:15;;11878:6;11864:13;11874:2;-1:-1:-1;;;;;8486:18:0;8466:7;8486:18;;;:9;:18;;;;;;;8400:108;11864:13;:20;;;;:::i;:::-;:39;;11856:48;;;;;;11969:4;11923:25;8486:18;;;:9;:18;;;;;;12003:20;;11983:40;;;;;:68;;-1:-1:-1;12035:16:0;;;;12034:17;11983:68;:100;;;;-1:-1:-1;12070:13:0;;-1:-1:-1;;;;;12062:21:0;;;12070:13;;12062:21;;11983:100;:132;;;;-1:-1:-1;12094:21:0;;;;;;;11983:132;11980:328;;;12153:20;;12132:17;:41;12129:170;;-1:-1:-1;12212:20:0;;12249:36;12212:20;12249:17;:36::i;:::-;-1:-1:-1;;;;;12351:23:0;;12316:13;12351:23;;;:17;:23;;;;;;12332:4;;12351:23;;;:48;;-1:-1:-1;;;;;;12378:21:0;;;;;;:17;:21;;;;;;;;12351:48;12348:127;;;-1:-1:-1;12430:1:0;12414:13;:17;;;12348:127;12483:17;12513;12583:8;12580:817;;;-1:-1:-1;;;;;12642:16:0;;;;;;:10;:16;;;;;;;;:24;;:16;:24;;:46;;-1:-1:-1;;;;;;12668:14:0;;;;;;:10;:14;;;;;;;;:20;;:14;:20;12642:46;12639:108;;;12706:27;;-1:-1:-1;;;12706:27:0;;12927:2:1;12706:27:0;;;12909:21:1;12966:2;12946:18;;;12939:30;-1:-1:-1;;;12985:18:1;;;12978:47;13042:18;;12706:27:0;12725:341:1;12639:108:0;-1:-1:-1;;;;;12789:29:0;;;;;;:25;:29;;;;;;;;:55;;;;-1:-1:-1;12836:7:0;;-1:-1:-1;;;;;12822:22:0;;;12836:7;;12822:22;;12789:55;12785:597;;;12883:1;12867:13;:17;12926:10;;12937:3;;12917:19;;:6;:19;:::i;:::-;:23;;;;:::i;:::-;12905:35;;12993:3;12982:10;;12973:6;:19;;;;:::i;:::-;:23;;;;:::i;:::-;12961:35;-1:-1:-1;13033:21:0;12961:35;13033:9;:21;:::i;:::-;13017:13;:37;12785:597;;;-1:-1:-1;;;;;13110:31:0;;;;;;:25;:31;;;;;;;;:59;;;;-1:-1:-1;13161:7:0;;-1:-1:-1;;;;;13145:24:0;;;13161:7;;13145:24;;13110:59;13107:275;;;13210:1;13194:13;:17;13249:9;;13259:3;;13240:18;;:6;:18;:::i;:::-;:22;;;;:::i;:::-;13228:34;;13310:3;13300:9;;13291:6;:18;;;;:::i;:::-;:22;;;;:::i;:::-;13279:34;-1:-1:-1;13346:21:0;13279:34;13346:9;:21;:::i;:::-;13330:13;:37;13107:275;13423:22;13439:6;13423:13;:22;:::i;:::-;-1:-1:-1;;;;;13405:15:0;;;;;;:9;:15;;;;;:40;13492:9;13471:18;13480:9;13471:6;:18;:::i;:::-;:30;;;;:::i;:::-;-1:-1:-1;;;;;13454:13:0;;;;;;:9;:13;;;;;:47;;:13;;;:47;;;;;:::i;:::-;;;;-1:-1:-1;;13511:14:0;;13508:233;;13564:13;;13554:4;13536:24;;;;:9;:24;;;;;:41;;:24;;;:41;;13564:13;;13536:41;:::i;:::-;;;;;;;;13632:9;13619;;:22;;;;;;;:::i;:::-;;;;;;;;13663:9;13650;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;13716:13:0;;13686:44;;1988:25:1;;;13709:4:0;;-1:-1:-1;;;;;13686:44:0;;;;;1976:2:1;1961:18;13686:44:0;;;;;;;13508:233;13769:2;-1:-1:-1;;;;;13754:39:0;13763:4;-1:-1:-1;;;;;13754:39:0;;13779:13;;13772:6;:20;;;;:::i;:::-;13754:39;;1988:25:1;;;1976:2;1961:18;13754:39:0;;;;;;;11186:2612;;;;;11117:2681;;;:::o;4701:151::-;4751:16;4770:6;;-1:-1:-1;;;;;4781:17:0;;;-1:-1:-1;;;;;;4781:17:0;;;;;;4808:40;;4770:6;;;;;;;4808:40;;4751:16;4808:40;4746:106;4701:151;:::o;17725:170::-;-1:-1:-1;;;;;17802:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;17802:39:0;;;;;;;;;;17851:40;;17802:39;;:31;17851:40;;;17725:170;;:::o;13800:228::-;7134:16;:23;;-1:-1:-1;;7134:23:0;7153:4;7134:23;;;13889:9:::1;::::0;13874:25:::1;::::0;:14:::1;:25::i;:::-;13904:30;13924:9;;13904:19;:30::i;:::-;13944:44;::::0;1988:25:1;;;13944:44:0::1;::::0;1976:2:1;1961:18;13944:44:0::1;;;;;;;-1:-1:-1::0;14005:1:0::1;13993:9;:13:::0;;;14011:9:::1;:13:::0;7168:16;:24;;-1:-1:-1;;7168:24:0;;;13800:228::o;15012:382::-;15074:12;15089:19;15107:1;15089:15;:19;:::i;:::-;15074:34;-1:-1:-1;15113:17:0;15133:22;15074:34;15133:15;:22;:::i;:::-;15113:42;-1:-1:-1;15185:21:0;15211:22;15228:4;15211:16;:22::i;:::-;15238:18;15259:40;15284:14;15259:21;:40;:::i;:::-;15238:61;;15304:35;15317:9;15328:10;15304:12;:35::i;:::-;15349:41;;;13273:25:1;;;13329:2;13314:18;;13307:34;;;13357:18;;;13350:34;;;15349:41:0;;13261:2:1;13246:18;15349:41:0;;;;;;;15069:325;;;;15012:382;:::o;14138:397::-;14219:16;;;14233:1;14219:16;;;;;;;;14195:21;;14219:16;;;;;;;;;;-1:-1:-1;14219:16:0;14195:40;;14258:4;14240;14245:1;14240:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14240:23:0;;;:7;;;;;;;;;;:23;;;;14278:7;;:14;;;-1:-1:-1;;;14278:14:0;;;;:7;;;;;:12;;:14;;;;;14240:7;;14278:14;;;;;:7;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14268:4;14273:1;14268:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14268:24:0;;;:7;;;;;;;;;:24;14329:7;;14297:49;;14314:4;;14329:7;14339:6;14297:8;:49::i;:::-;14352:7;;14486:16;;14352:179;;-1:-1:-1;;;14352:179:0;;-1:-1:-1;;;;;14352:7:0;;;;:58;;:179;;14419:6;;14352:7;;14473:4;;14486:16;;;14511:15;;14352:179;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14190:345;14138:397;:::o;15396:406::-;15479:16;;;15493:1;15479:16;;;;;;;;15455:21;;15479:16;;;;;;;;;;-1:-1:-1;15479:16:0;15455:40;;15518:4;15500;15505:1;15500:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;15500:23:0;;;:7;;;;;;;;;;:23;;;;15538:7;;:14;;;-1:-1:-1;;;15538:14:0;;;;:7;;;;;:12;;:14;;;;;15500:7;;15538:14;;;;;:7;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15528:4;15533:1;15528:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;15528:24:0;;;:7;;;;;;;;;:24;15589:7;;15557:54;;15574:4;;15589:7;15599:11;15557:8;:54::i;:::-;15617:7;;:181;;-1:-1:-1;;;15617:181:0;;-1:-1:-1;;;;;15617:7:0;;;;:58;;:181;;15684:11;;15617:7;;15743:4;;15764;;15778:15;;15617:181;;;:::i;15804:292::-;15909:7;;15877:54;;15894:4;;-1:-1:-1;;;;;15909:7:0;15919:11;15877:8;:54::i;:::-;15936:7;;:156;;-1:-1:-1;;;15936:156:0;;15993:4;15936:156;;;15904:34:1;15954:18;;;15947:34;;;-1:-1:-1;15997:18:1;;;15990:34;;;16040:18;;;16033:34;-1:-1:-1;;;;;16047:11:0;16104:15:1;;16083:19;;;16076:44;16072:15:0;16136:19:1;;;16129:35;15936:7:0;;;;:23;;15966:9;;15838:19:1;;15936:156:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;15804:292;;:::o;14:597: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;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;616:180::-;675:6;728:2;716:9;707:7;703:23;699:32;696:52;;;744:1;741;734:12;696:52;-1:-1:-1;767:23:1;;616:180;-1:-1:-1;616:180:1:o;801:131::-;-1:-1:-1;;;;;876:31:1;;866:42;;856:70;;922:1;919;912:12;937:315;1005:6;1013;1066:2;1054:9;1045:7;1041:23;1037:32;1034:52;;;1082:1;1079;1072:12;1034:52;1121:9;1108:23;1140:31;1165:5;1140:31;:::i;:::-;1190:5;1242:2;1227:18;;;;1214:32;;-1:-1:-1;;;937:315:1:o;1449:388::-;1517:6;1525;1578:2;1566:9;1557:7;1553:23;1549:32;1546:52;;;1594:1;1591;1584:12;1546:52;1633:9;1620:23;1652:31;1677:5;1652:31;:::i;:::-;1702:5;-1:-1:-1;1759:2:1;1744:18;;1731:32;1772:33;1731:32;1772:33;:::i;:::-;1824:7;1814:17;;;1449:388;;;;;:::o;2024:456::-;2101:6;2109;2117;2170:2;2158:9;2149:7;2145:23;2141:32;2138:52;;;2186:1;2183;2176:12;2138:52;2225:9;2212:23;2244:31;2269:5;2244:31;:::i;:::-;2294:5;-1:-1:-1;2351:2:1;2336:18;;2323:32;2364:33;2323:32;2364:33;:::i;:::-;2024:456;;2416:7;;-1:-1:-1;;;2470:2:1;2455:18;;;;2442:32;;2024:456::o;2693:118::-;2779:5;2772:13;2765:21;2758:5;2755:32;2745:60;;2801:1;2798;2791:12;2816:241;2872:6;2925:2;2913:9;2904:7;2900:23;2896:32;2893:52;;;2941:1;2938;2931:12;2893:52;2980:9;2967:23;2999:28;3021:5;2999:28;:::i;:::-;3046:5;2816:241;-1:-1:-1;;;2816:241:1:o;3062:247::-;3121:6;3174:2;3162:9;3153:7;3149:23;3145:32;3142:52;;;3190:1;3187;3180:12;3142:52;3229:9;3216:23;3248:31;3273:5;3248:31;:::i;3574:382::-;3639:6;3647;3700:2;3688:9;3679:7;3675:23;3671:32;3668:52;;;3716:1;3713;3706:12;3668:52;3755:9;3742:23;3774:31;3799:5;3774:31;:::i;:::-;3824:5;-1:-1:-1;3881:2:1;3866:18;;3853:32;3894:30;3853:32;3894:30;:::i;5062:380::-;5141:1;5137:12;;;;5184;;;5205:61;;5259:4;5251:6;5247:17;5237:27;;5205:61;5312:2;5304:6;5301:14;5281:18;5278:38;5275:161;;5358:10;5353:3;5349:20;5346:1;5339:31;5393:4;5390:1;5383:15;5421:4;5418:1;5411:15;5275:161;;5062:380;;;:::o;5447:356::-;5649:2;5631:21;;;5668:18;;;5661:30;5727:34;5722:2;5707:18;;5700:62;5794:2;5779:18;;5447:356::o;5808:352::-;6010:2;5992:21;;;6049:2;6029:18;;;6022:30;6088;6083:2;6068:18;;6061:58;6151:2;6136:18;;5808:352::o;6574:127::-;6635:10;6630:3;6626:20;6623:1;6616:31;6666:4;6663:1;6656:15;6690:4;6687:1;6680:15;6706:125;6746:4;6774:1;6771;6768:8;6765:34;;;6779:18;;:::i;:::-;-1:-1:-1;6816:9:1;;6706:125::o;7195:168::-;7235:7;7301:1;7297;7293:6;7289:14;7286:1;7283:21;7278:1;7271:9;7264:17;7260:45;7257:71;;;7308:18;;:::i;:::-;-1:-1:-1;7348:9:1;;7195:168::o;7368:217::-;7408:1;7434;7424:132;;7478:10;7473:3;7469:20;7466:1;7459:31;7513:4;7510:1;7503:15;7541:4;7538:1;7531:15;7424:132;-1:-1:-1;7570:9:1;;7368:217::o;7590:128::-;7630:3;7661:1;7657:6;7654:1;7651:13;7648:39;;;7667:18;;:::i;:::-;-1:-1:-1;7703:9:1;;7590:128::o;9264:245::-;9331:6;9384:2;9372:9;9363:7;9359:23;9355:32;9352:52;;;9400:1;9397;9390:12;9352:52;9432:9;9426:16;9451:28;9473:5;9451:28;:::i;13527:127::-;13588:10;13583:3;13579:20;13576:1;13569:31;13619:4;13616:1;13609:15;13643:4;13640:1;13633:15;13659:251;13729:6;13782:2;13770:9;13761:7;13757:23;13753:32;13750:52;;;13798:1;13795;13788:12;13750:52;13830:9;13824:16;13849:31;13874:5;13849:31;:::i;13915:461::-;13968:3;14006:5;14000:12;14033:6;14028:3;14021:19;14059:4;14088:2;14083:3;14079:12;14072:19;;14125:2;14118:5;14114:14;14146:1;14156:195;14170:6;14167:1;14164:13;14156:195;;;14235:13;;-1:-1:-1;;;;;14231:39:1;14219:52;;14291:12;;;;14326:15;;;;14267:1;14185:9;14156:195;;;-1:-1:-1;14367:3:1;;13915:461;-1:-1:-1;;;;;13915:461:1:o;14381:590::-;14688:6;14677:9;14670:25;14731:6;14726:2;14715:9;14711:18;14704:34;14774:3;14769:2;14758:9;14754:18;14747:31;14651:4;14795:57;14847:3;14836:9;14832:19;14824:6;14795:57;:::i;:::-;-1:-1:-1;;;;;14888:32:1;;;;14883:2;14868:18;;14861:60;-1:-1:-1;14952:3:1;14937:19;14930:35;14787:65;14381:590;-1:-1:-1;;;14381:590:1:o;16175:306::-;16263:6;16271;16279;16332:2;16320:9;16311:7;16307:23;16303:32;16300:52;;;16348:1;16345;16338:12;16300:52;16377:9;16371:16;16361:26;;16427:2;16416:9;16412:18;16406:25;16396:35;;16471:2;16460:9;16456:18;16450:25;16440:35;;16175:306;;;;;:::o
Swarm Source
ipfs://2445943dc73a5607bae95e01e98d4804c5943c7f95a83bf06bc2546aba392d33
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.