ERC-20
Overview
Max Total Supply
1,000,000,000,000 GG
Holders
61
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
2,451,546,744.818275069 GGValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
GO
Compiler Version
v0.8.4+commit.c7e474f2
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-11-09 */ /** * */ // SPDX-License-Identifier: Unlicensed pragma solidity ^0.8.4; abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return payable(msg.sender); } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } library Address { function isContract(address account) internal view returns (bool) { // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return _functionCallWithValue(target, data, 0, errorMessage); } function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); return _functionCallWithValue(target, data, value, errorMessage); } function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) { require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{ value: weiValue }(data); if (success) { return returndata; } else { if (returndata.length > 0) { assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } contract Ownable is Context { address private _owner; address private _previousOwner; uint256 private _lockTime; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } // pragma solidity >=0.5.0; interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } // pragma solidity >=0.5.0; 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 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 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; } // pragma solidity >=0.6.2; interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } // pragma solidity >=0.6.2; 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 GO is Context, IERC20, Ownable { using SafeMath for uint256; using Address for address; address payable public marketingAddress = payable(0x988b1B5D5BDAE0D018A04297FD0Acf0cA08B90d4); address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD; mapping (address => uint256) private _rOwned; mapping (address => uint256) private _tOwned; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => uint) private cooldown; mapping (address => bool) private _isExcludedFromFee; mapping (address => bool) private _isExcluded; address[] private _excluded; uint256 private constant MAX = ~uint256(0); uint256 private _tTotal = 1e12 * 10**9; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; string private _name = "GG"; string private _symbol = "GG"; uint8 private _decimals = 9; uint256 public _sellFee; uint256 public _buyFee; uint256 public _taxFee; uint256 private _previousTaxFee = _taxFee; uint256 private _liquidityFee; uint256 private _previousLiquidityFee = _liquidityFee; uint256 private _maxTxAmount; IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; bool inSwap; bool tradingOpen = false; event SwapETHForTokens( uint256 amountIn, address[] path ); event SwapTokensForETH( uint256 amountIn, address[] path ); modifier lockTheSwap { inSwap = true; _; inSwap = false; } constructor () { _rOwned[_msgSender()] = _rTotal; emit Transfer(address(0), _msgSender(), _tTotal); } function initContract() external onlyOwner() { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); uniswapV2Router = _uniswapV2Router; _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; } function oopenTrading() external onlyOwner() { _buyFee = 2; _sellFee = 8; _taxFee=2; tradingOpen = true; _maxTxAmount = 5e9 * 10**9; } function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { if (_isExcluded[account]) return _tOwned[account]; return tokenFromReflection(_rOwned[account]); } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } function isExcludedFromReward(address account) public view returns (bool) { return _isExcluded[account]; } function totalFees() public view returns (uint256) { return _tFeeTotal; } function deliver(uint256 tAmount) public { address sender = _msgSender(); require(!_isExcluded[sender], "Excluded addresses cannot call this function"); (uint256 rAmount,,,,,) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rTotal = _rTotal.sub(rAmount); _tFeeTotal = _tFeeTotal.add(tAmount); } function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns(uint256) { require(tAmount <= _tTotal, "Amount must be less than supply"); if (!deductTransferFee) { (uint256 rAmount,,,,,) = _getValues(tAmount); return rAmount; } else { (,uint256 rTransferAmount,,,,) = _getValues(tAmount); return rTransferAmount; } } function tokenFromReflection(uint256 rAmount) public view returns(uint256) { require(rAmount <= _rTotal, "Amount must be less than total reflections"); uint256 currentRate = _getRate(); return rAmount.div(currentRate); } function excludeFromReward(address account) public onlyOwner() { require(!_isExcluded[account], "Account is already excluded"); if(_rOwned[account] > 0) { _tOwned[account] = tokenFromReflection(_rOwned[account]); } _isExcluded[account] = true; _excluded.push(account); } function includeInReward(address account) external onlyOwner() { require(_isExcluded[account], "Account is already excluded"); for (uint256 i = 0; i < _excluded.length; i++) { if (_excluded[i] == account) { _excluded[i] = _excluded[_excluded.length - 1]; _tOwned[account] = 0; _isExcluded[account] = false; _excluded.pop(); break; } } } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer( address from, address to, uint256 amount ) private { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); if (from!= owner() && to!= owner()) require(tradingOpen, "Trading not yet enabled."); //transfers disabled before openTrading // buy if(from == uniswapV2Pair && to != address(uniswapV2Router) && !_isExcludedFromFee[to]) { require(amount <= _maxTxAmount); require(cooldown[to] < block.timestamp); cooldown[to] = block.timestamp + (30 seconds); _liquidityFee = _buyFee; } uint256 contractTokenBalance = balanceOf(address(this)); //sell if (!inSwap && to == uniswapV2Pair) { if(contractTokenBalance > 0) { if(contractTokenBalance > 0) swapTokens(contractTokenBalance); } _liquidityFee = _sellFee; } bool takeFee = false; //take fee only on swaps if ( (from==uniswapV2Pair || to==uniswapV2Pair) && !(_isExcludedFromFee[from] || _isExcludedFromFee[to]) ) { takeFee = true; } _tokenTransfer(from,to,amount,takeFee); } function swapTokens(uint256 contractTokenBalance) private lockTheSwap { swapTokensForEth(contractTokenBalance); //Send to Marketing address uint256 contractETHBalance = address(this).balance; if(contractETHBalance > 0) { sendETHToFee(address(this).balance); } } function sendETHToFee(uint256 amount) private { marketingAddress.transfer(amount); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), // The contract block.timestamp ); emit SwapTokensForETH(tokenAmount, path); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable owner(), block.timestamp ); } function _tokenTransfer(address sender, address recipient, uint256 amount,bool takeFee) private { if(!takeFee) removeAllFee(); if (_isExcluded[sender] && !_isExcluded[recipient]) { _transferFromExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && _isExcluded[recipient]) { _transferToExcluded(sender, recipient, amount); } else if (_isExcluded[sender] && _isExcluded[recipient]) { _transferBothExcluded(sender, recipient, amount); } else { _transferStandard(sender, recipient, amount); } if(!takeFee) restoreAllFee(); } function _transferStandard(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferToExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _reflectFee(uint256 rFee, uint256 tFee) private { _rTotal = _rTotal.sub(rFee); _tFeeTotal = _tFeeTotal.add(tFee); } function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) { (uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getTValues(tAmount); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tLiquidity, _getRate()); return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tLiquidity); } function _getTValues(uint256 tAmount) private view returns (uint256, uint256, uint256) { uint256 tFee = calculateTaxFee(tAmount); uint256 tLiquidity = calculateLiquidityFee(tAmount); uint256 tTransferAmount = tAmount.sub(tFee).sub(tLiquidity); return (tTransferAmount, tFee, tLiquidity); } function _getRValues(uint256 tAmount, uint256 tFee, uint256 tLiquidity, uint256 currentRate) private pure returns (uint256, uint256, uint256) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 rLiquidity = tLiquidity.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rFee).sub(rLiquidity); return (rAmount, rTransferAmount, rFee); } function _getRate() private view returns(uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply.div(tSupply); } function _getCurrentSupply() private view returns(uint256, uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; for (uint256 i = 0; i < _excluded.length; i++) { if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal); rSupply = rSupply.sub(_rOwned[_excluded[i]]); tSupply = tSupply.sub(_tOwned[_excluded[i]]); } if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal); return (rSupply, tSupply); } function _takeLiquidity(uint256 tLiquidity) private { uint256 currentRate = _getRate(); uint256 rLiquidity = tLiquidity.mul(currentRate); _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity); if(_isExcluded[address(this)]) _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity); } function calculateTaxFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_taxFee).div( 10**2 ); } function calculateLiquidityFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_liquidityFee).div( 10**2 ); } function removeAllFee() private { if(_taxFee == 0 && _liquidityFee == 0) return; _previousTaxFee = _taxFee; _previousLiquidityFee = _liquidityFee; _taxFee = 0; _liquidityFee = 0; } function restoreAllFee() private { _taxFee = _previousTaxFee; _liquidityFee = _previousLiquidityFee; } function isExcludedFromFee(address account) public view returns(bool) { return _isExcludedFromFee[account]; } function excludeFromFee(address account) public onlyOwner { _isExcludedFromFee[account] = true; } function includeInFee(address account) public onlyOwner { _isExcludedFromFee[account] = false; } function setTaxFeePercent(uint256 taxFee) external onlyOwner() { require (taxFee <= 2, "taxFee can't exceed 2%"); _taxFee = taxFee; } function setBuyFee(uint256 buyFee) external onlyOwner() { require (buyFee <= 2, "buy Fee can't exceed 2%"); _buyFee = buyFee; } function setSellFee(uint256 sellFee) external onlyOwner() { require (sellFee <= 8, "sell fee can't exceed 8%"); _sellFee = sellFee; } function setMarketingAddress(address _marketingAddress) external onlyOwner() { marketingAddress = payable(_marketingAddress); } function transferToAddressETH(address payable recipient, uint256 amount) private { recipient.transfer(amount); } function removeStrictTxLimit() external onlyOwner { _maxTxAmount = 1e12 * 10**9; } //to recieve ETH from uniswapV2Router when swaping receive() external payable {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"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":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","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":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"initContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","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":"oopenTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeStrictTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyFee","type":"uint256"}],"name":"setBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingAddress","type":"address"}],"name":"setMarketingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"sellFee","type":"uint256"}],"name":"setSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"setTaxFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60a0604052600380546001600160a01b03191673988b1b5d5bdae0d018a04297fd0acf0ca08b90d41790556ddead000000000000000000000000608052683635c9adc5dea00000600b819055620000599060001962000294565b620000679060001962000233565b600c5560408051808201909152600280825261474760f01b60209092019182526200009591600e916200018d565b5060408051808201909152600280825261474760f01b6020909201918252620000c191600f916200018d565b506010805460ff191660091790556013546014556015546016556019805460ff60a81b19169055348015620000f557600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600c5433600081815260046020908152604080832094909455600b549351938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3620002b5565b8280546200019b9062000257565b90600052602060002090601f016020900481019282620001bf57600085556200020a565b82601f10620001da57805160ff19168380011785556200020a565b828001600101855582156200020a579182015b828111156200020a578251825591602001919060010190620001ed565b50620002189291506200021c565b5090565b5b808211156200021857600081556001016200021d565b6000828210156200025257634e487b7160e01b81526011600452602481fd5b500390565b600181811c908216806200026c57607f821691505b602082108114156200028e57634e487b7160e01b600052602260045260246000fd5b50919050565b600082620002b057634e487b7160e01b81526012600452602481fd5b500690565b60805160601c6128a4620002d4600039600061037001526128a46000f3fe6080604052600436106102295760003560e01c806352390c02116101235780638da5cb5b116100ab578063a9059cbb1161006f578063a9059cbb1461067a578063dd62ed3e1461069a578063ea2f0b37146106e0578063f2fde38b14610700578063ff8726021461072057600080fd5b80638da5cb5b146105e7578063906e9dd01461060557806395d89b4114610625578063a457c2d71461063a578063a5ece9411461065a57600080fd5b806370a08231116100f257806370a0823114610544578063715018a6146105645780638203f5fe1461057957806388f820201461058e5780638b4cee08146105c757600080fd5b806352390c02146104c05780635342acb4146104e0578063590f897e1461051957806367a907c21461052f57600080fd5b80632d838119116101b15780633bd5d173116101755780633bd5d1731461042a57806340b9a54b1461044a578063437823ec146104605780634549b0391461048057806349bd5a5e146104a057600080fd5b80632d83811914610392578063313ce567146103b25780633685d419146103d457806339509351146103f45780633b124fe71461041457600080fd5b806313114a9d116101f857806313114a9d146102d25780631694505e146102f157806318160ddd1461032957806323b872dd1461033e57806327c8f8351461035e57600080fd5b8063061c82d01461023557806306fdde0314610257578063095ea7b3146102825780630cc835a3146102b257600080fd5b3661023057005b600080fd5b34801561024157600080fd5b506102556102503660046125c7565b610735565b005b34801561026357600080fd5b5061026c6107b7565b604051610279919061264a565b60405180910390f35b34801561028e57600080fd5b506102a261029d36600461259c565b610849565b6040519015158152602001610279565b3480156102be57600080fd5b506102556102cd3660046125c7565b610860565b3480156102de57600080fd5b50600d545b604051908152602001610279565b3480156102fd57600080fd5b50601854610311906001600160a01b031681565b6040516001600160a01b039091168152602001610279565b34801561033557600080fd5b50600b546102e3565b34801561034a57600080fd5b506102a261035936600461255c565b6108e0565b34801561036a57600080fd5b506103117f000000000000000000000000000000000000000000000000000000000000000081565b34801561039e57600080fd5b506102e36103ad3660046125c7565b610949565b3480156103be57600080fd5b5060105460405160ff9091168152602001610279565b3480156103e057600080fd5b506102556103ef3660046124ec565b6109cd565b34801561040057600080fd5b506102a261040f36600461259c565b610bbc565b34801561042057600080fd5b506102e360135481565b34801561043657600080fd5b506102556104453660046125c7565b610bf2565b34801561045657600080fd5b506102e360125481565b34801561046c57600080fd5b5061025561047b3660046124ec565b610cdc565b34801561048c57600080fd5b506102e361049b3660046125df565b610d2a565b3480156104ac57600080fd5b50601954610311906001600160a01b031681565b3480156104cc57600080fd5b506102556104db3660046124ec565b610db7565b3480156104ec57600080fd5b506102a26104fb3660046124ec565b6001600160a01b031660009081526008602052604090205460ff1690565b34801561052557600080fd5b506102e360115481565b34801561053b57600080fd5b50610255610f0a565b34801561055057600080fd5b506102e361055f3660046124ec565b610f64565b34801561057057600080fd5b50610255610fc3565b34801561058557600080fd5b50610255611037565b34801561059a57600080fd5b506102a26105a93660046124ec565b6001600160a01b031660009081526009602052604090205460ff1690565b3480156105d357600080fd5b506102556105e23660046125c7565b611251565b3480156105f357600080fd5b506000546001600160a01b0316610311565b34801561061157600080fd5b506102556106203660046124ec565b6112d1565b34801561063157600080fd5b5061026c61131d565b34801561064657600080fd5b506102a261065536600461259c565b61132c565b34801561066657600080fd5b50600354610311906001600160a01b031681565b34801561068657600080fd5b506102a261069536600461259c565b61137b565b3480156106a657600080fd5b506102e36106b5366004612524565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b3480156106ec57600080fd5b506102556106fb3660046124ec565b611388565b34801561070c57600080fd5b5061025561071b3660046124ec565b6113d3565b34801561072c57600080fd5b506102556114bd565b6000546001600160a01b031633146107685760405162461bcd60e51b815260040161075f9061269d565b60405180910390fd5b60028111156107b25760405162461bcd60e51b81526020600482015260166024820152757461784665652063616e27742065786365656420322560501b604482015260640161075f565b601355565b6060600e80546107c69061279d565b80601f01602080910402602001604051908101604052809291908181526020018280546107f29061279d565b801561083f5780601f106108145761010080835404028352916020019161083f565b820191906000526020600020905b81548152906001019060200180831161082257829003601f168201915b5050505050905090565b60006108563384846114f6565b5060015b92915050565b6000546001600160a01b0316331461088a5760405162461bcd60e51b815260040161075f9061269d565b60028111156108db5760405162461bcd60e51b815260206004820152601760248201527f627579204665652063616e277420657863656564203225000000000000000000604482015260640161075f565b601255565b60006108ed84848461161a565b61093f843361093a85604051806060016040528060288152602001612822602891396001600160a01b038a1660009081526006602090815260408083203384529091529020549190611965565b6114f6565b5060019392505050565b6000600c548211156109b05760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b606482015260840161075f565b60006109ba61199f565b90506109c683826119c2565b9392505050565b6000546001600160a01b031633146109f75760405162461bcd60e51b815260040161075f9061269d565b6001600160a01b03811660009081526009602052604090205460ff16610a5f5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015260640161075f565b60005b600a54811015610bb857816001600160a01b0316600a8281548110610a9757634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b03161415610ba657600a8054610ac290600190612786565b81548110610ae057634e487b7160e01b600052603260045260246000fd5b600091825260209091200154600a80546001600160a01b039092169183908110610b1a57634e487b7160e01b600052603260045260246000fd5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600582526040808220829055600990925220805460ff19169055600a805480610b8057634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610bb0816127d8565b915050610a62565b5050565b3360008181526006602090815260408083206001600160a01b0387168452909152812054909161085691859061093a9086611a04565b3360008181526009602052604090205460ff1615610c675760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b606482015260840161075f565b6000610c7283611a63565b505050506001600160a01b038416600090815260046020526040902054919250610c9e91905082611ab2565b6001600160a01b038316600090815260046020526040902055600c54610cc49082611ab2565b600c55600d54610cd49084611a04565b600d55505050565b6000546001600160a01b03163314610d065760405162461bcd60e51b815260040161075f9061269d565b6001600160a01b03166000908152600860205260409020805460ff19166001179055565b6000600b54831115610d7e5760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c7900604482015260640161075f565b81610d9d576000610d8e84611a63565b5093955061085a945050505050565b6000610da884611a63565b5092955061085a945050505050565b6000546001600160a01b03163314610de15760405162461bcd60e51b815260040161075f9061269d565b6001600160a01b03811660009081526009602052604090205460ff1615610e4a5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015260640161075f565b6001600160a01b03811660009081526004602052604090205415610ea4576001600160a01b038116600090815260046020526040902054610e8a90610949565b6001600160a01b0382166000908152600560205260409020555b6001600160a01b03166000818152600960205260408120805460ff19166001908117909155600a805491820181559091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80180546001600160a01b0319169091179055565b6000546001600160a01b03163314610f345760405162461bcd60e51b815260040161075f9061269d565b6002601281905560086011556013556019805460ff60a81b1916600160a81b179055674563918244f40000601755565b6001600160a01b03811660009081526009602052604081205460ff1615610fa157506001600160a01b031660009081526005602052604090205490565b6001600160a01b03821660009081526004602052604090205461085a90610949565b6000546001600160a01b03163314610fed5760405162461bcd60e51b815260040161075f9061269d565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146110615760405162461bcd60e51b815260040161075f9061269d565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156110b357600080fd5b505afa1580156110c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110eb9190612508565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561113357600080fd5b505afa158015611147573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116b9190612508565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156111b357600080fd5b505af11580156111c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111eb9190612508565b601980546001600160a01b03199081166001600160a01b0393841617909155601880549091169282169290921790915560008054909116815260086020526040808220805460ff1990811660019081179092553084529190922080549091169091179055565b6000546001600160a01b0316331461127b5760405162461bcd60e51b815260040161075f9061269d565b60088111156112cc5760405162461bcd60e51b815260206004820152601860248201527f73656c6c206665652063616e2774206578636565642038250000000000000000604482015260640161075f565b601155565b6000546001600160a01b031633146112fb5760405162461bcd60e51b815260040161075f9061269d565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6060600f80546107c69061279d565b6000610856338461093a8560405180606001604052806025815260200161284a602591393360009081526006602090815260408083206001600160a01b038d1684529091529020549190611965565b600061085633848461161a565b6000546001600160a01b031633146113b25760405162461bcd60e51b815260040161075f9061269d565b6001600160a01b03166000908152600860205260409020805460ff19169055565b6000546001600160a01b031633146113fd5760405162461bcd60e51b815260040161075f9061269d565b6001600160a01b0381166114625760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161075f565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146114e75760405162461bcd60e51b815260040161075f9061269d565b683635c9adc5dea00000601755565b6001600160a01b0383166115585760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161075f565b6001600160a01b0382166115b95760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161075f565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661167e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161075f565b6001600160a01b0382166116e05760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161075f565b600081116117425760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161075f565b6000546001600160a01b0384811691161480159061176e57506000546001600160a01b03838116911614155b156117cc57601954600160a81b900460ff166117cc5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642e0000000000000000604482015260640161075f565b6019546001600160a01b0384811691161480156117f757506018546001600160a01b03838116911614155b801561181c57506001600160a01b03821660009081526008602052604090205460ff16155b1561187f5760175481111561183057600080fd5b6001600160a01b038216600090815260076020526040902054421161185457600080fd5b61185f42601e61272f565b6001600160a01b0383166000908152600760205260409020556012546015555b600061188a30610f64565b601954909150600160a01b900460ff161580156118b457506019546001600160a01b038481169116145b156118d55780156118ce5780156118ce576118ce81611af4565b6011546015555b6019546000906001600160a01b038681169116148061190157506019546001600160a01b038581169116145b801561194957506001600160a01b03851660009081526008602052604090205460ff168061194757506001600160a01b03841660009081526008602052604090205460ff165b155b15611952575060015b61195e85858584611b31565b5050505050565b600081848411156119895760405162461bcd60e51b815260040161075f919061264a565b5060006119968486612786565b95945050505050565b60008060006119ac611c5c565b90925090506119bb82826119c2565b9250505090565b60006109c683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611e16565b600080611a11838561272f565b9050838110156109c65760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161075f565b6000806000806000806000806000611a7a8a611e44565b9250925092506000806000611a988d8686611a9361199f565b611e86565b919f909e50909c50959a5093985091965092945050505050565b60006109c683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611965565b6019805460ff60a01b1916600160a01b179055611b1081611ed6565b478015611b2057611b2047612094565b50506019805460ff60a01b19169055565b80611b3e57611b3e6120ce565b6001600160a01b03841660009081526009602052604090205460ff168015611b7f57506001600160a01b03831660009081526009602052604090205460ff16155b15611b9457611b8f8484846120fc565b611c40565b6001600160a01b03841660009081526009602052604090205460ff16158015611bd557506001600160a01b03831660009081526009602052604090205460ff165b15611be557611b8f848484612222565b6001600160a01b03841660009081526009602052604090205460ff168015611c2557506001600160a01b03831660009081526009602052604090205460ff165b15611c3557611b8f8484846122cb565b611c4084848461233e565b80611c5657611c56601454601355601654601555565b50505050565b600c54600b546000918291825b600a54811015611de6578260046000600a8481548110611c9957634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020541180611d1257508160056000600a8481548110611ceb57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15611d2857600c54600b54945094505050509091565b611d7c60046000600a8481548110611d5057634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020548490611ab2565b9250611dd260056000600a8481548110611da657634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020548390611ab2565b915080611dde816127d8565b915050611c69565b50600b54600c54611df6916119c2565b821015611e0d57600c54600b549350935050509091565b90939092509050565b60008183611e375760405162461bcd60e51b815260040161075f919061264a565b5060006119968486612747565b600080600080611e5385612382565b90506000611e60866123a4565b90506000611e7882611e728986611ab2565b90611ab2565b979296509094509092505050565b6000808080611e9588866123c0565b90506000611ea388876123c0565b90506000611eb188886123c0565b90506000611ec382611e728686611ab2565b939b939a50919850919650505050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611f1957634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152601854604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015611f6d57600080fd5b505afa158015611f81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fa59190612508565b81600181518110611fc657634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152601854611fec91309116846114f6565b60185460405163791ac94760e01b81526001600160a01b039091169063791ac947906120259085906000908690309042906004016126f3565b600060405180830381600087803b15801561203f57600080fd5b505af1158015612053573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516120889291906126d2565b60405180910390a15050565b6003546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610bb8573d6000803e3d6000fd5b6013541580156120de5750601554155b156120e557565b601380546014556015805460165560009182905555565b60008060008060008061210e87611a63565b6001600160a01b038f16600090815260056020526040902054959b509399509197509550935091506121409088611ab2565b6001600160a01b038a1660009081526005602090815260408083209390935560049052205461216f9087611ab2565b6001600160a01b03808b1660009081526004602052604080822093909355908a168152205461219e9086611a04565b6001600160a01b0389166000908152600460205260409020556121c08161243f565b6121ca84836124c8565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161220f91815260200190565b60405180910390a3505050505050505050565b60008060008060008061223487611a63565b6001600160a01b038f16600090815260046020526040902054959b509399509197509550935091506122669087611ab2565b6001600160a01b03808b16600090815260046020908152604080832094909455918b1681526005909152205461229c9084611a04565b6001600160a01b03891660009081526005602090815260408083209390935560049052205461219e9086611a04565b6000806000806000806122dd87611a63565b6001600160a01b038f16600090815260056020526040902054959b5093995091975095509350915061230f9088611ab2565b6001600160a01b038a166000908152600560209081526040808320939093556004905220546122669087611ab2565b60008060008060008061235087611a63565b6001600160a01b038f16600090815260046020526040902054959b5093995091975095509350915061216f9087611ab2565b600061085a606461239e601354856123c090919063ffffffff16565b906119c2565b600061085a606461239e601554856123c090919063ffffffff16565b6000826123cf5750600061085a565b60006123db8385612767565b9050826123e88583612747565b146109c65760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161075f565b600061244961199f565b9050600061245783836123c0565b306000908152600460205260409020549091506124749082611a04565b3060009081526004602090815260408083209390935560099052205460ff16156124c357306000908152600560205260409020546124b29084611a04565b306000908152600560205260409020555b505050565b600c546124d59083611ab2565b600c55600d546124e59082611a04565b600d555050565b6000602082840312156124fd578081fd5b81356109c681612809565b600060208284031215612519578081fd5b81516109c681612809565b60008060408385031215612536578081fd5b823561254181612809565b9150602083013561255181612809565b809150509250929050565b600080600060608486031215612570578081fd5b833561257b81612809565b9250602084013561258b81612809565b929592945050506040919091013590565b600080604083850312156125ae578182fd5b82356125b981612809565b946020939093013593505050565b6000602082840312156125d8578081fd5b5035919050565b600080604083850312156125f1578182fd5b8235915060208301358015158114612551578182fd5b6000815180845260208085019450808401835b8381101561263f5781516001600160a01b03168752958201959082019060010161261a565b509495945050505050565b6000602080835283518082850152825b818110156126765785810183015185820160400152820161265a565b818111156126875783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b8281526040602082015260006126eb6040830184612607565b949350505050565b85815284602082015260a06040820152600061271260a0830186612607565b6001600160a01b0394909416606083015250608001529392505050565b60008219821115612742576127426127f3565b500190565b60008261276257634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615612781576127816127f3565b500290565b600082821015612798576127986127f3565b500390565b600181811c908216806127b157607f821691505b602082108114156127d257634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156127ec576127ec6127f3565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038116811461281e57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220b23bb4f69ce1b4cb7f48fac2f6ae9718a56036496dd1d7389c877b7a0e00a51064736f6c63430008040033
Deployed Bytecode
0x6080604052600436106102295760003560e01c806352390c02116101235780638da5cb5b116100ab578063a9059cbb1161006f578063a9059cbb1461067a578063dd62ed3e1461069a578063ea2f0b37146106e0578063f2fde38b14610700578063ff8726021461072057600080fd5b80638da5cb5b146105e7578063906e9dd01461060557806395d89b4114610625578063a457c2d71461063a578063a5ece9411461065a57600080fd5b806370a08231116100f257806370a0823114610544578063715018a6146105645780638203f5fe1461057957806388f820201461058e5780638b4cee08146105c757600080fd5b806352390c02146104c05780635342acb4146104e0578063590f897e1461051957806367a907c21461052f57600080fd5b80632d838119116101b15780633bd5d173116101755780633bd5d1731461042a57806340b9a54b1461044a578063437823ec146104605780634549b0391461048057806349bd5a5e146104a057600080fd5b80632d83811914610392578063313ce567146103b25780633685d419146103d457806339509351146103f45780633b124fe71461041457600080fd5b806313114a9d116101f857806313114a9d146102d25780631694505e146102f157806318160ddd1461032957806323b872dd1461033e57806327c8f8351461035e57600080fd5b8063061c82d01461023557806306fdde0314610257578063095ea7b3146102825780630cc835a3146102b257600080fd5b3661023057005b600080fd5b34801561024157600080fd5b506102556102503660046125c7565b610735565b005b34801561026357600080fd5b5061026c6107b7565b604051610279919061264a565b60405180910390f35b34801561028e57600080fd5b506102a261029d36600461259c565b610849565b6040519015158152602001610279565b3480156102be57600080fd5b506102556102cd3660046125c7565b610860565b3480156102de57600080fd5b50600d545b604051908152602001610279565b3480156102fd57600080fd5b50601854610311906001600160a01b031681565b6040516001600160a01b039091168152602001610279565b34801561033557600080fd5b50600b546102e3565b34801561034a57600080fd5b506102a261035936600461255c565b6108e0565b34801561036a57600080fd5b506103117f000000000000000000000000000000000000000000000000000000000000dead81565b34801561039e57600080fd5b506102e36103ad3660046125c7565b610949565b3480156103be57600080fd5b5060105460405160ff9091168152602001610279565b3480156103e057600080fd5b506102556103ef3660046124ec565b6109cd565b34801561040057600080fd5b506102a261040f36600461259c565b610bbc565b34801561042057600080fd5b506102e360135481565b34801561043657600080fd5b506102556104453660046125c7565b610bf2565b34801561045657600080fd5b506102e360125481565b34801561046c57600080fd5b5061025561047b3660046124ec565b610cdc565b34801561048c57600080fd5b506102e361049b3660046125df565b610d2a565b3480156104ac57600080fd5b50601954610311906001600160a01b031681565b3480156104cc57600080fd5b506102556104db3660046124ec565b610db7565b3480156104ec57600080fd5b506102a26104fb3660046124ec565b6001600160a01b031660009081526008602052604090205460ff1690565b34801561052557600080fd5b506102e360115481565b34801561053b57600080fd5b50610255610f0a565b34801561055057600080fd5b506102e361055f3660046124ec565b610f64565b34801561057057600080fd5b50610255610fc3565b34801561058557600080fd5b50610255611037565b34801561059a57600080fd5b506102a26105a93660046124ec565b6001600160a01b031660009081526009602052604090205460ff1690565b3480156105d357600080fd5b506102556105e23660046125c7565b611251565b3480156105f357600080fd5b506000546001600160a01b0316610311565b34801561061157600080fd5b506102556106203660046124ec565b6112d1565b34801561063157600080fd5b5061026c61131d565b34801561064657600080fd5b506102a261065536600461259c565b61132c565b34801561066657600080fd5b50600354610311906001600160a01b031681565b34801561068657600080fd5b506102a261069536600461259c565b61137b565b3480156106a657600080fd5b506102e36106b5366004612524565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b3480156106ec57600080fd5b506102556106fb3660046124ec565b611388565b34801561070c57600080fd5b5061025561071b3660046124ec565b6113d3565b34801561072c57600080fd5b506102556114bd565b6000546001600160a01b031633146107685760405162461bcd60e51b815260040161075f9061269d565b60405180910390fd5b60028111156107b25760405162461bcd60e51b81526020600482015260166024820152757461784665652063616e27742065786365656420322560501b604482015260640161075f565b601355565b6060600e80546107c69061279d565b80601f01602080910402602001604051908101604052809291908181526020018280546107f29061279d565b801561083f5780601f106108145761010080835404028352916020019161083f565b820191906000526020600020905b81548152906001019060200180831161082257829003601f168201915b5050505050905090565b60006108563384846114f6565b5060015b92915050565b6000546001600160a01b0316331461088a5760405162461bcd60e51b815260040161075f9061269d565b60028111156108db5760405162461bcd60e51b815260206004820152601760248201527f627579204665652063616e277420657863656564203225000000000000000000604482015260640161075f565b601255565b60006108ed84848461161a565b61093f843361093a85604051806060016040528060288152602001612822602891396001600160a01b038a1660009081526006602090815260408083203384529091529020549190611965565b6114f6565b5060019392505050565b6000600c548211156109b05760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b606482015260840161075f565b60006109ba61199f565b90506109c683826119c2565b9392505050565b6000546001600160a01b031633146109f75760405162461bcd60e51b815260040161075f9061269d565b6001600160a01b03811660009081526009602052604090205460ff16610a5f5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015260640161075f565b60005b600a54811015610bb857816001600160a01b0316600a8281548110610a9757634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b03161415610ba657600a8054610ac290600190612786565b81548110610ae057634e487b7160e01b600052603260045260246000fd5b600091825260209091200154600a80546001600160a01b039092169183908110610b1a57634e487b7160e01b600052603260045260246000fd5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600582526040808220829055600990925220805460ff19169055600a805480610b8057634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610bb0816127d8565b915050610a62565b5050565b3360008181526006602090815260408083206001600160a01b0387168452909152812054909161085691859061093a9086611a04565b3360008181526009602052604090205460ff1615610c675760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b606482015260840161075f565b6000610c7283611a63565b505050506001600160a01b038416600090815260046020526040902054919250610c9e91905082611ab2565b6001600160a01b038316600090815260046020526040902055600c54610cc49082611ab2565b600c55600d54610cd49084611a04565b600d55505050565b6000546001600160a01b03163314610d065760405162461bcd60e51b815260040161075f9061269d565b6001600160a01b03166000908152600860205260409020805460ff19166001179055565b6000600b54831115610d7e5760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c7900604482015260640161075f565b81610d9d576000610d8e84611a63565b5093955061085a945050505050565b6000610da884611a63565b5092955061085a945050505050565b6000546001600160a01b03163314610de15760405162461bcd60e51b815260040161075f9061269d565b6001600160a01b03811660009081526009602052604090205460ff1615610e4a5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015260640161075f565b6001600160a01b03811660009081526004602052604090205415610ea4576001600160a01b038116600090815260046020526040902054610e8a90610949565b6001600160a01b0382166000908152600560205260409020555b6001600160a01b03166000818152600960205260408120805460ff19166001908117909155600a805491820181559091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80180546001600160a01b0319169091179055565b6000546001600160a01b03163314610f345760405162461bcd60e51b815260040161075f9061269d565b6002601281905560086011556013556019805460ff60a81b1916600160a81b179055674563918244f40000601755565b6001600160a01b03811660009081526009602052604081205460ff1615610fa157506001600160a01b031660009081526005602052604090205490565b6001600160a01b03821660009081526004602052604090205461085a90610949565b6000546001600160a01b03163314610fed5760405162461bcd60e51b815260040161075f9061269d565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146110615760405162461bcd60e51b815260040161075f9061269d565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156110b357600080fd5b505afa1580156110c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110eb9190612508565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561113357600080fd5b505afa158015611147573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116b9190612508565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156111b357600080fd5b505af11580156111c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111eb9190612508565b601980546001600160a01b03199081166001600160a01b0393841617909155601880549091169282169290921790915560008054909116815260086020526040808220805460ff1990811660019081179092553084529190922080549091169091179055565b6000546001600160a01b0316331461127b5760405162461bcd60e51b815260040161075f9061269d565b60088111156112cc5760405162461bcd60e51b815260206004820152601860248201527f73656c6c206665652063616e2774206578636565642038250000000000000000604482015260640161075f565b601155565b6000546001600160a01b031633146112fb5760405162461bcd60e51b815260040161075f9061269d565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6060600f80546107c69061279d565b6000610856338461093a8560405180606001604052806025815260200161284a602591393360009081526006602090815260408083206001600160a01b038d1684529091529020549190611965565b600061085633848461161a565b6000546001600160a01b031633146113b25760405162461bcd60e51b815260040161075f9061269d565b6001600160a01b03166000908152600860205260409020805460ff19169055565b6000546001600160a01b031633146113fd5760405162461bcd60e51b815260040161075f9061269d565b6001600160a01b0381166114625760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161075f565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146114e75760405162461bcd60e51b815260040161075f9061269d565b683635c9adc5dea00000601755565b6001600160a01b0383166115585760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161075f565b6001600160a01b0382166115b95760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161075f565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661167e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161075f565b6001600160a01b0382166116e05760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161075f565b600081116117425760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161075f565b6000546001600160a01b0384811691161480159061176e57506000546001600160a01b03838116911614155b156117cc57601954600160a81b900460ff166117cc5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642e0000000000000000604482015260640161075f565b6019546001600160a01b0384811691161480156117f757506018546001600160a01b03838116911614155b801561181c57506001600160a01b03821660009081526008602052604090205460ff16155b1561187f5760175481111561183057600080fd5b6001600160a01b038216600090815260076020526040902054421161185457600080fd5b61185f42601e61272f565b6001600160a01b0383166000908152600760205260409020556012546015555b600061188a30610f64565b601954909150600160a01b900460ff161580156118b457506019546001600160a01b038481169116145b156118d55780156118ce5780156118ce576118ce81611af4565b6011546015555b6019546000906001600160a01b038681169116148061190157506019546001600160a01b038581169116145b801561194957506001600160a01b03851660009081526008602052604090205460ff168061194757506001600160a01b03841660009081526008602052604090205460ff165b155b15611952575060015b61195e85858584611b31565b5050505050565b600081848411156119895760405162461bcd60e51b815260040161075f919061264a565b5060006119968486612786565b95945050505050565b60008060006119ac611c5c565b90925090506119bb82826119c2565b9250505090565b60006109c683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611e16565b600080611a11838561272f565b9050838110156109c65760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161075f565b6000806000806000806000806000611a7a8a611e44565b9250925092506000806000611a988d8686611a9361199f565b611e86565b919f909e50909c50959a5093985091965092945050505050565b60006109c683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611965565b6019805460ff60a01b1916600160a01b179055611b1081611ed6565b478015611b2057611b2047612094565b50506019805460ff60a01b19169055565b80611b3e57611b3e6120ce565b6001600160a01b03841660009081526009602052604090205460ff168015611b7f57506001600160a01b03831660009081526009602052604090205460ff16155b15611b9457611b8f8484846120fc565b611c40565b6001600160a01b03841660009081526009602052604090205460ff16158015611bd557506001600160a01b03831660009081526009602052604090205460ff165b15611be557611b8f848484612222565b6001600160a01b03841660009081526009602052604090205460ff168015611c2557506001600160a01b03831660009081526009602052604090205460ff165b15611c3557611b8f8484846122cb565b611c4084848461233e565b80611c5657611c56601454601355601654601555565b50505050565b600c54600b546000918291825b600a54811015611de6578260046000600a8481548110611c9957634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020541180611d1257508160056000600a8481548110611ceb57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15611d2857600c54600b54945094505050509091565b611d7c60046000600a8481548110611d5057634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020548490611ab2565b9250611dd260056000600a8481548110611da657634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020548390611ab2565b915080611dde816127d8565b915050611c69565b50600b54600c54611df6916119c2565b821015611e0d57600c54600b549350935050509091565b90939092509050565b60008183611e375760405162461bcd60e51b815260040161075f919061264a565b5060006119968486612747565b600080600080611e5385612382565b90506000611e60866123a4565b90506000611e7882611e728986611ab2565b90611ab2565b979296509094509092505050565b6000808080611e9588866123c0565b90506000611ea388876123c0565b90506000611eb188886123c0565b90506000611ec382611e728686611ab2565b939b939a50919850919650505050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611f1957634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152601854604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015611f6d57600080fd5b505afa158015611f81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fa59190612508565b81600181518110611fc657634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152601854611fec91309116846114f6565b60185460405163791ac94760e01b81526001600160a01b039091169063791ac947906120259085906000908690309042906004016126f3565b600060405180830381600087803b15801561203f57600080fd5b505af1158015612053573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516120889291906126d2565b60405180910390a15050565b6003546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610bb8573d6000803e3d6000fd5b6013541580156120de5750601554155b156120e557565b601380546014556015805460165560009182905555565b60008060008060008061210e87611a63565b6001600160a01b038f16600090815260056020526040902054959b509399509197509550935091506121409088611ab2565b6001600160a01b038a1660009081526005602090815260408083209390935560049052205461216f9087611ab2565b6001600160a01b03808b1660009081526004602052604080822093909355908a168152205461219e9086611a04565b6001600160a01b0389166000908152600460205260409020556121c08161243f565b6121ca84836124c8565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161220f91815260200190565b60405180910390a3505050505050505050565b60008060008060008061223487611a63565b6001600160a01b038f16600090815260046020526040902054959b509399509197509550935091506122669087611ab2565b6001600160a01b03808b16600090815260046020908152604080832094909455918b1681526005909152205461229c9084611a04565b6001600160a01b03891660009081526005602090815260408083209390935560049052205461219e9086611a04565b6000806000806000806122dd87611a63565b6001600160a01b038f16600090815260056020526040902054959b5093995091975095509350915061230f9088611ab2565b6001600160a01b038a166000908152600560209081526040808320939093556004905220546122669087611ab2565b60008060008060008061235087611a63565b6001600160a01b038f16600090815260046020526040902054959b5093995091975095509350915061216f9087611ab2565b600061085a606461239e601354856123c090919063ffffffff16565b906119c2565b600061085a606461239e601554856123c090919063ffffffff16565b6000826123cf5750600061085a565b60006123db8385612767565b9050826123e88583612747565b146109c65760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161075f565b600061244961199f565b9050600061245783836123c0565b306000908152600460205260409020549091506124749082611a04565b3060009081526004602090815260408083209390935560099052205460ff16156124c357306000908152600560205260409020546124b29084611a04565b306000908152600560205260409020555b505050565b600c546124d59083611ab2565b600c55600d546124e59082611a04565b600d555050565b6000602082840312156124fd578081fd5b81356109c681612809565b600060208284031215612519578081fd5b81516109c681612809565b60008060408385031215612536578081fd5b823561254181612809565b9150602083013561255181612809565b809150509250929050565b600080600060608486031215612570578081fd5b833561257b81612809565b9250602084013561258b81612809565b929592945050506040919091013590565b600080604083850312156125ae578182fd5b82356125b981612809565b946020939093013593505050565b6000602082840312156125d8578081fd5b5035919050565b600080604083850312156125f1578182fd5b8235915060208301358015158114612551578182fd5b6000815180845260208085019450808401835b8381101561263f5781516001600160a01b03168752958201959082019060010161261a565b509495945050505050565b6000602080835283518082850152825b818110156126765785810183015185820160400152820161265a565b818111156126875783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b8281526040602082015260006126eb6040830184612607565b949350505050565b85815284602082015260a06040820152600061271260a0830186612607565b6001600160a01b0394909416606083015250608001529392505050565b60008219821115612742576127426127f3565b500190565b60008261276257634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615612781576127816127f3565b500290565b600082821015612798576127986127f3565b500390565b600181811c908216806127b157607f821691505b602082108114156127d257634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156127ec576127ec6127f3565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038116811461281e57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220b23bb4f69ce1b4cb7f48fac2f6ae9718a56036496dd1d7389c877b7a0e00a51064736f6c63430008040033
Deployed Bytecode Sourcemap
14423:17686:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31121:156;;;;;;;;;;-1:-1:-1;31121:156:0;;;;;:::i;:::-;;:::i;:::-;;16908:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17820:161;;;;;;;;;;-1:-1:-1;17820:161:0;;;;;:::i;:::-;;:::i;:::-;;;3681:14:1;;3674:22;3656:41;;3644:2;3629:18;17820:161:0;3611:92:1;31289:150:0;;;;;;;;;;-1:-1:-1;31289:150:0;;;;;:::i;:::-;;:::i;18941:87::-;;;;;;;;;;-1:-1:-1;19010:10:0;;18941:87;;;11200:25:1;;;11188:2;11173:18;18941:87:0;11155:76:1;15684:41:0;;;;;;;;;;-1:-1:-1;15684:41:0;;;;-1:-1:-1;;;;;15684:41:0;;;;;;-1:-1:-1;;;;;2939:32:1;;;2921:51;;2909:2;2894:18;15684:41:0;2876:102:1;17185:95:0;;;;;;;;;;-1:-1:-1;17265:7:0;;17185:95;;17989:313;;;;;;;;;;-1:-1:-1;17989:313:0;;;;;:::i;:::-;;:::i;14642:81::-;;;;;;;;;;;;;;;19883:253;;;;;;;;;;-1:-1:-1;19883:253:0;;;;;:::i;:::-;;:::i;17094:83::-;;;;;;;;;;-1:-1:-1;17160:9:0;;17094:83;;17160:9;;;;12302:36:1;;12290:2;12275:18;17094:83:0;12257:87:1;20487:479:0;;;;;;;;;;-1:-1:-1;20487:479:0;;;;;:::i;:::-;;:::i;18310:218::-;;;;;;;;;;-1:-1:-1;18310:218:0;;;;;:::i;:::-;;:::i;15464:22::-;;;;;;;;;;;;;;;;19050:377;;;;;;;;;;-1:-1:-1;19050:377:0;;;;;:::i;:::-;;:::i;15435:22::-;;;;;;;;;;;;;;;;30876:111;;;;;;;;;;-1:-1:-1;30876:111:0;;;;;:::i;:::-;;:::i;19439:436::-;;;;;;;;;;-1:-1:-1;19439:436:0;;;;;:::i;:::-;;:::i;15732:28::-;;;;;;;;;;-1:-1:-1;15732:28:0;;;;-1:-1:-1;;;;;15732:28:0;;;20144:335;;;;;;;;;;-1:-1:-1;20144:335:0;;;;;:::i;:::-;;:::i;30741:123::-;;;;;;;;;;-1:-1:-1;30741:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;30829:27:0;30805:4;30829:27;;;:18;:27;;;;;;;;;30741:123;15405:23;;;;;;;;;;;;;;;;16716:184;;;;;;;;;;;;;:::i;17288:198::-;;;;;;;;;;-1:-1:-1;17288:198:0;;;;;:::i;:::-;;:::i;6054:148::-;;;;;;;;;;;;;:::i;16262:442::-;;;;;;;;;;;;;:::i;18813:120::-;;;;;;;;;;-1:-1:-1;18813:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;18905:20:0;18881:4;18905:20;;;:11;:20;;;;;;;;;18813:120;31451:156;;;;;;;;;;-1:-1:-1;31451:156:0;;;;;:::i;:::-;;:::i;5829:79::-;;;;;;;;;;-1:-1:-1;5867:7:0;5894:6;-1:-1:-1;;;;;5894:6:0;5829:79;;31619:141;;;;;;;;;;-1:-1:-1;31619:141:0;;;;;:::i;:::-;;:::i;16999:87::-;;;;;;;;;;;;;:::i;18536:269::-;;;;;;;;;;-1:-1:-1;18536:269:0;;;;;:::i;:::-;;:::i;14541:93::-;;;;;;;;;;-1:-1:-1;14541:93:0;;;;-1:-1:-1;;;;;14541:93:0;;;17494:167;;;;;;;;;;-1:-1:-1;17494:167:0;;;;;:::i;:::-;;:::i;17669:143::-;;;;;;;;;;-1:-1:-1;17669:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;17777:18:0;;;17750:7;17777:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;17669:143;30999:110;;;;;;;;;;-1:-1:-1;30999:110:0;;;;;:::i;:::-;;:::i;6210:244::-;;;;;;;;;;-1:-1:-1;6210:244:0;;;;;:::i;:::-;;:::i;31910:96::-;;;;;;;;;;;;;:::i;31121:156::-;5963:6;;-1:-1:-1;;;;;5963:6:0;213:10;5963:22;5955:67;;;;-1:-1:-1;;;5955:67:0;;;;;;;:::i;:::-;;;;;;;;;31214:1:::1;31204:6;:11;;31195:47;;;::::0;-1:-1:-1;;;31195:47:0;;10905:2:1;31195:47:0::1;::::0;::::1;10887:21:1::0;10944:2;10924:18;;;10917:30;-1:-1:-1;;;10963:18:1;;;10956:52;11025:18;;31195:47:0::1;10877:172:1::0;31195:47:0::1;31253:7;:16:::0;31121:156::o;16908:83::-;16945:13;16978:5;16971:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16908:83;:::o;17820:161::-;17895:4;17912:39;213:10;17935:7;17944:6;17912:8;:39::i;:::-;-1:-1:-1;17969:4:0;17820:161;;;;;:::o;31289:150::-;5963:6;;-1:-1:-1;;;;;5963:6:0;213:10;5963:22;5955:67;;;;-1:-1:-1;;;5955:67:0;;;;;;;:::i;:::-;31375:1:::1;31365:6;:11;;31356:48;;;::::0;-1:-1:-1;;;31356:48:0;;7090:2:1;31356:48:0::1;::::0;::::1;7072:21:1::0;7129:2;7109:18;;;7102:30;7168:25;7148:18;;;7141:53;7211:18;;31356:48:0::1;7062:173:1::0;31356:48:0::1;31415:7;:16:::0;31289:150::o;17989:313::-;18087:4;18104:36;18114:6;18122:9;18133:6;18104:9;:36::i;:::-;18151:121;18160:6;213:10;18182:89;18220:6;18182:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18182:19:0;;;;;;:11;:19;;;;;;;;213:10;18182:33;;;;;;;;;;:37;:89::i;:::-;18151:8;:121::i;:::-;-1:-1:-1;18290:4:0;17989:313;;;;;:::o;19883:253::-;19949:7;19988;;19977;:18;;19969:73;;;;-1:-1:-1;;;19969:73:0;;5157:2:1;19969:73:0;;;5139:21:1;5196:2;5176:18;;;5169:30;5235:34;5215:18;;;5208:62;-1:-1:-1;;;5286:18:1;;;5279:40;5336:19;;19969:73:0;5129:232:1;19969:73:0;20053:19;20076:10;:8;:10::i;:::-;20053:33;-1:-1:-1;20104:24:0;:7;20053:33;20104:11;:24::i;:::-;20097:31;19883:253;-1:-1:-1;;;19883:253:0:o;20487:479::-;5963:6;;-1:-1:-1;;;;;5963:6:0;213:10;5963:22;5955:67;;;;-1:-1:-1;;;5955:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20569:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;20561:60;;;::::0;-1:-1:-1;;;20561:60:0;;6734:2:1;20561:60:0::1;::::0;::::1;6716:21:1::0;6773:2;6753:18;;;6746:30;6812:29;6792:18;;;6785:57;6859:18;;20561:60:0::1;6706:177:1::0;20561:60:0::1;20637:9;20632:327;20656:9;:16:::0;20652:20;::::1;20632:327;;;20714:7;-1:-1:-1::0;;;;;20698:23:0::1;:9;20708:1;20698:12;;;;;;-1:-1:-1::0;;;20698:12:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;20698:12:0::1;:23;20694:254;;;20757:9;20767:16:::0;;:20:::1;::::0;20786:1:::1;::::0;20767:20:::1;:::i;:::-;20757:31;;;;;;-1:-1:-1::0;;;20757:31:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;20742:9:::1;:12:::0;;-1:-1:-1;;;;;20757:31:0;;::::1;::::0;20752:1;;20742:12;::::1;;;-1:-1:-1::0;;;20742:12:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;20742:46:0::1;-1:-1:-1::0;;;;;20742:46:0;;::::1;;::::0;;20807:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;20846:11:::1;:20:::0;;;;:28;;-1:-1:-1;;20846:28:0::1;::::0;;20893:9:::1;:15:::0;;;::::1;;-1:-1:-1::0;;;20893:15:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;;-1:-1:-1;;20893:15:0;;;;;-1:-1:-1;;;;;;20893:15:0::1;::::0;;;;;20632:327:::1;20487:479:::0;:::o;20694:254::-:1;20674:3:::0;::::1;::::0;::::1;:::i;:::-;;;;20632:327;;;;20487:479:::0;:::o;18310:218::-;213:10;18398:4;18447:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;18447:34:0;;;;;;;;;;18398:4;;18415:83;;18438:7;;18447:50;;18486:10;18447:38;:50::i;19050:377::-;213:10;19102:14;19151:19;;;:11;:19;;;;;;;;19150:20;19142:77;;;;-1:-1:-1;;;19142:77:0;;10139:2:1;19142:77:0;;;10121:21:1;10178:2;10158:18;;;10151:30;10217:34;10197:18;;;10190:62;-1:-1:-1;;;10268:18:1;;;10261:42;10320:19;;19142:77:0;10111:234:1;19142:77:0;19231:15;19255:19;19266:7;19255:10;:19::i;:::-;-1:-1:-1;;;;;;;;;19303:15:0;;;;;;:7;:15;;;;;;19230:44;;-1:-1:-1;19303:28:0;;:15;-1:-1:-1;19230:44:0;19303:19;:28::i;:::-;-1:-1:-1;;;;;19285:15:0;;;;;;:7;:15;;;;;:46;19352:7;;:20;;19364:7;19352:11;:20::i;:::-;19342:7;:30;19396:10;;:23;;19411:7;19396:14;:23::i;:::-;19383:10;:36;-1:-1:-1;;;19050:377:0:o;30876:111::-;5963:6;;-1:-1:-1;;;;;5963:6:0;213:10;5963:22;5955:67;;;;-1:-1:-1;;;5955:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;30945:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;30945:34:0::1;30975:4;30945:34;::::0;;30876:111::o;19439:436::-;19529:7;19568;;19557;:18;;19549:62;;;;-1:-1:-1;;;19549:62:0;;7442:2:1;19549:62:0;;;7424:21:1;7481:2;7461:18;;;7454:30;7520:33;7500:18;;;7493:61;7571:18;;19549:62:0;7414:181:1;19549:62:0;19627:17;19622:246;;19662:15;19686:19;19697:7;19686:10;:19::i;:::-;-1:-1:-1;19661:44:0;;-1:-1:-1;19720:14:0;;-1:-1:-1;;;;;19720:14:0;19622:246;19769:23;19800:19;19811:7;19800:10;:19::i;:::-;-1:-1:-1;19767:52:0;;-1:-1:-1;19834:22:0;;-1:-1:-1;;;;;19834:22:0;20144:335;5963:6;;-1:-1:-1;;;;;5963:6:0;213:10;5963:22;5955:67;;;;-1:-1:-1;;;5955:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20229:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;20228:21;20220:61;;;::::0;-1:-1:-1;;;20220:61:0;;6734:2:1;20220:61:0::1;::::0;::::1;6716:21:1::0;6773:2;6753:18;;;6746:30;6812:29;6792:18;;;6785:57;6859:18;;20220:61:0::1;6706:177:1::0;20220:61:0::1;-1:-1:-1::0;;;;;20295:16:0;::::1;20314:1;20295:16:::0;;;:7:::1;:16;::::0;;;;;:20;20292:108:::1;;-1:-1:-1::0;;;;;20371:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;20351:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;20332:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;20292:108:::1;-1:-1:-1::0;;;;;20410:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;20410:27:0::1;20433:4;20410:27:::0;;::::1;::::0;;;20448:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;20448:23:0::1;::::0;;::::1;::::0;;20144:335::o;16716:184::-;5963:6;;-1:-1:-1;;;;;5963:6:0;213:10;5963:22;5955:67;;;;-1:-1:-1;;;5955:67:0;;;;;;;:::i;:::-;16782:1:::1;16772:7;:11:::0;;;16805:1:::1;16794:8;:12:::0;16817:7:::1;:9:::0;16837:11:::1;:18:::0;;-1:-1:-1;;;;16837:18:0::1;-1:-1:-1::0;;;16837:18:0::1;::::0;;16881:11:::1;16866:12;:26:::0;16716:184::o;17288:198::-;-1:-1:-1;;;;;17378:20:0;;17354:7;17378:20;;;:11;:20;;;;;;;;17374:49;;;-1:-1:-1;;;;;;17407:16:0;;;;;:7;:16;;;;;;;17288:198::o;17374:49::-;-1:-1:-1;;;;;17461:16:0;;;;;;:7;:16;;;;;;17441:37;;:19;:37::i;6054:148::-;5963:6;;-1:-1:-1;;;;;5963:6:0;213:10;5963:22;5955:67;;;;-1:-1:-1;;;5955:67:0;;;;;;;:::i;:::-;6161:1:::1;6145:6:::0;;6124:40:::1;::::0;-1:-1:-1;;;;;6145:6:0;;::::1;::::0;6124:40:::1;::::0;6161:1;;6124:40:::1;6192:1;6175:19:::0;;-1:-1:-1;;;;;;6175:19:0::1;::::0;;6054:148::o;16262:442::-;5963:6;;-1:-1:-1;;;;;5963:6:0;213:10;5963:22;5955:67;;;;-1:-1:-1;;;5955:67:0;;;;;;;:::i;:::-;16318:35:::1;16375:42;16318:100;;16463:16;-1:-1:-1::0;;;;;16463:24:0::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;16445:66:0::1;;16520:4;16527:16;-1:-1:-1::0;;;;;16527:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16445:106;::::0;-1:-1:-1;;;;;;16445:106:0::1;::::0;;;;;;-1:-1:-1;;;;;3437:15:1;;;16445:106:0::1;::::0;::::1;3419:34:1::0;3489:15;;3469:18;;;3462:43;3354:18;;16445:106:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16429:13;:122:::0;;-1:-1:-1;;;;;;16429:122:0;;::::1;-1:-1:-1::0;;;;;16429:122:0;;::::1;;::::0;;;16564:15:::1;:34:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;-1:-1:-1;5894:6:0;;;;;16611:27;;:18:::1;:27;::::0;;;;;:34;;-1:-1:-1;;16611:34:0;;::::1;-1:-1:-1::0;16611:34:0;;::::1;::::0;;;16683:4:::1;16656:33:::0;;;;;;:40;;;;::::1;::::0;;::::1;::::0;;16262:442::o;31451:156::-;5963:6;;-1:-1:-1;;;;;5963:6:0;213:10;5963:22;5955:67;;;;-1:-1:-1;;;5955:67:0;;;;;;;:::i;:::-;31540:1:::1;31529:7;:12;;31520:50;;;::::0;-1:-1:-1;;;31520:50:0;;10552:2:1;31520:50:0::1;::::0;::::1;10534:21:1::0;10591:2;10571:18;;;10564:30;10630:26;10610:18;;;10603:54;10674:18;;31520:50:0::1;10524:174:1::0;31520:50:0::1;31581:8;:18:::0;31451:156::o;31619:141::-;5963:6;;-1:-1:-1;;;;;5963:6:0;213:10;5963:22;5955:67;;;;-1:-1:-1;;;5955:67:0;;;;;;;:::i;:::-;31707:16:::1;:45:::0;;-1:-1:-1;;;;;;31707:45:0::1;-1:-1:-1::0;;;;;31707:45:0;;;::::1;::::0;;;::::1;::::0;;31619:141::o;16999:87::-;17038:13;17071:7;17064:14;;;;;:::i;18536:269::-;18629:4;18646:129;213:10;18669:7;18678:96;18717:15;18678:96;;;;;;;;;;;;;;;;;213:10;18678:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;18678:34:0;;;;;;;;;;;;:38;:96::i;17494:167::-;17572:4;17589:42;213:10;17613:9;17624:6;17589:9;:42::i;30999:110::-;5963:6;;-1:-1:-1;;;;;5963:6:0;213:10;5963:22;5955:67;;;;-1:-1:-1;;;5955:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;31066:27:0::1;31096:5;31066:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;31066:35:0::1;::::0;;30999:110::o;6210:244::-;5963:6;;-1:-1:-1;;;;;5963:6:0;213:10;5963:22;5955:67;;;;-1:-1:-1;;;5955:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6299:22:0;::::1;6291:73;;;::::0;-1:-1:-1;;;6291:73:0;;5568:2:1;6291:73:0::1;::::0;::::1;5550:21:1::0;5607:2;5587:18;;;5580:30;5646:34;5626:18;;;5619:62;-1:-1:-1;;;5697:18:1;;;5690:36;5743:19;;6291:73:0::1;5540:228:1::0;6291:73:0::1;6401:6;::::0;;6380:38:::1;::::0;-1:-1:-1;;;;;6380:38:0;;::::1;::::0;6401:6;::::1;::::0;6380:38:::1;::::0;::::1;6429:6;:17:::0;;-1:-1:-1;;;;;;6429:17:0::1;-1:-1:-1::0;;;;;6429:17:0;;;::::1;::::0;;;::::1;::::0;;6210:244::o;31910:96::-;5963:6;;-1:-1:-1;;;;;5963:6:0;213:10;5963:22;5955:67;;;;-1:-1:-1;;;5955:67:0;;;;;;;:::i;:::-;31986:12:::1;31971;:27:::0;31910:96::o;20974:337::-;-1:-1:-1;;;;;21067:19:0;;21059:68;;;;-1:-1:-1;;;21059:68:0;;9381:2:1;21059:68:0;;;9363:21:1;9420:2;9400:18;;;9393:30;9459:34;9439:18;;;9432:62;-1:-1:-1;;;9510:18:1;;;9503:34;9554:19;;21059:68:0;9353:226:1;21059:68:0;-1:-1:-1;;;;;21146:21:0;;21138:68;;;;-1:-1:-1;;;21138:68:0;;5975:2:1;21138:68:0;;;5957:21:1;6014:2;5994:18;;;5987:30;6053:34;6033:18;;;6026:62;-1:-1:-1;;;6104:18:1;;;6097:32;6146:19;;21138:68:0;5947:224:1;21138:68:0;-1:-1:-1;;;;;21219:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;21271:32;;11200:25:1;;;21271:32:0;;11173:18:1;21271:32:0;;;;;;;20974:337;;;:::o;21319:1503::-;-1:-1:-1;;;;;21441:18:0;;21433:68;;;;-1:-1:-1;;;21433:68:0;;8975:2:1;21433:68:0;;;8957:21:1;9014:2;8994:18;;;8987:30;9053:34;9033:18;;;9026:62;-1:-1:-1;;;9104:18:1;;;9097:35;9149:19;;21433:68:0;8947:227:1;21433:68:0;-1:-1:-1;;;;;21520:16:0;;21512:64;;;;-1:-1:-1;;;21512:64:0;;4753:2:1;21512:64:0;;;4735:21:1;4792:2;4772:18;;;4765:30;4831:34;4811:18;;;4804:62;-1:-1:-1;;;4882:18:1;;;4875:33;4925:19;;21512:64:0;4725:225:1;21512:64:0;21604:1;21595:6;:10;21587:64;;;;-1:-1:-1;;;21587:64:0;;8565:2:1;21587:64:0;;;8547:21:1;8604:2;8584:18;;;8577:30;8643:34;8623:18;;;8616:62;-1:-1:-1;;;8694:18:1;;;8687:39;8743:19;;21587:64:0;8537:231:1;21587:64:0;5867:7;5894:6;-1:-1:-1;;;;;21665:14:0;;;5894:6;;21665:14;;;;:30;;-1:-1:-1;5867:7:0;5894:6;-1:-1:-1;;;;;21683:12:0;;;5894:6;;21683:12;;21665:30;21661:84;;;21705:11;;-1:-1:-1;;;21705:11:0;;;;21697:48;;;;-1:-1:-1;;;21697:48:0;;9786:2:1;21697:48:0;;;9768:21:1;9825:2;9805:18;;;9798:30;9864:26;9844:18;;;9837:54;9908:18;;21697:48:0;9758:174:1;21697:48:0;21834:13;;-1:-1:-1;;;;;21826:21:0;;;21834:13;;21826:21;:55;;;;-1:-1:-1;21865:15:0;;-1:-1:-1;;;;;21851:30:0;;;21865:15;;21851:30;;21826:55;:82;;;;-1:-1:-1;;;;;;21886:22:0;;;;;;:18;:22;;;;;;;;21885:23;21826:82;21823:325;;;21943:12;;21933:6;:22;;21925:31;;;;;;-1:-1:-1;;;;;21979:12:0;;;;;;:8;:12;;;;;;21994:15;-1:-1:-1;21971:39:0;;;;;;22040:30;:15;22059:10;22040:30;:::i;:::-;-1:-1:-1;;;;;22025:12:0;;;;;;:8;:12;;;;;:45;22115:7;;22099:13;:23;21823:325;22160:28;22191:24;22209:4;22191:9;:24::i;:::-;22257:6;;22160:55;;-1:-1:-1;;;;22257:6:0;;;;22256:7;:30;;;;-1:-1:-1;22273:13:0;;-1:-1:-1;;;;;22267:19:0;;;22273:13;;22267:19;22256:30;22252:261;;;22306:24;;22303:146;;22354:24;;22351:78;;22397:32;22408:20;22397:10;:32::i;:::-;22493:8;;22477:13;:24;22252:261;22620:13;;22533:12;;-1:-1:-1;;;;;22614:19:0;;;22620:13;;22614:19;;:40;;-1:-1:-1;22641:13:0;;-1:-1:-1;;;;;22637:17:0;;;22641:13;;22637:17;22614:40;22613:99;;;;-1:-1:-1;;;;;;22661:24:0;;;;;;:18;:24;;;;;;;;;:50;;-1:-1:-1;;;;;;22689:22:0;;;;;;:18;:22;;;;;;;;22661:50;22659:53;22613:99;22608:148;;;-1:-1:-1;22740:4:0;22608:148;22776:38;22791:4;22796:2;22799:6;22806:7;22776:14;:38::i;:::-;21319:1503;;;;;:::o;1528:192::-;1614:7;1650:12;1642:6;;;;1634:29;;;;-1:-1:-1;;;1634:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1674:9:0;1686:5;1690:1;1686;:5;:::i;:::-;1674:17;1528:192;-1:-1:-1;;;;;1528:192:0:o;28891:163::-;28932:7;28953:15;28970;28989:19;:17;:19::i;:::-;28952:56;;-1:-1:-1;28952:56:0;-1:-1:-1;29026:20:0;28952:56;;29026:11;:20::i;:::-;29019:27;;;;28891:163;:::o;1988:132::-;2046:7;2073:39;2077:1;2080;2073:39;;;;;;;;;;;;;;;;;:3;:39::i;1195:181::-;1253:7;;1285:5;1289:1;1285;:5;:::i;:::-;1273:17;;1314:1;1309;:6;;1301:46;;;;-1:-1:-1;;;1301:46:0;;6378:2:1;1301:46:0;;;6360:21:1;6417:2;6397:18;;;6390:30;6456:29;6436:18;;;6429:57;6503:18;;1301:46:0;6350:177:1;27689:419:0;27748:7;27757;27766;27775;27784;27793;27814:23;27839:12;27853:18;27875:20;27887:7;27875:11;:20::i;:::-;27813:82;;;;;;27907:15;27924:23;27949:12;27965:50;27977:7;27986:4;27992:10;28004;:8;:10::i;:::-;27965:11;:50::i;:::-;27906:109;;;;-1:-1:-1;27906:109:0;;-1:-1:-1;28066:15:0;;-1:-1:-1;28083:4:0;;-1:-1:-1;28089:10:0;;-1:-1:-1;27689:419:0;;-1:-1:-1;;;;;27689:419:0:o;1384:136::-;1442:7;1469:43;1473:1;1476;1469:43;;;;;;;;;;;;;;;;;:3;:43::i;22830:334::-;16054:6;:13;;-1:-1:-1;;;;16054:13:0;-1:-1:-1;;;16054:13:0;;;22911:38:::1;22928:20:::0;22911:16:::1;:38::i;:::-;23036:21;23071:22:::0;;23068:89:::1;;23110:35;23123:21;23110:12;:35::i;:::-;-1:-1:-1::0;;16090:6:0;:14;;-1:-1:-1;;;;16090:14:0;;;22830:334::o;24494:704::-;24605:7;24601:40;;24627:14;:12;:14::i;:::-;-1:-1:-1;;;;;24666:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;24690:22:0;;;;;;:11;:22;;;;;;;;24689:23;24666:46;24662:467;;;24729:48;24751:6;24759:9;24770:6;24729:21;:48::i;:::-;24662:467;;;-1:-1:-1;;;;;24800:19:0;;;;;;:11;:19;;;;;;;;24799:20;:46;;;;-1:-1:-1;;;;;;24823:22:0;;;;;;:11;:22;;;;;;;;24799:46;24795:334;;;24862:46;24882:6;24890:9;24901:6;24862:19;:46::i;24795:334::-;-1:-1:-1;;;;;24930:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;24953:22:0;;;;;;:11;:22;;;;;;;;24930:45;24926:203;;;24992:48;25014:6;25022:9;25033:6;24992:21;:48::i;24926:203::-;25073:44;25091:6;25099:9;25110:6;25073:17;:44::i;:::-;25153:7;25149:41;;25175:15;30662;;30652:7;:25;30704:21;;30688:13;:37;30608:125;25175:15;24494:704;;;;:::o;29062:561::-;29159:7;;29195;;29112;;;;;29219:289;29243:9;:16;29239:20;;29219:289;;;29309:7;29285;:21;29293:9;29303:1;29293:12;;;;;;-1:-1:-1;;;29293:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;29293:12:0;29285:21;;;;;;;;;;;;;:31;;:66;;;29344:7;29320;:21;29328:9;29338:1;29328:12;;;;;;-1:-1:-1;;;29328:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;29328:12:0;29320:21;;;;;;;;;;;;;:31;29285:66;29281:97;;;29361:7;;29370;;29353:25;;;;;;;29062:561;;:::o;29281:97::-;29403:34;29415:7;:21;29423:9;29433:1;29423:12;;;;;;-1:-1:-1;;;29423:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;29423:12:0;29415:21;;;;;;;;;;;;;29403:7;;:11;:34::i;:::-;29393:44;;29462:34;29474:7;:21;29482:9;29492:1;29482:12;;;;;;-1:-1:-1;;;29482:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;29482:12:0;29474:21;;;;;;;;;;;;;29462:7;;:11;:34::i;:::-;29452:44;-1:-1:-1;29261:3:0;;;;:::i;:::-;;;;29219:289;;;-1:-1:-1;29544:7:0;;29532;;:20;;:11;:20::i;:::-;29522:7;:30;29518:61;;;29562:7;;29571;;29554:25;;;;;;29062:561;;:::o;29518:61::-;29598:7;;29607;;-1:-1:-1;29062:561:0;-1:-1:-1;29062:561:0:o;2128:278::-;2214:7;2249:12;2242:5;2234:28;;;;-1:-1:-1;;;2234:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2273:9:0;2285:5;2289:1;2285;:5;:::i;28116:330::-;28176:7;28185;28194;28214:12;28229:24;28245:7;28229:15;:24::i;:::-;28214:39;;28264:18;28285:30;28307:7;28285:21;:30::i;:::-;28264:51;-1:-1:-1;28326:23:0;28352:33;28264:51;28352:17;:7;28364:4;28352:11;:17::i;:::-;:21;;:33::i;:::-;28326:59;28421:4;;-1:-1:-1;28427:10:0;;-1:-1:-1;28116:330:0;;-1:-1:-1;;;28116:330:0:o;28454:429::-;28569:7;;;;28625:24;:7;28637:11;28625;:24::i;:::-;28607:42;-1:-1:-1;28660:12:0;28675:21;:4;28684:11;28675:8;:21::i;:::-;28660:36;-1:-1:-1;28707:18:0;28728:27;:10;28743:11;28728:14;:27::i;:::-;28707:48;-1:-1:-1;28766:23:0;28792:33;28707:48;28792:17;:7;28804:4;28792:11;:17::i;:33::-;28844:7;;;;-1:-1:-1;28870:4:0;;-1:-1:-1;28454:429:0;;-1:-1:-1;;;;;;;28454:429:0:o;23293:666::-;23443:16;;;23457:1;23443:16;;;;;;;;23419:21;;23443:16;;;;;;;;;;-1:-1:-1;23443:16:0;23419:40;;23488:4;23470;23475:1;23470:7;;;;;;-1:-1:-1;;;23470:7:0;;;;;;;;;-1:-1:-1;;;;;23470:23:0;;;:7;;;;;;;;;;:23;;;;23514:15;;:22;;;-1:-1:-1;;;23514:22:0;;;;:15;;;;;:20;;:22;;;;;23470:7;;23514:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23504:4;23509:1;23504:7;;;;;;-1:-1:-1;;;23504:7:0;;;;;;;;;-1:-1:-1;;;;;23504:32:0;;;:7;;;;;;;;;:32;23581:15;;23549:62;;23566:4;;23581:15;23599:11;23549:8;:62::i;:::-;23650:15;;:240;;-1:-1:-1;;;23650:240:0;;-1:-1:-1;;;;;23650:15:0;;;;:66;;:240;;23731:11;;23650:15;;23801:4;;23828;;23864:15;;23650:240;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23916:35;23933:11;23946:4;23916:35;;;;;;;:::i;:::-;;;;;;;;23293:666;;:::o;23176:98::-;23233:16;;:33;;-1:-1:-1;;;;;23233:16:0;;;;:33;;;;;23259:6;;23233:16;:33;:16;:33;23259:6;23233:16;:33;;;;;;;;;;;;;;;;;;;30346:250;30392:7;;:12;:34;;;;-1:-1:-1;30408:13:0;;:18;30392:34;30389:46;;;30346:250::o;30389:46::-;30473:7;;;30455:15;:25;30515:13;;;30491:21;:37;-1:-1:-1;30549:11:0;;;;30571:17;30346:250::o;26310:566::-;26413:15;26430:23;26455:12;26469:23;26494:12;26508:18;26530:19;26541:7;26530:10;:19::i;:::-;-1:-1:-1;;;;;26578:15:0;;;;;;:7;:15;;;;;;26412:137;;-1:-1:-1;26412:137:0;;-1:-1:-1;26412:137:0;;-1:-1:-1;26412:137:0;-1:-1:-1;26412:137:0;-1:-1:-1;26412:137:0;-1:-1:-1;26578:28:0;;26598:7;26578:19;:28::i;:::-;-1:-1:-1;;;;;26560:15:0;;;;;;:7;:15;;;;;;;;:46;;;;26635:7;:15;;;;:28;;26655:7;26635:19;:28::i;:::-;-1:-1:-1;;;;;26617:15:0;;;;;;;:7;:15;;;;;;:46;;;;26695:18;;;;;;;:39;;26718:15;26695:22;:39::i;:::-;-1:-1:-1;;;;;26674:18:0;;;;;;:7;:18;;;;;:60;26748:26;26763:10;26748:14;:26::i;:::-;26785:23;26797:4;26803;26785:11;:23::i;:::-;26841:9;-1:-1:-1;;;;;26824:44:0;26833:6;-1:-1:-1;;;;;26824:44:0;;26852:15;26824:44;;;;11200:25:1;;11188:2;11173:18;;11155:76;26824:44:0;;;;;;;;26310:566;;;;;;;;;:::o;25716:586::-;25817:15;25834:23;25859:12;25873:23;25898:12;25912:18;25934:19;25945:7;25934:10;:19::i;:::-;-1:-1:-1;;;;;25982:15:0;;;;;;:7;:15;;;;;;25816:137;;-1:-1:-1;25816:137:0;;-1:-1:-1;25816:137:0;;-1:-1:-1;25816:137:0;-1:-1:-1;25816:137:0;-1:-1:-1;25816:137:0;-1:-1:-1;25982:28:0;;25816:137;25982:19;:28::i;:::-;-1:-1:-1;;;;;25964:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;26042:18;;;;;:7;:18;;;;;:39;;26065:15;26042:22;:39::i;:::-;-1:-1:-1;;;;;26021:18:0;;;;;;:7;:18;;;;;;;;:60;;;;26113:7;:18;;;;:39;;26136:15;26113:22;:39::i;26884:642::-;26987:15;27004:23;27029:12;27043:23;27068:12;27082:18;27104:19;27115:7;27104:10;:19::i;:::-;-1:-1:-1;;;;;27152:15:0;;;;;;:7;:15;;;;;;26986:137;;-1:-1:-1;26986:137:0;;-1:-1:-1;26986:137:0;;-1:-1:-1;26986:137:0;-1:-1:-1;26986:137:0;-1:-1:-1;26986:137:0;-1:-1:-1;27152:28:0;;27172:7;27152:19;:28::i;:::-;-1:-1:-1;;;;;27134:15:0;;;;;;:7;:15;;;;;;;;:46;;;;27209:7;:15;;;;:28;;27229:7;27209:19;:28::i;25206:502::-;25305:15;25322:23;25347:12;25361:23;25386:12;25400:18;25422:19;25433:7;25422:10;:19::i;:::-;-1:-1:-1;;;;;25470:15:0;;;;;;:7;:15;;;;;;25304:137;;-1:-1:-1;25304:137:0;;-1:-1:-1;25304:137:0;;-1:-1:-1;25304:137:0;-1:-1:-1;25304:137:0;-1:-1:-1;25304:137:0;-1:-1:-1;25470:28:0;;25304:137;25470:19;:28::i;30002:154::-;30066:7;30093:55;30132:5;30093:20;30105:7;;30093;:11;;:20;;;;:::i;:::-;:24;;:55::i;30168:166::-;30238:7;30265:61;30310:5;30265:26;30277:13;;30265:7;:11;;:26;;;;:::i;1728:250::-;1786:7;1810:6;1806:47;;-1:-1:-1;1840:1:0;1833:8;;1806:47;1865:9;1877:5;1881:1;1877;:5;:::i;:::-;1865:17;-1:-1:-1;1910:1:0;1901:5;1905:1;1865:17;1901:5;:::i;:::-;:10;1893:56;;;;-1:-1:-1;;;1893:56:0;;7802:2:1;1893:56:0;;;7784:21:1;7841:2;7821:18;;;7814:30;7880:34;7860:18;;;7853:62;-1:-1:-1;;;7931:18:1;;;7924:31;7972:19;;1893:56:0;7774:223:1;29635:355:0;29698:19;29721:10;:8;:10::i;:::-;29698:33;-1:-1:-1;29742:18:0;29763:27;:10;29698:33;29763:14;:27::i;:::-;29842:4;29826:22;;;;:7;:22;;;;;;29742:48;;-1:-1:-1;29826:38:0;;29742:48;29826:26;:38::i;:::-;29817:4;29801:22;;;;:7;:22;;;;;;;;:63;;;;29878:11;:26;;;;;;29875:107;;;29960:4;29944:22;;;;:7;:22;;;;;;:38;;29971:10;29944:26;:38::i;:::-;29935:4;29919:22;;;;:7;:22;;;;;:63;29875:107;29635:355;;;:::o;27534:147::-;27612:7;;:17;;27624:4;27612:11;:17::i;:::-;27602:7;:27;27653:10;;:20;;27668:4;27653:14;:20::i;:::-;27640:10;:33;-1:-1:-1;;27534:147:0:o;14:257:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:2;;;147:6;139;132:22;94:2;191:9;178:23;210:31;235:5;210:31;:::i;276:261::-;346:6;399:2;387:9;378:7;374:23;370:32;367:2;;;420:6;412;405:22;367:2;457:9;451:16;476:31;501:5;476:31;:::i;542:398::-;610:6;618;671:2;659:9;650:7;646:23;642:32;639:2;;;692:6;684;677:22;639:2;736:9;723:23;755:31;780:5;755:31;:::i;:::-;805:5;-1:-1:-1;862:2:1;847:18;;834:32;875:33;834:32;875:33;:::i;:::-;927:7;917:17;;;629:311;;;;;:::o;945:466::-;1022:6;1030;1038;1091:2;1079:9;1070:7;1066:23;1062:32;1059:2;;;1112:6;1104;1097:22;1059:2;1156:9;1143:23;1175:31;1200:5;1175:31;:::i;:::-;1225:5;-1:-1:-1;1282:2:1;1267:18;;1254:32;1295:33;1254:32;1295:33;:::i;:::-;1049:362;;1347:7;;-1:-1:-1;;;1401:2:1;1386:18;;;;1373:32;;1049:362::o;1416:325::-;1484:6;1492;1545:2;1533:9;1524:7;1520:23;1516:32;1513:2;;;1566:6;1558;1551:22;1513:2;1610:9;1597:23;1629:31;1654:5;1629:31;:::i;:::-;1679:5;1731:2;1716:18;;;;1703:32;;-1:-1:-1;;;1503:238:1:o;1746:190::-;1805:6;1858:2;1846:9;1837:7;1833:23;1829:32;1826:2;;;1879:6;1871;1864:22;1826:2;-1:-1:-1;1907:23:1;;1816:120;-1:-1:-1;1816:120:1:o;1941:361::-;2006:6;2014;2067:2;2055:9;2046:7;2042:23;2038:32;2035:2;;;2088:6;2080;2073:22;2035:2;2129:9;2116:23;2106:33;;2189:2;2178:9;2174:18;2161:32;2236:5;2229:13;2222:21;2215:5;2212:32;2202:2;;2263:6;2255;2248:22;2307:463;2360:3;2398:5;2392:12;2425:6;2420:3;2413:19;2451:4;2480:2;2475:3;2471:12;2464:19;;2517:2;2510:5;2506:14;2538:3;2550:195;2564:6;2561:1;2558:13;2550:195;;;2629:13;;-1:-1:-1;;;;;2625:39:1;2613:52;;2685:12;;;;2720:15;;;;2661:1;2579:9;2550:195;;;-1:-1:-1;2761:3:1;;2368:402;-1:-1:-1;;;;;2368:402:1:o;3943:603::-;4055:4;4084:2;4113;4102:9;4095:21;4145:6;4139:13;4188:6;4183:2;4172:9;4168:18;4161:34;4213:4;4226:140;4240:6;4237:1;4234:13;4226:140;;;4335:14;;;4331:23;;4325:30;4301:17;;;4320:2;4297:26;4290:66;4255:10;;4226:140;;;4384:6;4381:1;4378:13;4375:2;;;4454:4;4449:2;4440:6;4429:9;4425:22;4421:31;4414:45;4375:2;-1:-1:-1;4530:2:1;4509:15;-1:-1:-1;;4505:29:1;4490:45;;;;4537:2;4486:54;;4064:482;-1:-1:-1;;;4064:482:1:o;8002:356::-;8204:2;8186:21;;;8223:18;;;8216:30;8282:34;8277:2;8262:18;;8255:62;8349:2;8334:18;;8176:182::o;11236:332::-;11443:6;11432:9;11425:25;11486:2;11481;11470:9;11466:18;11459:30;11406:4;11506:56;11558:2;11547:9;11543:18;11535:6;11506:56;:::i;:::-;11498:64;11415:153;-1:-1:-1;;;;11415:153:1:o;11573:582::-;11872:6;11861:9;11854:25;11915:6;11910:2;11899:9;11895:18;11888:34;11958:3;11953:2;11942:9;11938:18;11931:31;11835:4;11979:57;12031:3;12020:9;12016:19;12008:6;11979:57;:::i;:::-;-1:-1:-1;;;;;12072:32:1;;;;12067:2;12052:18;;12045:60;-1:-1:-1;12136:3:1;12121:19;12114:35;11971:65;11844:311;-1:-1:-1;;;11844:311:1:o;12349:128::-;12389:3;12420:1;12416:6;12413:1;12410:13;12407:2;;;12426:18;;:::i;:::-;-1:-1:-1;12462:9:1;;12397:80::o;12482:217::-;12522:1;12548;12538:2;;-1:-1:-1;;;12573:31:1;;12627:4;12624:1;12617:15;12655:4;12580:1;12645:15;12538:2;-1:-1:-1;12684:9:1;;12528:171::o;12704:168::-;12744:7;12810:1;12806;12802:6;12798:14;12795:1;12792:21;12787:1;12780:9;12773:17;12769:45;12766:2;;;12817:18;;:::i;:::-;-1:-1:-1;12857:9:1;;12756:116::o;12877:125::-;12917:4;12945:1;12942;12939:8;12936:2;;;12950:18;;:::i;:::-;-1:-1:-1;12987:9:1;;12926:76::o;13007:380::-;13086:1;13082:12;;;;13129;;;13150:2;;13204:4;13196:6;13192:17;13182:27;;13150:2;13257;13249:6;13246:14;13226:18;13223:38;13220:2;;;13303:10;13298:3;13294:20;13291:1;13284:31;13338:4;13335:1;13328:15;13366:4;13363:1;13356:15;13220:2;;13062:325;;;:::o;13392:135::-;13431:3;-1:-1:-1;;13452:17:1;;13449:2;;;13472:18;;:::i;:::-;-1:-1:-1;13519:1:1;13508:13;;13439:88::o;13532:127::-;13593:10;13588:3;13584:20;13581:1;13574:31;13624:4;13621:1;13614:15;13648:4;13645:1;13638:15;13664:131;-1:-1:-1;;;;;13739:31:1;;13729:42;;13719:2;;13785:1;13782;13775:12;13719:2;13709:86;:::o
Swarm Source
ipfs://b23bb4f69ce1b4cb7f48fac2f6ae9718a56036496dd1d7389c877b7a0e00a510
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.