Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
100,000,000,000,000 LAMBO
Holders
64
Total Transfers
-
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
WENLAMBO
Compiler Version
v0.8.5+commit.a4f2e591
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-09-05 */ /* WenLambo Features: 4% ETH REWARDS 4% AUTO BUY BACK 4% AUTO LP ADDED 4% MARKETING & DEVELOPMENT */ // SPDX-License-Identifier: Unlicensed pragma solidity ^0.8.5; 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; } function getUnlockTime() public view returns (uint256) { return _lockTime; } function getTime() public view returns (uint256) { return block.timestamp; } function lock(uint256 time) public virtual onlyOwner { _previousOwner = _owner; _owner = address(0); _lockTime = block.timestamp + time; emit OwnershipTransferred(_owner, address(0)); } function unlock() public virtual { require(_previousOwner == msg.sender, "You don't have permission to unlock"); require(block.timestamp > _lockTime , "Contract is locked until 7 days"); emit OwnershipTransferred(_owner, _previousOwner); _owner = _previousOwner; } } // 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 WENLAMBO is Context, IERC20, Ownable { using SafeMath for uint256; using Address for address; address payable public marketingAddress; address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD; mapping (address => uint256) private _rOwned; mapping (address => uint256) private _tOwned; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private _isExcludedFromFee; mapping (address => bool) private _isExcluded; address[] private _excluded; uint256 private constant MAX = ~uint256(0); uint256 private _tTotal = 100 * 10**12 * 10**9; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; string private _name = "WEN LAMBO"; string private _symbol = "LAMBO"; uint8 private _decimals = 9; uint256 public _taxFee = 0; uint256 private _previousTaxFee = _taxFee; uint256 public _liquidityFee = 16; //Total Liquidity Collected uint256 private _previousLiquidityFee = _liquidityFee; uint256 public marketingDivisor = 2; uint256 public _maxTxAmount = 500 * 10**3 * 10**6 * 10**9; uint256 private minimumTokensBeforeSwap = 1 * 10**6 * 10**9; uint256 private buyBackUpperLimit = 1 * 10**9; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; bool inSwapAndLiquify; bool public swapAndLiquifyEnabled = true; bool public buyBackEnabled = true; event RewardLiquidityProviders(uint256 tokenAmount); event BuyBackEnabledUpdated(bool enabled); event SwapAndLiquifyEnabledUpdated(bool enabled); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity ); event SwapETHForTokens( uint256 amountIn, address[] path ); event SwapTokensForETH( uint256 amountIn, address[] path ); event SwapTokensForUSDT( uint256 amountIn, address[] path ); modifier lockTheSwap { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } constructor (address payable _marketingAddress) { _rOwned[_msgSender()] = _rTotal; marketingAddress = _marketingAddress; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); uniswapV2Router = _uniswapV2Router; _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; emit Transfer(address(0), _msgSender(), _tTotal); } 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 minimumTokensBeforeSwapAmount() public view returns (uint256) { return minimumTokensBeforeSwap; } function buyBackUpperLimitAmount() public view returns (uint256) { return buyBackUpperLimit; } 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(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount."); } uint256 contractTokenBalance = balanceOf(address(this)); bool overMinimumTokenBalance = contractTokenBalance >= minimumTokensBeforeSwap; if (!inSwapAndLiquify && swapAndLiquifyEnabled && to == uniswapV2Pair) { if (overMinimumTokenBalance) { contractTokenBalance = minimumTokensBeforeSwap; /* Add Liquidity */ swapAndLiquify(contractTokenBalance.div(2)); /* Marketing/Development */ swapTokens(contractTokenBalance.div(2)); } uint256 balance = address(this).balance; if (buyBackEnabled && balance > uint256(1 * 10**9)) { if (balance > buyBackUpperLimit) balance = buyBackUpperLimit; /* BuyBack */ buyBackTokens(balance.div(100)); } } bool takeFee = true; //if any account belongs to _isExcludedFromFee account then remove the fee if(_isExcludedFromFee[from] || _isExcludedFromFee[to]){ takeFee = false; } _tokenTransfer(from,to,amount,takeFee); } function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap { /* split the contract balance into halves */ uint256 half = contractTokenBalance.div(2); uint256 otherHalf = contractTokenBalance.sub(half); /* capture the contract's current ETH balance. */ /* this is so that we can capture exactly the amount of ETH that the */ /* swap creates, and not make the liquidity event include any ETH that */ /* has been manually sent to the contract */ uint256 initialBalance = address(this).balance; /* swap tokens for ETH */ swapTokensForEth(half); // <- this breaks the ETH -> HATE swap when swap+liquify is triggered /* how much ETH did we just swap into? */ uint256 newBalance = address(this).balance.sub(initialBalance); /* add liquidity to pancakeswap */ addLiquidity(otherHalf, newBalance); emit SwapAndLiquify(half, newBalance, otherHalf); } function swapTokens(uint256 contractTokenBalance) private lockTheSwap { uint256 initialBalance = address(this).balance; swapTokensForEth(contractTokenBalance); uint256 transferredBalance = address(this).balance.sub(initialBalance); swapTokensForUsdt(transferredBalance/2); uint256 remainingBalance=transferredBalance/2; //Send to Marketing address transferToAddressETH(marketingAddress, remainingBalance.div(2)); } function buyBackTokens(uint256 amount) private lockTheSwap { if (amount > 0) { swapETHForTokens(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 swapTokensForUsdt(uint256 ethAmount) private { // generate the uniswap pair path of token -> bnb address[] memory path = new address[](2); path[0] = uniswapV2Router.WETH(); path[1] = 0xdAC17F958D2ee523a2206206994597C13D831ec7; //USDT // make the swap uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: ethAmount}( 0, // accept any amount of ETH path, marketingAddress, // Send to Marketing Address block.timestamp ); emit SwapTokensForUSDT(ethAmount, path); } function swapETHForTokens(uint256 amount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = uniswapV2Router.WETH(); path[1] = address(this); // make the swap uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}( 0, // accept any amount of Tokens path, deadAddress, // Burn address block.timestamp.add(300) ); emit SwapETHForTokens(amount, 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() { _taxFee = taxFee; } function setLiquidityFeePercent(uint256 liquidityFee) external onlyOwner() { _liquidityFee = liquidityFee; } function setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() { _maxTxAmount = maxTxAmount * 10**9; } function setMarketingDivisor(uint256 divisor) external onlyOwner() { marketingDivisor = divisor; } function setNumTokensSellToAddToLiquidity(uint256 _minimumTokensBeforeSwap) external onlyOwner() { minimumTokensBeforeSwap = _minimumTokensBeforeSwap; } function setBuybackUpperLimit(uint256 buyBackLimit) external onlyOwner() { buyBackUpperLimit = buyBackLimit * 10**9; } function setMarketingAddress(address _marketingAddress) external onlyOwner() { marketingAddress = payable(_marketingAddress); } function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner { swapAndLiquifyEnabled = _enabled; emit SwapAndLiquifyEnabledUpdated(_enabled); } function setBuyBackEnabled(bool _enabled) public onlyOwner { buyBackEnabled = _enabled; emit BuyBackEnabledUpdated(_enabled); } function disableFee() external onlyOwner { setSwapAndLiquifyEnabled(false); _taxFee = 0; _liquidityFee = 0; _maxTxAmount = 500 * 10**3 * 10**6 * 10**9; } function enableFee() external onlyOwner { setSwapAndLiquifyEnabled(true); _taxFee = 0; _liquidityFee = 16; _maxTxAmount = 500 * 10**3 * 10**6 * 10**9; } function transferToAddressETH(address payable recipient, uint256 amount) private { recipient.transfer(amount); } //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":[{"internalType":"address payable","name":"_marketingAddress","type":"address"}],"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":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"BuyBackEnabledUpdated","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":"tokenAmount","type":"uint256"}],"name":"RewardLiquidityProviders","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","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":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForUSDT","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":"_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","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":"buyBackEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyBackUpperLimitAmount","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":[],"name":"disableFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableFee","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":[],"name":"getTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[{"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":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingDivisor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTokensBeforeSwapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setBuyBackEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyBackLimit","type":"uint256"}],"name":"setBuybackUpperLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidityFee","type":"uint256"}],"name":"setLiquidityFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingAddress","type":"address"}],"name":"setMarketingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMarketingDivisor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minimumTokensBeforeSwap","type":"uint256"}],"name":"setNumTokensSellToAddToLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"setTaxFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"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"},{"inputs":[],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60e06040526ddead00000000000000000000000060805269152d02c7e14af6800000600a819055620000349060001962000534565b6200004290600019620004d1565b600b556040805180820190915260098082526857454e204c414d424f60b81b60209092019182526200007791600d9162000404565b50604080518082019091526005808252644c414d424f60d81b6020909201918252620000a691600e9162000404565b50600f805460ff191660091790556000601081815560119190915560128190556013556002601455681b1ae4d6e2ef50000060155566038d7ea4c68000601655633b9aca00601755601880546201010062ffff00199091161790553480156200010e57600080fd5b5060405162003746380380620037468339810160408190526200013191620004aa565b600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600b543360009081526004602081815260409283902093909355600380546001600160a01b0319166001600160a01b038616179055815163c45a015560e01b81529151737a250d5630b4cf539739df2c5dacb4c659f2488d93849363c45a0155938181019391829003018186803b158015620001ed57600080fd5b505afa15801562000202573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002289190620004aa565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200027157600080fd5b505afa15801562000286573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ac9190620004aa565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015620002f557600080fd5b505af11580156200030a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003309190620004aa565b6001600160601b0319606091821b811660c0529082901b1660a052600160076000620003646000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553081526007909252902080549091166001179055620003ac3390565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600a54604051620003f491815260200190565b60405180910390a3505062000570565b8280546200041290620004f7565b90600052602060002090601f01602090048101928262000436576000855562000481565b82601f106200045157805160ff191683800117855562000481565b8280016001018555821562000481579182015b828111156200048157825182559160200191906001019062000464565b506200048f92915062000493565b5090565b5b808211156200048f576000815560010162000494565b600060208284031215620004bd57600080fd5b8151620004ca8162000557565b9392505050565b600082821015620004f257634e487b7160e01b600052601160045260246000fd5b500390565b600181811c908216806200050c57607f821691505b602082108114156200052e57634e487b7160e01b600052602260045260246000fd5b50919050565b6000826200055257634e487b7160e01b600052601260045260246000fd5b500690565b6001600160a01b03811681146200056d57600080fd5b50565b60805160601c60a05160601c60c05160601c613150620005f6600039600081816105840152611a2a0152600081816103a2015281816121cb01528181612293015281816122cf01528181612382015281816123a9015281816124b4015281816125c6015281816126c701526127b501526000818161042301526127e001526131506000f3fe6080604052600436106102e85760003560e01c80636bc87c3a11610190578063a5ece941116100dc578063d6b513cf11610095578063ea2f0b371161006f578063ea2f0b3714610903578063ec28438a14610923578063f0f165af14610943578063f2fde38b1461096357600080fd5b8063d6b513cf14610887578063dd4670641461089d578063dd62ed3e146108bd57600080fd5b8063a5ece941146107dd578063a69df4b5146107fd578063a9059cbb14610812578063b0cb81f114610832578063bdc653ef14610852578063c49b9a801461086757600080fd5b806388f8202011610149578063906e9dd011610123578063906e9dd01461077357806395d89b4114610793578063a073d37f146107a8578063a457c2d7146107bd57600080fd5b806388f82020146106fc5780638da5cb5b146107355780638ee88c531461075357600080fd5b80636bc87c3a1461066657806370a082311461067c578063715018a61461069c5780637d1db4a5146106b157806382d2a4bb146106c757806386d55557146106e757600080fd5b80633685d4191161024f57806349bd5a5e116102085780635342acb4116101e25780635342acb4146105e5578063557ed1ba1461061e578063602bc62b146106315780636053a0e31461064657600080fd5b806349bd5a5e146105725780634a74bb02146105a657806352390c02146105c557600080fd5b80633685d419146104bc57806339509351146104dc5780633b124fe7146104fc5780633bd5d17314610512578063437823ec146105325780634549b0391461055257600080fd5b806323b872dd116102a157806323b872dd146103f157806327c8f8351461041157806329370cc6146104455780632d8381191461046557806330d2091d14610485578063313ce5671461049a57600080fd5b8063061c82d0146102f457806306fdde0314610316578063095ea7b31461034157806313114a9d146103715780631694505e1461039057806318160ddd146103dc57600080fd5b366102ef57005b600080fd5b34801561030057600080fd5b5061031461030f366004612dba565b610983565b005b34801561032257600080fd5b5061032b6109bb565b6040516103389190612ea6565b60405180910390f35b34801561034d57600080fd5b5061036161035c366004612d73565b610a4d565b6040519015158152602001610338565b34801561037d57600080fd5b50600c545b604051908152602001610338565b34801561039c57600080fd5b506103c47f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610338565b3480156103e857600080fd5b50600a54610382565b3480156103fd57600080fd5b5061036161040c366004612d32565b610a64565b34801561041d57600080fd5b506103c47f000000000000000000000000000000000000000000000000000000000000000081565b34801561045157600080fd5b50610314610460366004612d9f565b610acd565b34801561047157600080fd5b50610382610480366004612dba565b610b4d565b34801561049157600080fd5b50610314610bd1565b3480156104a657600080fd5b50600f5460405160ff9091168152602001610338565b3480156104c857600080fd5b506103146104d7366004612cbf565b610c1e565b3480156104e857600080fd5b506103616104f7366004612d73565b610dd5565b34801561050857600080fd5b5061038260105481565b34801561051e57600080fd5b5061031461052d366004612dba565b610e0b565b34801561053e57600080fd5b5061031461054d366004612cbf565b610ef5565b34801561055e57600080fd5b5061038261056d366004612dd3565b610f43565b34801561057e57600080fd5b506103c47f000000000000000000000000000000000000000000000000000000000000000081565b3480156105b257600080fd5b5060185461036190610100900460ff1681565b3480156105d157600080fd5b506103146105e0366004612cbf565b610fd0565b3480156105f157600080fd5b50610361610600366004612cbf565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561062a57600080fd5b5042610382565b34801561063d57600080fd5b50600254610382565b34801561065257600080fd5b506018546103619062010000900460ff1681565b34801561067257600080fd5b5061038260125481565b34801561068857600080fd5b50610382610697366004612cbf565b611123565b3480156106a857600080fd5b50610314611182565b3480156106bd57600080fd5b5061038260155481565b3480156106d357600080fd5b506103146106e2366004612dba565b6111e4565b3480156106f357600080fd5b50610314611222565b34801561070857600080fd5b50610361610717366004612cbf565b6001600160a01b031660009081526008602052604090205460ff1690565b34801561074157600080fd5b506000546001600160a01b03166103c4565b34801561075f57600080fd5b5061031461076e366004612dba565b61126f565b34801561077f57600080fd5b5061031461078e366004612cbf565b61129e565b34801561079f57600080fd5b5061032b6112ea565b3480156107b457600080fd5b50601654610382565b3480156107c957600080fd5b506103616107d8366004612d73565b6112f9565b3480156107e957600080fd5b506003546103c4906001600160a01b031681565b34801561080957600080fd5b50610314611348565b34801561081e57600080fd5b5061036161082d366004612d73565b61144e565b34801561083e57600080fd5b5061031461084d366004612dba565b61145b565b34801561085e57600080fd5b50601754610382565b34801561087357600080fd5b50610314610882366004612d9f565b61148a565b34801561089357600080fd5b5061038260145481565b3480156108a957600080fd5b506103146108b8366004612dba565b6114fd565b3480156108c957600080fd5b506103826108d8366004612cf9565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561090f57600080fd5b5061031461091e366004612cbf565b611582565b34801561092f57600080fd5b5061031461093e366004612dba565b6115cd565b34801561094f57600080fd5b5061031461095e366004612dba565b61160b565b34801561096f57600080fd5b5061031461097e366004612cbf565b61163a565b6000546001600160a01b031633146109b65760405162461bcd60e51b81526004016109ad90612efb565b60405180910390fd5b601055565b6060600d80546109ca90612ffd565b80601f01602080910402602001604051908101604052809291908181526020018280546109f690612ffd565b8015610a435780601f10610a1857610100808354040283529160200191610a43565b820191906000526020600020905b815481529060010190602001808311610a2657829003601f168201915b5050505050905090565b6000610a5a338484611712565b5060015b92915050565b6000610a71848484611836565b610ac38433610abe856040518060600160405280602881526020016130ae602891396001600160a01b038a1660009081526006602090815260408083203384529091529020549190611b39565b611712565b5060019392505050565b6000546001600160a01b03163314610af75760405162461bcd60e51b81526004016109ad90612efb565b60188054821515620100000262ff0000199091161790556040517f3794234fa370c9f3b948dda3e3040530785b2ef1eb27dda3ffde478f4e2643c090610b4290831515815260200190565b60405180910390a150565b6000600b54821115610bb45760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016109ad565b6000610bbe611b73565b9050610bca8382611b96565b9392505050565b6000546001600160a01b03163314610bfb5760405162461bcd60e51b81526004016109ad90612efb565b610c05600161148a565b60006010908155601255681b1ae4d6e2ef500000601555565b6000546001600160a01b03163314610c485760405162461bcd60e51b81526004016109ad90612efb565b6001600160a01b03811660009081526008602052604090205460ff16610cb05760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016109ad565b60005b600954811015610dd157816001600160a01b031660098281548110610cda57610cda61307f565b6000918252602090912001546001600160a01b03161415610dbf5760098054610d0590600190612fe6565b81548110610d1557610d1561307f565b600091825260209091200154600980546001600160a01b039092169183908110610d4157610d4161307f565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600582526040808220829055600890925220805460ff191690556009805480610d9957610d99613069565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610dc981613038565b915050610cb3565b5050565b3360008181526006602090815260408083206001600160a01b03871684529091528120549091610a5a918590610abe9086611bd8565b3360008181526008602052604090205460ff1615610e805760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b60648201526084016109ad565b6000610e8b83611c37565b505050506001600160a01b038416600090815260046020526040902054919250610eb791905082611c86565b6001600160a01b038316600090815260046020526040902055600b54610edd9082611c86565b600b55600c54610eed9084611bd8565b600c55505050565b6000546001600160a01b03163314610f1f5760405162461bcd60e51b81526004016109ad90612efb565b6001600160a01b03166000908152600760205260409020805460ff19166001179055565b6000600a54831115610f975760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c790060448201526064016109ad565b81610fb6576000610fa784611c37565b50939550610a5e945050505050565b6000610fc184611c37565b50929550610a5e945050505050565b6000546001600160a01b03163314610ffa5760405162461bcd60e51b81526004016109ad90612efb565b6001600160a01b03811660009081526008602052604090205460ff16156110635760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016109ad565b6001600160a01b038116600090815260046020526040902054156110bd576001600160a01b0381166000908152600460205260409020546110a390610b4d565b6001600160a01b0382166000908152600560205260409020555b6001600160a01b03166000818152600860205260408120805460ff191660019081179091556009805491820181559091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0180546001600160a01b0319169091179055565b6001600160a01b03811660009081526008602052604081205460ff161561116057506001600160a01b031660009081526005602052604090205490565b6001600160a01b038216600090815260046020526040902054610a5e90610b4d565b6000546001600160a01b031633146111ac5760405162461bcd60e51b81526004016109ad90612efb565b600080546040516001600160a01b03909116906000805160206130d6833981519152908390a3600080546001600160a01b0319169055565b6000546001600160a01b0316331461120e5760405162461bcd60e51b81526004016109ad90612efb565b61121c81633b9aca00612fc7565b60175550565b6000546001600160a01b0316331461124c5760405162461bcd60e51b81526004016109ad90612efb565b611256600061148a565b60006010819055601255681b1ae4d6e2ef500000601555565b6000546001600160a01b031633146112995760405162461bcd60e51b81526004016109ad90612efb565b601255565b6000546001600160a01b031633146112c85760405162461bcd60e51b81526004016109ad90612efb565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6060600e80546109ca90612ffd565b6000610a5a3384610abe856040518060600160405280602581526020016130f6602591393360009081526006602090815260408083206001600160a01b038d1684529091529020549190611b39565b6001546001600160a01b031633146113ae5760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b60648201526084016109ad565b60025442116113ff5760405162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374206973206c6f636b656420756e74696c203720646179730060448201526064016109ad565b600154600080546040516001600160a01b0393841693909116916000805160206130d683398151915291a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b6000610a5a338484611836565b6000546001600160a01b031633146114855760405162461bcd60e51b81526004016109ad90612efb565b601455565b6000546001600160a01b031633146114b45760405162461bcd60e51b81526004016109ad90612efb565b601880548215156101000261ff00199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15990610b4290831515815260200190565b6000546001600160a01b031633146115275760405162461bcd60e51b81526004016109ad90612efb565b60008054600180546001600160a01b03199081166001600160a01b038416179091551690556115568142612f8d565b600255600080546040516001600160a01b03909116906000805160206130d6833981519152908390a350565b6000546001600160a01b031633146115ac5760405162461bcd60e51b81526004016109ad90612efb565b6001600160a01b03166000908152600760205260409020805460ff19169055565b6000546001600160a01b031633146115f75760405162461bcd60e51b81526004016109ad90612efb565b61160581633b9aca00612fc7565b60155550565b6000546001600160a01b031633146116355760405162461bcd60e51b81526004016109ad90612efb565b601655565b6000546001600160a01b031633146116645760405162461bcd60e51b81526004016109ad90612efb565b6001600160a01b0381166116c95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109ad565b600080546040516001600160a01b03808516939216916000805160206130d683398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166117745760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109ad565b6001600160a01b0382166117d55760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109ad565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661189a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016109ad565b6001600160a01b0382166118fc5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016109ad565b6000811161195e5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016109ad565b6000546001600160a01b0384811691161480159061198a57506000546001600160a01b03838116911614155b156119f2576015548111156119f25760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b60648201526084016109ad565b60006119fd30611123565b6016546018549192508210159060ff16158015611a215750601854610100900460ff165b8015611a5e57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b0316145b15611ada578015611a94576016549150611a81611a7c836002611b96565b611cc8565b611a94611a8f836002611b96565b611d66565b601854479062010000900460ff168015611ab15750633b9aca0081115b15611ad857601754811115611ac557506017545b611ad8611ad3826064611b96565b611dde565b505b6001600160a01b03851660009081526007602052604090205460019060ff1680611b1c57506001600160a01b03851660009081526007602052604090205460ff165b15611b25575060005b611b3186868684611e07565b505050505050565b60008184841115611b5d5760405162461bcd60e51b81526004016109ad9190612ea6565b506000611b6a8486612fe6565b95945050505050565b6000806000611b80611f32565b9092509050611b8f8282611b96565b9250505090565b6000610bca83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506120b4565b600080611be58385612f8d565b905083811015610bca5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016109ad565b6000806000806000806000806000611c4e8a6120e2565b9250925092506000806000611c6c8d8686611c67611b73565b612124565b919f909e50909c50959a5093985091965092945050505050565b6000610bca83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611b39565b6018805460ff191660011790556000611ce2826002611b96565b90506000611cf08383611c86565b905047611cfc83612174565b6000611d084783611c86565b9050611d14838261237c565b60408051858152602081018390529081018490527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a150506018805460ff19169055505050565b6018805460ff1916600117905547611d7d82612174565b6000611d894783611c86565b9050611d9e611d99600283612fa5565b612491565b6000611dab600283612fa5565b600354909150611dce906001600160a01b0316611dc9836002611b96565b612669565b50506018805460ff191690555050565b6018805460ff191660011790558015611dfa57611dfa816126a4565b506018805460ff19169055565b80611e1457611e1461288d565b6001600160a01b03841660009081526008602052604090205460ff168015611e5557506001600160a01b03831660009081526008602052604090205460ff16155b15611e6a57611e658484846128bb565b611f16565b6001600160a01b03841660009081526008602052604090205460ff16158015611eab57506001600160a01b03831660009081526008602052604090205460ff165b15611ebb57611e658484846129e1565b6001600160a01b03841660009081526008602052604090205460ff168015611efb57506001600160a01b03831660009081526008602052604090205460ff165b15611f0b57611e65848484612a8a565b611f16848484612afd565b80611f2c57611f2c601154601055601354601255565b50505050565b600b54600a546000918291825b60095481101561208457826004600060098481548110611f6157611f6161307f565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180611fcc5750816005600060098481548110611fa557611fa561307f565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15611fe257600b54600a54945094505050509091565b6120286004600060098481548110611ffc57611ffc61307f565b60009182526020808320909101546001600160a01b031683528201929092526040019020548490611c86565b925061207060056000600984815481106120445761204461307f565b60009182526020808320909101546001600160a01b031683528201929092526040019020548390611c86565b91508061207c81613038565b915050611f3f565b50600a54600b5461209491611b96565b8210156120ab57600b54600a549350935050509091565b90939092509050565b600081836120d55760405162461bcd60e51b81526004016109ad9190612ea6565b506000611b6a8486612fa5565b6000806000806120f185612b41565b905060006120fe86612b63565b90506000612116826121108986611c86565b90611c86565b979296509094509092505050565b60008080806121338886612b7f565b905060006121418887612b7f565b9050600061214f8888612b7f565b90506000612161826121108686611c86565b939b939a50919850919650505050505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106121a9576121a961307f565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561222257600080fd5b505afa158015612236573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061225a9190612cdc565b8160018151811061226d5761226d61307f565b60200260200101906001600160a01b031690816001600160a01b0316815250506122b8307f000000000000000000000000000000000000000000000000000000000000000084611712565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac9479061230d908590600090869030904290600401612f51565b600060405180830381600087803b15801561232757600080fd5b505af115801561233b573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051612370929190612f30565b60405180910390a15050565b6123a7307f000000000000000000000000000000000000000000000000000000000000000084611712565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f305d7198230856000806123ee6000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b15801561245157600080fd5b505af1158015612465573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061248a9190612dff565b5050505050565b6040805160028082526060820183526000926020830190803683370190505090507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561250b57600080fd5b505afa15801561251f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125439190612cdc565b816000815181106125565761255661307f565b60200260200101906001600160a01b031690816001600160a01b03168152505073dac17f958d2ee523a2206206994597c13d831ec78160018151811061259e5761259e61307f565b6001600160a01b03928316602091820292909201015260035460405163b6f9de9560e01b81527f000000000000000000000000000000000000000000000000000000000000000083169263b6f9de959286926126069260009288929116904290600401612e71565b6000604051808303818588803b15801561261f57600080fd5b505af1158015612633573d6000803e3d6000fd5b50505050507fdfc81a52e023cf602de872a8199ce86256597dfd5b451f454c364532f6d9f8838282604051612370929190612f30565b6040516001600160a01b0383169082156108fc029083906000818181858888f1935050505015801561269f573d6000803e3d6000fd5b505050565b6040805160028082526060820183526000926020830190803683370190505090507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561271e57600080fd5b505afa158015612732573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127569190612cdc565b816000815181106127695761276961307f565b60200260200101906001600160a01b031690816001600160a01b031681525050308160018151811061279d5761279d61307f565b6001600160a01b0392831660209182029290920101527f00000000000000000000000000000000000000000000000000000000000000001663b6f9de95836000847f000000000000000000000000000000000000000000000000000000000000000061280b4261012c611bd8565b6040518663ffffffff1660e01b815260040161282a9493929190612e71565b6000604051808303818588803b15801561284357600080fd5b505af1158015612857573d6000803e3d6000fd5b50505050507f6fd378a9d8b7345c2e5b18229aaf1e39d32b177b501d0a0d26a0a858a23a96248282604051612370929190612f30565b60105415801561289d5750601254155b156128a457565b601080546011556012805460135560009182905555565b6000806000806000806128cd87611c37565b6001600160a01b038f16600090815260056020526040902054959b509399509197509550935091506128ff9088611c86565b6001600160a01b038a1660009081526005602090815260408083209390935560049052205461292e9087611c86565b6001600160a01b03808b1660009081526004602052604080822093909355908a168152205461295d9086611bd8565b6001600160a01b03891660009081526004602052604090205561297f81612bfe565b6129898483612c86565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516129ce91815260200190565b60405180910390a3505050505050505050565b6000806000806000806129f387611c37565b6001600160a01b038f16600090815260046020526040902054959b50939950919750955093509150612a259087611c86565b6001600160a01b03808b16600090815260046020908152604080832094909455918b16815260059091522054612a5b9084611bd8565b6001600160a01b03891660009081526005602090815260408083209390935560049052205461295d9086611bd8565b600080600080600080612a9c87611c37565b6001600160a01b038f16600090815260056020526040902054959b50939950919750955093509150612ace9088611c86565b6001600160a01b038a16600090815260056020908152604080832093909355600490522054612a259087611c86565b600080600080600080612b0f87611c37565b6001600160a01b038f16600090815260046020526040902054959b5093995091975095509350915061292e9087611c86565b6000610a5e6064612b5d60105485612b7f90919063ffffffff16565b90611b96565b6000610a5e6064612b5d60125485612b7f90919063ffffffff16565b600082612b8e57506000610a5e565b6000612b9a8385612fc7565b905082612ba78583612fa5565b14610bca5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016109ad565b6000612c08611b73565b90506000612c168383612b7f565b30600090815260046020526040902054909150612c339082611bd8565b3060009081526004602090815260408083209390935560089052205460ff161561269f5730600090815260056020526040902054612c719084611bd8565b30600090815260056020526040902055505050565b600b54612c939083611c86565b600b55600c54612ca39082611bd8565b600c555050565b80358015158114612cba57600080fd5b919050565b600060208284031215612cd157600080fd5b8135610bca81613095565b600060208284031215612cee57600080fd5b8151610bca81613095565b60008060408385031215612d0c57600080fd5b8235612d1781613095565b91506020830135612d2781613095565b809150509250929050565b600080600060608486031215612d4757600080fd5b8335612d5281613095565b92506020840135612d6281613095565b929592945050506040919091013590565b60008060408385031215612d8657600080fd5b8235612d9181613095565b946020939093013593505050565b600060208284031215612db157600080fd5b610bca82612caa565b600060208284031215612dcc57600080fd5b5035919050565b60008060408385031215612de657600080fd5b82359150612df660208401612caa565b90509250929050565b600080600060608486031215612e1457600080fd5b8351925060208401519150604084015190509250925092565b600081518084526020808501945080840160005b83811015612e665781516001600160a01b031687529582019590820190600101612e41565b509495945050505050565b848152608060208201526000612e8a6080830186612e2d565b6001600160a01b03949094166040830152506060015292915050565b600060208083528351808285015260005b81811015612ed357858101830151858201604001528201612eb7565b81811115612ee5576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b828152604060208201526000612f496040830184612e2d565b949350505050565b85815284602082015260a060408201526000612f7060a0830186612e2d565b6001600160a01b0394909416606083015250608001529392505050565b60008219821115612fa057612fa0613053565b500190565b600082612fc257634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615612fe157612fe1613053565b500290565b600082821015612ff857612ff8613053565b500390565b600181811c9082168061301157607f821691505b6020821081141561303257634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561304c5761304c613053565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03811681146130aa57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e045524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212206d8dd00329d000612e61d0420b497225fb5ffb2760b4c3667624b95d2bad1f4764736f6c6343000805003300000000000000000000000050a6db845f4656ce72c700a7e5f9028d0765ae29
Deployed Bytecode
0x6080604052600436106102e85760003560e01c80636bc87c3a11610190578063a5ece941116100dc578063d6b513cf11610095578063ea2f0b371161006f578063ea2f0b3714610903578063ec28438a14610923578063f0f165af14610943578063f2fde38b1461096357600080fd5b8063d6b513cf14610887578063dd4670641461089d578063dd62ed3e146108bd57600080fd5b8063a5ece941146107dd578063a69df4b5146107fd578063a9059cbb14610812578063b0cb81f114610832578063bdc653ef14610852578063c49b9a801461086757600080fd5b806388f8202011610149578063906e9dd011610123578063906e9dd01461077357806395d89b4114610793578063a073d37f146107a8578063a457c2d7146107bd57600080fd5b806388f82020146106fc5780638da5cb5b146107355780638ee88c531461075357600080fd5b80636bc87c3a1461066657806370a082311461067c578063715018a61461069c5780637d1db4a5146106b157806382d2a4bb146106c757806386d55557146106e757600080fd5b80633685d4191161024f57806349bd5a5e116102085780635342acb4116101e25780635342acb4146105e5578063557ed1ba1461061e578063602bc62b146106315780636053a0e31461064657600080fd5b806349bd5a5e146105725780634a74bb02146105a657806352390c02146105c557600080fd5b80633685d419146104bc57806339509351146104dc5780633b124fe7146104fc5780633bd5d17314610512578063437823ec146105325780634549b0391461055257600080fd5b806323b872dd116102a157806323b872dd146103f157806327c8f8351461041157806329370cc6146104455780632d8381191461046557806330d2091d14610485578063313ce5671461049a57600080fd5b8063061c82d0146102f457806306fdde0314610316578063095ea7b31461034157806313114a9d146103715780631694505e1461039057806318160ddd146103dc57600080fd5b366102ef57005b600080fd5b34801561030057600080fd5b5061031461030f366004612dba565b610983565b005b34801561032257600080fd5b5061032b6109bb565b6040516103389190612ea6565b60405180910390f35b34801561034d57600080fd5b5061036161035c366004612d73565b610a4d565b6040519015158152602001610338565b34801561037d57600080fd5b50600c545b604051908152602001610338565b34801561039c57600080fd5b506103c47f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610338565b3480156103e857600080fd5b50600a54610382565b3480156103fd57600080fd5b5061036161040c366004612d32565b610a64565b34801561041d57600080fd5b506103c47f000000000000000000000000000000000000000000000000000000000000dead81565b34801561045157600080fd5b50610314610460366004612d9f565b610acd565b34801561047157600080fd5b50610382610480366004612dba565b610b4d565b34801561049157600080fd5b50610314610bd1565b3480156104a657600080fd5b50600f5460405160ff9091168152602001610338565b3480156104c857600080fd5b506103146104d7366004612cbf565b610c1e565b3480156104e857600080fd5b506103616104f7366004612d73565b610dd5565b34801561050857600080fd5b5061038260105481565b34801561051e57600080fd5b5061031461052d366004612dba565b610e0b565b34801561053e57600080fd5b5061031461054d366004612cbf565b610ef5565b34801561055e57600080fd5b5061038261056d366004612dd3565b610f43565b34801561057e57600080fd5b506103c47f0000000000000000000000006c9fe4ffe8577ba4478ec0e0be34d06dcc58190c81565b3480156105b257600080fd5b5060185461036190610100900460ff1681565b3480156105d157600080fd5b506103146105e0366004612cbf565b610fd0565b3480156105f157600080fd5b50610361610600366004612cbf565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561062a57600080fd5b5042610382565b34801561063d57600080fd5b50600254610382565b34801561065257600080fd5b506018546103619062010000900460ff1681565b34801561067257600080fd5b5061038260125481565b34801561068857600080fd5b50610382610697366004612cbf565b611123565b3480156106a857600080fd5b50610314611182565b3480156106bd57600080fd5b5061038260155481565b3480156106d357600080fd5b506103146106e2366004612dba565b6111e4565b3480156106f357600080fd5b50610314611222565b34801561070857600080fd5b50610361610717366004612cbf565b6001600160a01b031660009081526008602052604090205460ff1690565b34801561074157600080fd5b506000546001600160a01b03166103c4565b34801561075f57600080fd5b5061031461076e366004612dba565b61126f565b34801561077f57600080fd5b5061031461078e366004612cbf565b61129e565b34801561079f57600080fd5b5061032b6112ea565b3480156107b457600080fd5b50601654610382565b3480156107c957600080fd5b506103616107d8366004612d73565b6112f9565b3480156107e957600080fd5b506003546103c4906001600160a01b031681565b34801561080957600080fd5b50610314611348565b34801561081e57600080fd5b5061036161082d366004612d73565b61144e565b34801561083e57600080fd5b5061031461084d366004612dba565b61145b565b34801561085e57600080fd5b50601754610382565b34801561087357600080fd5b50610314610882366004612d9f565b61148a565b34801561089357600080fd5b5061038260145481565b3480156108a957600080fd5b506103146108b8366004612dba565b6114fd565b3480156108c957600080fd5b506103826108d8366004612cf9565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561090f57600080fd5b5061031461091e366004612cbf565b611582565b34801561092f57600080fd5b5061031461093e366004612dba565b6115cd565b34801561094f57600080fd5b5061031461095e366004612dba565b61160b565b34801561096f57600080fd5b5061031461097e366004612cbf565b61163a565b6000546001600160a01b031633146109b65760405162461bcd60e51b81526004016109ad90612efb565b60405180910390fd5b601055565b6060600d80546109ca90612ffd565b80601f01602080910402602001604051908101604052809291908181526020018280546109f690612ffd565b8015610a435780601f10610a1857610100808354040283529160200191610a43565b820191906000526020600020905b815481529060010190602001808311610a2657829003601f168201915b5050505050905090565b6000610a5a338484611712565b5060015b92915050565b6000610a71848484611836565b610ac38433610abe856040518060600160405280602881526020016130ae602891396001600160a01b038a1660009081526006602090815260408083203384529091529020549190611b39565b611712565b5060019392505050565b6000546001600160a01b03163314610af75760405162461bcd60e51b81526004016109ad90612efb565b60188054821515620100000262ff0000199091161790556040517f3794234fa370c9f3b948dda3e3040530785b2ef1eb27dda3ffde478f4e2643c090610b4290831515815260200190565b60405180910390a150565b6000600b54821115610bb45760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016109ad565b6000610bbe611b73565b9050610bca8382611b96565b9392505050565b6000546001600160a01b03163314610bfb5760405162461bcd60e51b81526004016109ad90612efb565b610c05600161148a565b60006010908155601255681b1ae4d6e2ef500000601555565b6000546001600160a01b03163314610c485760405162461bcd60e51b81526004016109ad90612efb565b6001600160a01b03811660009081526008602052604090205460ff16610cb05760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016109ad565b60005b600954811015610dd157816001600160a01b031660098281548110610cda57610cda61307f565b6000918252602090912001546001600160a01b03161415610dbf5760098054610d0590600190612fe6565b81548110610d1557610d1561307f565b600091825260209091200154600980546001600160a01b039092169183908110610d4157610d4161307f565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600582526040808220829055600890925220805460ff191690556009805480610d9957610d99613069565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610dc981613038565b915050610cb3565b5050565b3360008181526006602090815260408083206001600160a01b03871684529091528120549091610a5a918590610abe9086611bd8565b3360008181526008602052604090205460ff1615610e805760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b60648201526084016109ad565b6000610e8b83611c37565b505050506001600160a01b038416600090815260046020526040902054919250610eb791905082611c86565b6001600160a01b038316600090815260046020526040902055600b54610edd9082611c86565b600b55600c54610eed9084611bd8565b600c55505050565b6000546001600160a01b03163314610f1f5760405162461bcd60e51b81526004016109ad90612efb565b6001600160a01b03166000908152600760205260409020805460ff19166001179055565b6000600a54831115610f975760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c790060448201526064016109ad565b81610fb6576000610fa784611c37565b50939550610a5e945050505050565b6000610fc184611c37565b50929550610a5e945050505050565b6000546001600160a01b03163314610ffa5760405162461bcd60e51b81526004016109ad90612efb565b6001600160a01b03811660009081526008602052604090205460ff16156110635760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016109ad565b6001600160a01b038116600090815260046020526040902054156110bd576001600160a01b0381166000908152600460205260409020546110a390610b4d565b6001600160a01b0382166000908152600560205260409020555b6001600160a01b03166000818152600860205260408120805460ff191660019081179091556009805491820181559091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0180546001600160a01b0319169091179055565b6001600160a01b03811660009081526008602052604081205460ff161561116057506001600160a01b031660009081526005602052604090205490565b6001600160a01b038216600090815260046020526040902054610a5e90610b4d565b6000546001600160a01b031633146111ac5760405162461bcd60e51b81526004016109ad90612efb565b600080546040516001600160a01b03909116906000805160206130d6833981519152908390a3600080546001600160a01b0319169055565b6000546001600160a01b0316331461120e5760405162461bcd60e51b81526004016109ad90612efb565b61121c81633b9aca00612fc7565b60175550565b6000546001600160a01b0316331461124c5760405162461bcd60e51b81526004016109ad90612efb565b611256600061148a565b60006010819055601255681b1ae4d6e2ef500000601555565b6000546001600160a01b031633146112995760405162461bcd60e51b81526004016109ad90612efb565b601255565b6000546001600160a01b031633146112c85760405162461bcd60e51b81526004016109ad90612efb565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6060600e80546109ca90612ffd565b6000610a5a3384610abe856040518060600160405280602581526020016130f6602591393360009081526006602090815260408083206001600160a01b038d1684529091529020549190611b39565b6001546001600160a01b031633146113ae5760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b60648201526084016109ad565b60025442116113ff5760405162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374206973206c6f636b656420756e74696c203720646179730060448201526064016109ad565b600154600080546040516001600160a01b0393841693909116916000805160206130d683398151915291a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b6000610a5a338484611836565b6000546001600160a01b031633146114855760405162461bcd60e51b81526004016109ad90612efb565b601455565b6000546001600160a01b031633146114b45760405162461bcd60e51b81526004016109ad90612efb565b601880548215156101000261ff00199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15990610b4290831515815260200190565b6000546001600160a01b031633146115275760405162461bcd60e51b81526004016109ad90612efb565b60008054600180546001600160a01b03199081166001600160a01b038416179091551690556115568142612f8d565b600255600080546040516001600160a01b03909116906000805160206130d6833981519152908390a350565b6000546001600160a01b031633146115ac5760405162461bcd60e51b81526004016109ad90612efb565b6001600160a01b03166000908152600760205260409020805460ff19169055565b6000546001600160a01b031633146115f75760405162461bcd60e51b81526004016109ad90612efb565b61160581633b9aca00612fc7565b60155550565b6000546001600160a01b031633146116355760405162461bcd60e51b81526004016109ad90612efb565b601655565b6000546001600160a01b031633146116645760405162461bcd60e51b81526004016109ad90612efb565b6001600160a01b0381166116c95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109ad565b600080546040516001600160a01b03808516939216916000805160206130d683398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166117745760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109ad565b6001600160a01b0382166117d55760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109ad565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661189a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016109ad565b6001600160a01b0382166118fc5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016109ad565b6000811161195e5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016109ad565b6000546001600160a01b0384811691161480159061198a57506000546001600160a01b03838116911614155b156119f2576015548111156119f25760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b60648201526084016109ad565b60006119fd30611123565b6016546018549192508210159060ff16158015611a215750601854610100900460ff165b8015611a5e57507f0000000000000000000000006c9fe4ffe8577ba4478ec0e0be34d06dcc58190c6001600160a01b0316846001600160a01b0316145b15611ada578015611a94576016549150611a81611a7c836002611b96565b611cc8565b611a94611a8f836002611b96565b611d66565b601854479062010000900460ff168015611ab15750633b9aca0081115b15611ad857601754811115611ac557506017545b611ad8611ad3826064611b96565b611dde565b505b6001600160a01b03851660009081526007602052604090205460019060ff1680611b1c57506001600160a01b03851660009081526007602052604090205460ff165b15611b25575060005b611b3186868684611e07565b505050505050565b60008184841115611b5d5760405162461bcd60e51b81526004016109ad9190612ea6565b506000611b6a8486612fe6565b95945050505050565b6000806000611b80611f32565b9092509050611b8f8282611b96565b9250505090565b6000610bca83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506120b4565b600080611be58385612f8d565b905083811015610bca5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016109ad565b6000806000806000806000806000611c4e8a6120e2565b9250925092506000806000611c6c8d8686611c67611b73565b612124565b919f909e50909c50959a5093985091965092945050505050565b6000610bca83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611b39565b6018805460ff191660011790556000611ce2826002611b96565b90506000611cf08383611c86565b905047611cfc83612174565b6000611d084783611c86565b9050611d14838261237c565b60408051858152602081018390529081018490527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a150506018805460ff19169055505050565b6018805460ff1916600117905547611d7d82612174565b6000611d894783611c86565b9050611d9e611d99600283612fa5565b612491565b6000611dab600283612fa5565b600354909150611dce906001600160a01b0316611dc9836002611b96565b612669565b50506018805460ff191690555050565b6018805460ff191660011790558015611dfa57611dfa816126a4565b506018805460ff19169055565b80611e1457611e1461288d565b6001600160a01b03841660009081526008602052604090205460ff168015611e5557506001600160a01b03831660009081526008602052604090205460ff16155b15611e6a57611e658484846128bb565b611f16565b6001600160a01b03841660009081526008602052604090205460ff16158015611eab57506001600160a01b03831660009081526008602052604090205460ff165b15611ebb57611e658484846129e1565b6001600160a01b03841660009081526008602052604090205460ff168015611efb57506001600160a01b03831660009081526008602052604090205460ff165b15611f0b57611e65848484612a8a565b611f16848484612afd565b80611f2c57611f2c601154601055601354601255565b50505050565b600b54600a546000918291825b60095481101561208457826004600060098481548110611f6157611f6161307f565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180611fcc5750816005600060098481548110611fa557611fa561307f565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15611fe257600b54600a54945094505050509091565b6120286004600060098481548110611ffc57611ffc61307f565b60009182526020808320909101546001600160a01b031683528201929092526040019020548490611c86565b925061207060056000600984815481106120445761204461307f565b60009182526020808320909101546001600160a01b031683528201929092526040019020548390611c86565b91508061207c81613038565b915050611f3f565b50600a54600b5461209491611b96565b8210156120ab57600b54600a549350935050509091565b90939092509050565b600081836120d55760405162461bcd60e51b81526004016109ad9190612ea6565b506000611b6a8486612fa5565b6000806000806120f185612b41565b905060006120fe86612b63565b90506000612116826121108986611c86565b90611c86565b979296509094509092505050565b60008080806121338886612b7f565b905060006121418887612b7f565b9050600061214f8888612b7f565b90506000612161826121108686611c86565b939b939a50919850919650505050505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106121a9576121a961307f565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561222257600080fd5b505afa158015612236573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061225a9190612cdc565b8160018151811061226d5761226d61307f565b60200260200101906001600160a01b031690816001600160a01b0316815250506122b8307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611712565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac9479061230d908590600090869030904290600401612f51565b600060405180830381600087803b15801561232757600080fd5b505af115801561233b573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051612370929190612f30565b60405180910390a15050565b6123a7307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611712565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663f305d7198230856000806123ee6000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b15801561245157600080fd5b505af1158015612465573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061248a9190612dff565b5050505050565b6040805160028082526060820183526000926020830190803683370190505090507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561250b57600080fd5b505afa15801561251f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125439190612cdc565b816000815181106125565761255661307f565b60200260200101906001600160a01b031690816001600160a01b03168152505073dac17f958d2ee523a2206206994597c13d831ec78160018151811061259e5761259e61307f565b6001600160a01b03928316602091820292909201015260035460405163b6f9de9560e01b81527f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d83169263b6f9de959286926126069260009288929116904290600401612e71565b6000604051808303818588803b15801561261f57600080fd5b505af1158015612633573d6000803e3d6000fd5b50505050507fdfc81a52e023cf602de872a8199ce86256597dfd5b451f454c364532f6d9f8838282604051612370929190612f30565b6040516001600160a01b0383169082156108fc029083906000818181858888f1935050505015801561269f573d6000803e3d6000fd5b505050565b6040805160028082526060820183526000926020830190803683370190505090507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561271e57600080fd5b505afa158015612732573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127569190612cdc565b816000815181106127695761276961307f565b60200260200101906001600160a01b031690816001600160a01b031681525050308160018151811061279d5761279d61307f565b6001600160a01b0392831660209182029290920101527f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d1663b6f9de95836000847f000000000000000000000000000000000000000000000000000000000000dead61280b4261012c611bd8565b6040518663ffffffff1660e01b815260040161282a9493929190612e71565b6000604051808303818588803b15801561284357600080fd5b505af1158015612857573d6000803e3d6000fd5b50505050507f6fd378a9d8b7345c2e5b18229aaf1e39d32b177b501d0a0d26a0a858a23a96248282604051612370929190612f30565b60105415801561289d5750601254155b156128a457565b601080546011556012805460135560009182905555565b6000806000806000806128cd87611c37565b6001600160a01b038f16600090815260056020526040902054959b509399509197509550935091506128ff9088611c86565b6001600160a01b038a1660009081526005602090815260408083209390935560049052205461292e9087611c86565b6001600160a01b03808b1660009081526004602052604080822093909355908a168152205461295d9086611bd8565b6001600160a01b03891660009081526004602052604090205561297f81612bfe565b6129898483612c86565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516129ce91815260200190565b60405180910390a3505050505050505050565b6000806000806000806129f387611c37565b6001600160a01b038f16600090815260046020526040902054959b50939950919750955093509150612a259087611c86565b6001600160a01b03808b16600090815260046020908152604080832094909455918b16815260059091522054612a5b9084611bd8565b6001600160a01b03891660009081526005602090815260408083209390935560049052205461295d9086611bd8565b600080600080600080612a9c87611c37565b6001600160a01b038f16600090815260056020526040902054959b50939950919750955093509150612ace9088611c86565b6001600160a01b038a16600090815260056020908152604080832093909355600490522054612a259087611c86565b600080600080600080612b0f87611c37565b6001600160a01b038f16600090815260046020526040902054959b5093995091975095509350915061292e9087611c86565b6000610a5e6064612b5d60105485612b7f90919063ffffffff16565b90611b96565b6000610a5e6064612b5d60125485612b7f90919063ffffffff16565b600082612b8e57506000610a5e565b6000612b9a8385612fc7565b905082612ba78583612fa5565b14610bca5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016109ad565b6000612c08611b73565b90506000612c168383612b7f565b30600090815260046020526040902054909150612c339082611bd8565b3060009081526004602090815260408083209390935560089052205460ff161561269f5730600090815260056020526040902054612c719084611bd8565b30600090815260056020526040902055505050565b600b54612c939083611c86565b600b55600c54612ca39082611bd8565b600c555050565b80358015158114612cba57600080fd5b919050565b600060208284031215612cd157600080fd5b8135610bca81613095565b600060208284031215612cee57600080fd5b8151610bca81613095565b60008060408385031215612d0c57600080fd5b8235612d1781613095565b91506020830135612d2781613095565b809150509250929050565b600080600060608486031215612d4757600080fd5b8335612d5281613095565b92506020840135612d6281613095565b929592945050506040919091013590565b60008060408385031215612d8657600080fd5b8235612d9181613095565b946020939093013593505050565b600060208284031215612db157600080fd5b610bca82612caa565b600060208284031215612dcc57600080fd5b5035919050565b60008060408385031215612de657600080fd5b82359150612df660208401612caa565b90509250929050565b600080600060608486031215612e1457600080fd5b8351925060208401519150604084015190509250925092565b600081518084526020808501945080840160005b83811015612e665781516001600160a01b031687529582019590820190600101612e41565b509495945050505050565b848152608060208201526000612e8a6080830186612e2d565b6001600160a01b03949094166040830152506060015292915050565b600060208083528351808285015260005b81811015612ed357858101830151858201604001528201612eb7565b81811115612ee5576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b828152604060208201526000612f496040830184612e2d565b949350505050565b85815284602082015260a060408201526000612f7060a0830186612e2d565b6001600160a01b0394909416606083015250608001529392505050565b60008219821115612fa057612fa0613053565b500190565b600082612fc257634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615612fe157612fe1613053565b500290565b600082821015612ff857612ff8613053565b500390565b600181811c9082168061301157607f821691505b6020821081141561303257634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561304c5761304c613053565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03811681146130aa57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e045524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212206d8dd00329d000612e61d0420b497225fb5ffb2760b4c3667624b95d2bad1f4764736f6c63430008050033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000050a6db845f4656ce72c700a7e5f9028d0765ae29
-----Decoded View---------------
Arg [0] : _marketingAddress (address): 0x50a6dB845F4656Ce72c700A7e5f9028d0765ae29
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000050a6db845f4656ce72c700a7e5f9028d0765ae29
Deployed Bytecode Sourcemap
15344:21982:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35378:98;;;;;;;;;;-1:-1:-1;35378:98:0;;;;;:::i;:::-;;:::i;:::-;;18257:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19169:161;;;;;;;;;;-1:-1:-1;19169:161:0;;;;;:::i;:::-;;:::i;:::-;;;4470:14:1;;4463:22;4445:41;;4433:2;4418:18;19169:161:0;4400:92:1;20290:87:0;;;;;;;;;;-1:-1:-1;20359:10:0;;20290:87;;;12785:25:1;;;12773:2;12758:18;20290:87:0;12740:76:1;16697:51:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3425:32:1;;;3407:51;;3395:2;3380:18;16697:51:0;3362:102:1;18534:95:0;;;;;;;;;;-1:-1:-1;18614:7:0;;18534:95;;19338:313;;;;;;;;;;-1:-1:-1;19338:313:0;;;;;:::i;:::-;;:::i;15514:81::-;;;;;;;;;;;;;;;36524:150;;;;;;;;;;-1:-1:-1;36524:150:0;;;;;:::i;:::-;;:::i;21474:253::-;;;;;;;;;;-1:-1:-1;21474:253:0;;;;;:::i;:::-;;:::i;36892:193::-;;;;;;;;;;;;;:::i;18443:83::-;;;;;;;;;;-1:-1:-1;18509:9:0;;18443:83;;18509:9;;;;14211:36:1;;14199:2;14184:18;18443:83:0;14166:87:1;22078:479:0;;;;;;;;;;-1:-1:-1;22078:479:0;;;;;:::i;:::-;;:::i;19659:218::-;;;;;;;;;;-1:-1:-1;19659:218:0;;;;;:::i;:::-;;:::i;16243:26::-;;;;;;;;;;;;;;;;20641:377;;;;;;;;;;-1:-1:-1;20641:377:0;;;;;:::i;:::-;;:::i;35133:111::-;;;;;;;;;;-1:-1:-1;35133:111:0;;;;;:::i;:::-;;:::i;21030:436::-;;;;;;;;;;-1:-1:-1;21030:436:0;;;;;:::i;:::-;;:::i;16755:38::-;;;;;;;;;;;;;;;16834:40;;;;;;;;;;-1:-1:-1;16834:40:0;;;;;;;;;;;21735:335;;;;;;;;;;-1:-1:-1;21735:335:0;;;;;:::i;:::-;;:::i;34998:123::-;;;;;;;;;;-1:-1:-1;34998:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;35086:27:0;35062:4;35086:27;;;:18;:27;;;;;;;;;34998:123;6734:90;;;;;;;;;;-1:-1:-1;6801:15:0;6734:90;;6632;;;;;;;;;;-1:-1:-1;6705:9:0;;6632:90;;16881:33;;;;;;;;;;-1:-1:-1;16881:33:0;;;;;;;;;;;16330;;;;;;;;;;;;;;;;18637:198;;;;;;;;;;-1:-1:-1;18637:198:0;;;;;:::i;:::-;;:::i;6224:148::-;;;;;;;;;;;;;:::i;16512:57::-;;;;;;;;;;;;;;;;36052:132;;;;;;;;;;-1:-1:-1;36052:132:0;;;;;:::i;:::-;;:::i;36686:194::-;;;;;;;;;;;;;:::i;20162:120::-;;;;;;;;;;-1:-1:-1;20162:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;20254:20:0;20230:4;20254:20;;;:11;:20;;;;;;;;;20162:120;5999:79;;;;;;;;;;-1:-1:-1;6037:7:0;6064:6;-1:-1:-1;;;;;6064:6:0;5999:79;;35488:122;;;;;;;;;;-1:-1:-1;35488:122:0;;;;;:::i;:::-;;:::i;36192:141::-;;;;;;;;;;-1:-1:-1;36192:141:0;;;;;:::i;:::-;;:::i;18348:87::-;;;;;;;;;;;;;:::i;20389:120::-;;;;;;;;;;-1:-1:-1;20478:23:0;;20389:120;;19885:269;;;;;;;;;;-1:-1:-1;19885:269:0;;;;;:::i;:::-;;:::i;15468:39::-;;;;;;;;;;-1:-1:-1;15468:39:0;;;;-1:-1:-1;;;;;15468:39:0;;;7070:305;;;;;;;;;;;;;:::i;18843:167::-;;;;;;;;;;-1:-1:-1;18843:167:0;;;;;:::i;:::-;;:::i;35753:112::-;;;;;;;;;;-1:-1:-1;35753:112:0;;;;;:::i;:::-;;:::i;20521:108::-;;;;;;;;;;-1:-1:-1;20604:17:0;;20521:108;;36341:171;;;;;;;;;;-1:-1:-1;36341:171:0;;;;;:::i;:::-;;:::i;16464:35::-;;;;;;;;;;;;;;;;6832:226;;;;;;;;;;-1:-1:-1;6832:226:0;;;;;:::i;:::-;;:::i;19018:143::-;;;;;;;;;;-1:-1:-1;19018:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;19126:18:0;;;19099:7;19126:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;19018:143;35256:110;;;;;;;;;;-1:-1:-1;35256:110:0;;;;;:::i;:::-;;:::i;35622:119::-;;;;;;;;;;-1:-1:-1;35622:119:0;;;;;:::i;:::-;;:::i;35873:166::-;;;;;;;;;;-1:-1:-1;35873:166:0;;;;;:::i;:::-;;:::i;6380:244::-;;;;;;;;;;-1:-1:-1;6380:244:0;;;;;:::i;:::-;;:::i;35378:98::-;6133:6;;-1:-1:-1;;;;;6133:6:0;383:10;6133:22;6125:67;;;;-1:-1:-1;;;6125:67:0;;;;;;;:::i;:::-;;;;;;;;;35452:7:::1;:16:::0;35378:98::o;18257:83::-;18294:13;18327:5;18320:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18257:83;:::o;19169:161::-;19244:4;19261:39;383:10;19284:7;19293:6;19261:8;:39::i;:::-;-1:-1:-1;19318:4:0;19169:161;;;;;:::o;19338:313::-;19436:4;19453:36;19463:6;19471:9;19482:6;19453:9;:36::i;:::-;19500:121;19509:6;383:10;19531:89;19569:6;19531:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19531:19:0;;;;;;:11;:19;;;;;;;;383:10;19531:33;;;;;;;;;;:37;:89::i;:::-;19500:8;:121::i;:::-;-1:-1:-1;19639:4:0;19338:313;;;;;:::o;36524:150::-;6133:6;;-1:-1:-1;;;;;6133:6:0;383:10;6133:22;6125:67;;;;-1:-1:-1;;;6125:67:0;;;;;;;:::i;:::-;36594:14:::1;:25:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;36594:25:0;;::::1;;::::0;;36635:31:::1;::::0;::::1;::::0;::::1;::::0;36611:8;4470:14:1;4463:22;4445:41;;4433:2;4418:18;;4400:92;36635:31:0::1;;;;;;;;36524:150:::0;:::o;21474:253::-;21540:7;21579;;21568;:18;;21560:73;;;;-1:-1:-1;;;21560:73:0;;6978:2:1;21560:73:0;;;6960:21:1;7017:2;6997:18;;;6990:30;7056:34;7036:18;;;7029:62;-1:-1:-1;;;7107:18:1;;;7100:40;7157:19;;21560:73:0;6950:232:1;21560:73:0;21644:19;21667:10;:8;:10::i;:::-;21644:33;-1:-1:-1;21695:24:0;:7;21644:33;21695:11;:24::i;:::-;21688:31;21474:253;-1:-1:-1;;;21474:253:0:o;36892:193::-;6133:6;;-1:-1:-1;;;;;6133:6:0;383:10;6133:22;6125:67;;;;-1:-1:-1;;;6125:67:0;;;;;;;:::i;:::-;36943:30:::1;36968:4;36943:24;:30::i;:::-;36994:1;36984:7;:11:::0;;;37006:13:::1;:18:::0;37050:27:::1;37035:12;:42:::0;36892:193::o;22078:479::-;6133:6;;-1:-1:-1;;;;;6133:6:0;383:10;6133:22;6125:67;;;;-1:-1:-1;;;6125:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22160:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;22152:60;;;::::0;-1:-1:-1;;;22152:60:0;;8555:2:1;22152:60:0::1;::::0;::::1;8537:21:1::0;8594:2;8574:18;;;8567:30;8633:29;8613:18;;;8606:57;8680:18;;22152:60:0::1;8527:177:1::0;22152:60:0::1;22228:9;22223:327;22247:9;:16:::0;22243:20;::::1;22223:327;;;22305:7;-1:-1:-1::0;;;;;22289:23:0::1;:9;22299:1;22289:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;22289:12:0::1;:23;22285:254;;;22348:9;22358:16:::0;;:20:::1;::::0;22377:1:::1;::::0;22358:20:::1;:::i;:::-;22348:31;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;22333:9:::1;:12:::0;;-1:-1:-1;;;;;22348:31:0;;::::1;::::0;22343:1;;22333:12;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;22333:46:0::1;-1:-1:-1::0;;;;;22333:46:0;;::::1;;::::0;;22398:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;22437:11:::1;:20:::0;;;;:28;;-1:-1:-1;;22437:28:0::1;::::0;;22484:9:::1;:15:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;22484:15:0;;;;;-1:-1:-1;;;;;;22484:15:0::1;::::0;;;;;22223:327:::1;22078:479:::0;:::o;22285:254::-:1;22265:3:::0;::::1;::::0;::::1;:::i;:::-;;;;22223:327;;;;22078:479:::0;:::o;19659:218::-;383:10;19747:4;19796:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;19796:34:0;;;;;;;;;;19747:4;;19764:83;;19787:7;;19796:50;;19835:10;19796:38;:50::i;20641:377::-;383:10;20693:14;20742:19;;;:11;:19;;;;;;;;20741:20;20733:77;;;;-1:-1:-1;;;20733:77:0;;12024:2:1;20733:77:0;;;12006:21:1;12063:2;12043:18;;;12036:30;12102:34;12082:18;;;12075:62;-1:-1:-1;;;12153:18:1;;;12146:42;12205:19;;20733:77:0;11996:234:1;20733:77:0;20822:15;20846:19;20857:7;20846:10;:19::i;:::-;-1:-1:-1;;;;;;;;;20894:15:0;;;;;;:7;:15;;;;;;20821:44;;-1:-1:-1;20894:28:0;;:15;-1:-1:-1;20821:44:0;20894:19;:28::i;:::-;-1:-1:-1;;;;;20876:15:0;;;;;;:7;:15;;;;;:46;20943:7;;:20;;20955:7;20943:11;:20::i;:::-;20933:7;:30;20987:10;;:23;;21002:7;20987:14;:23::i;:::-;20974:10;:36;-1:-1:-1;;;20641:377:0:o;35133:111::-;6133:6;;-1:-1:-1;;;;;6133:6:0;383:10;6133:22;6125:67;;;;-1:-1:-1;;;6125:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;35202:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;35202:34:0::1;35232:4;35202:34;::::0;;35133:111::o;21030:436::-;21120:7;21159;;21148;:18;;21140:62;;;;-1:-1:-1;;;21140:62:0;;8911:2:1;21140:62:0;;;8893:21:1;8950:2;8930:18;;;8923:30;8989:33;8969:18;;;8962:61;9040:18;;21140:62:0;8883:181:1;21140:62:0;21218:17;21213:246;;21253:15;21277:19;21288:7;21277:10;:19::i;:::-;-1:-1:-1;21252:44:0;;-1:-1:-1;21311:14:0;;-1:-1:-1;;;;;21311:14:0;21213:246;21360:23;21391:19;21402:7;21391:10;:19::i;:::-;-1:-1:-1;21358:52:0;;-1:-1:-1;21425:22:0;;-1:-1:-1;;;;;21425:22:0;21735:335;6133:6;;-1:-1:-1;;;;;6133:6:0;383:10;6133:22;6125:67;;;;-1:-1:-1;;;6125:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21820:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;21819:21;21811:61;;;::::0;-1:-1:-1;;;21811:61:0;;8555:2:1;21811:61:0::1;::::0;::::1;8537:21:1::0;8594:2;8574:18;;;8567:30;8633:29;8613:18;;;8606:57;8680:18;;21811:61:0::1;8527:177:1::0;21811:61:0::1;-1:-1:-1::0;;;;;21886:16:0;::::1;21905:1;21886:16:::0;;;:7:::1;:16;::::0;;;;;:20;21883:108:::1;;-1:-1:-1::0;;;;;21962:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;21942:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;21923:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;21883:108:::1;-1:-1:-1::0;;;;;22001:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;22001:27:0::1;22024:4;22001:27:::0;;::::1;::::0;;;22039:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;22039:23:0::1;::::0;;::::1;::::0;;21735:335::o;18637:198::-;-1:-1:-1;;;;;18727:20:0;;18703:7;18727:20;;;:11;:20;;;;;;;;18723:49;;;-1:-1:-1;;;;;;18756:16:0;;;;;:7;:16;;;;;;;18637:198::o;18723:49::-;-1:-1:-1;;;;;18810:16:0;;;;;;:7;:16;;;;;;18790:37;;:19;:37::i;6224:148::-;6133:6;;-1:-1:-1;;;;;6133:6:0;383:10;6133:22;6125:67;;;;-1:-1:-1;;;6125:67:0;;;;;;;:::i;:::-;6331:1:::1;6315:6:::0;;6294:40:::1;::::0;-1:-1:-1;;;;;6315:6:0;;::::1;::::0;-1:-1:-1;;;;;;;;;;;6294:40:0;6331:1;;6294:40:::1;6362:1;6345:19:::0;;-1:-1:-1;;;;;;6345:19:0::1;::::0;;6224:148::o;36052:132::-;6133:6;;-1:-1:-1;;;;;6133:6:0;383:10;6133:22;6125:67;;;;-1:-1:-1;;;6125:67:0;;;;;;;:::i;:::-;36156:20:::1;:12:::0;36171:5:::1;36156:20;:::i;:::-;36136:17;:40:::0;-1:-1:-1;36052:132:0:o;36686:194::-;6133:6;;-1:-1:-1;;;;;6133:6:0;383:10;6133:22;6125:67;;;;-1:-1:-1;;;6125:67:0;;;;;;;:::i;:::-;36738:31:::1;36763:5;36738:24;:31::i;:::-;36790:1;36780:7;:11:::0;;;36802:13:::1;:17:::0;36845:27:::1;36830:12;:42:::0;36686:194::o;35488:122::-;6133:6;;-1:-1:-1;;;;;6133:6:0;383:10;6133:22;6125:67;;;;-1:-1:-1;;;6125:67:0;;;;;;;:::i;:::-;35574:13:::1;:28:::0;35488:122::o;36192:141::-;6133:6;;-1:-1:-1;;;;;6133:6:0;383:10;6133:22;6125:67;;;;-1:-1:-1;;;6125:67:0;;;;;;;:::i;:::-;36280:16:::1;:45:::0;;-1:-1:-1;;;;;;36280:45:0::1;-1:-1:-1::0;;;;;36280:45:0;;;::::1;::::0;;;::::1;::::0;;36192:141::o;18348:87::-;18387:13;18420:7;18413:14;;;;;:::i;19885:269::-;19978:4;19995:129;383:10;20018:7;20027:96;20066:15;20027:96;;;;;;;;;;;;;;;;;383:10;20027:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;20027:34:0;;;;;;;;;;;;:38;:96::i;7070:305::-;7122:14;;-1:-1:-1;;;;;7122:14:0;7140:10;7122:28;7114:76;;;;-1:-1:-1;;;7114:76:0;;12437:2:1;7114:76:0;;;12419:21:1;12476:2;12456:18;;;12449:30;12515:34;12495:18;;;12488:62;-1:-1:-1;;;12566:18:1;;;12559:33;12609:19;;7114:76:0;12409:225:1;7114:76:0;7227:9;;7209:15;:27;7201:72;;;;-1:-1:-1;;;7201:72:0;;11664:2:1;7201:72:0;;;11646:21:1;11703:2;11683:18;;;11676:30;11742:33;11722:18;;;11715:61;11793:18;;7201:72:0;11636:181:1;7201:72:0;7318:14;;;7310:6;;7289:44;;-1:-1:-1;;;;;7318:14:0;;;;7310:6;;;;-1:-1:-1;;;;;;;;;;;7289:44:0;;7353:14;;;7344:23;;-1:-1:-1;;;;;;7344:23:0;-1:-1:-1;;;;;7353:14:0;;;7344:23;;;;;;7070:305::o;18843:167::-;18921:4;18938:42;383:10;18962:9;18973:6;18938:9;:42::i;35753:112::-;6133:6;;-1:-1:-1;;;;;6133:6:0;383:10;6133:22;6125:67;;;;-1:-1:-1;;;6125:67:0;;;;;;;:::i;:::-;35831:16:::1;:26:::0;35753:112::o;36341:171::-;6133:6;;-1:-1:-1;;;;;6133:6:0;383:10;6133:22;6125:67;;;;-1:-1:-1;;;6125:67:0;;;;;;;:::i;:::-;36418:21:::1;:32:::0;;;::::1;;;;-1:-1:-1::0;;36418:32:0;;::::1;;::::0;;36466:38:::1;::::0;::::1;::::0;::::1;::::0;36442:8;4470:14:1;4463:22;4445:41;;4433:2;4418:18;;4400:92;6832:226:0;6133:6;;-1:-1:-1;;;;;6133:6:0;383:10;6133:22;6125:67;;;;-1:-1:-1;;;6125:67:0;;;;;;;:::i;:::-;6913:6:::1;::::0;;;6896:23;;-1:-1:-1;;;;;;6896:23:0;;::::1;-1:-1:-1::0;;;;;6913:6:0;::::1;6896:23;::::0;;;6930:19:::1;::::0;;6972:22:::1;6990:4:::0;6972:15:::1;:22;:::i;:::-;6960:9;:34:::0;7047:1:::1;7031:6:::0;;7010:40:::1;::::0;-1:-1:-1;;;;;7031:6:0;;::::1;::::0;-1:-1:-1;;;;;;;;;;;7010:40:0;7047:1;;7010:40:::1;6832:226:::0;:::o;35256:110::-;6133:6;;-1:-1:-1;;;;;6133:6:0;383:10;6133:22;6125:67;;;;-1:-1:-1;;;6125:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;35323:27:0::1;35353:5;35323:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;35323:35:0::1;::::0;;35256:110::o;35622:119::-;6133:6;;-1:-1:-1;;;;;6133:6:0;383:10;6133:22;6125:67;;;;-1:-1:-1;;;6125:67:0;;;;;;;:::i;:::-;35714:19:::1;:11:::0;35728:5:::1;35714:19;:::i;:::-;35699:12;:34:::0;-1:-1:-1;35622:119:0:o;35873:166::-;6133:6;;-1:-1:-1;;;;;6133:6:0;383:10;6133:22;6125:67;;;;-1:-1:-1;;;6125:67:0;;;;;;;:::i;:::-;35981:23:::1;:50:::0;35873:166::o;6380:244::-;6133:6;;-1:-1:-1;;;;;6133:6:0;383:10;6133:22;6125:67;;;;-1:-1:-1;;;6125:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6469:22:0;::::1;6461:73;;;::::0;-1:-1:-1;;;6461:73:0;;7389:2:1;6461:73:0::1;::::0;::::1;7371:21:1::0;7428:2;7408:18;;;7401:30;7467:34;7447:18;;;7440:62;-1:-1:-1;;;7518:18:1;;;7511:36;7564:19;;6461:73:0::1;7361:228:1::0;6461:73:0::1;6571:6;::::0;;6550:38:::1;::::0;-1:-1:-1;;;;;6550:38:0;;::::1;::::0;6571:6;::::1;::::0;-1:-1:-1;;;;;;;;;;;6550:38:0;::::1;6599:6;:17:::0;;-1:-1:-1;;;;;;6599:17:0::1;-1:-1:-1::0;;;;;6599:17:0;;;::::1;::::0;;;::::1;::::0;;6380:244::o;22565:337::-;-1:-1:-1;;;;;22658:19:0;;22650:68;;;;-1:-1:-1;;;22650:68:0;;11259:2:1;22650:68:0;;;11241:21:1;11298:2;11278:18;;;11271:30;11337:34;11317:18;;;11310:62;-1:-1:-1;;;11388:18:1;;;11381:34;11432:19;;22650:68:0;11231:226:1;22650:68:0;-1:-1:-1;;;;;22737:21:0;;22729:68;;;;-1:-1:-1;;;22729:68:0;;7796:2:1;22729:68:0;;;7778:21:1;7835:2;7815:18;;;7808:30;7874:34;7854:18;;;7847:62;-1:-1:-1;;;7925:18:1;;;7918:32;7967:19;;22729:68:0;7768:224:1;22729:68:0;-1:-1:-1;;;;;22810:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;22862:32;;12785:25:1;;;22862:32:0;;12758:18:1;22862:32:0;;;;;;;22565:337;;;:::o;22910:1728::-;-1:-1:-1;;;;;23032:18:0;;23024:68;;;;-1:-1:-1;;;23024:68:0;;10853:2:1;23024:68:0;;;10835:21:1;10892:2;10872:18;;;10865:30;10931:34;10911:18;;;10904:62;-1:-1:-1;;;10982:18:1;;;10975:35;11027:19;;23024:68:0;10825:227:1;23024:68:0;-1:-1:-1;;;;;23111:16:0;;23103:64;;;;-1:-1:-1;;;23103:64:0;;6574:2:1;23103:64:0;;;6556:21:1;6613:2;6593:18;;;6586:30;6652:34;6632:18;;;6625:62;-1:-1:-1;;;6703:18:1;;;6696:33;6746:19;;23103:64:0;6546:225:1;23103:64:0;23195:1;23186:6;:10;23178:64;;;;-1:-1:-1;;;23178:64:0;;10443:2:1;23178:64:0;;;10425:21:1;10482:2;10462:18;;;10455:30;10521:34;10501:18;;;10494:62;-1:-1:-1;;;10572:18:1;;;10565:39;10621:19;;23178:64:0;10415:231:1;23178:64:0;6037:7;6064:6;-1:-1:-1;;;;;23256:15:0;;;6064:6;;23256:15;;;;:32;;-1:-1:-1;6037:7:0;6064:6;-1:-1:-1;;;;;23275:13:0;;;6064:6;;23275:13;;23256:32;23253:139;;;23323:12;;23313:6;:22;;23305:75;;;;-1:-1:-1;;;23305:75:0;;9271:2:1;23305:75:0;;;9253:21:1;9310:2;9290:18;;;9283:30;9349:34;9329:18;;;9322:62;-1:-1:-1;;;9400:18:1;;;9393:38;9448:19;;23305:75:0;9243:230:1;23305:75:0;23404:28;23435:24;23453:4;23435:9;:24::i;:::-;23525:23;;23574:16;;23404:55;;-1:-1:-1;23501:47:0;;;;23574:16;;23573:17;:42;;;;-1:-1:-1;23594:21:0;;;;;;;23573:42;:65;;;;;23625:13;-1:-1:-1;;;;;23619:19:0;:2;-1:-1:-1;;;;;23619:19:0;;23573:65;23569:763;;;23659:23;23655:334;;;23726:23;;;-1:-1:-1;23805:43:0;23820:27;23726:23;23845:1;23820:24;:27::i;:::-;23805:14;:43::i;:::-;23912:39;23923:27;:20;23948:1;23923:24;:27::i;:::-;23912:10;:39::i;:::-;24058:14;;24018:21;;24058:14;;;;;:46;;;;;24094:9;24076:7;:28;24058:46;24054:267;;;24157:17;;24147:7;:27;24143:81;;;-1:-1:-1;24207:17:0;;24143:81;24274:31;24288:16;:7;24300:3;24288:11;:16::i;:::-;24274:13;:31::i;:::-;23640:692;23569:763;-1:-1:-1;;;;;24479:24:0;;24352:12;24479:24;;;:18;:24;;;;;;24367:4;;24479:24;;;:50;;-1:-1:-1;;;;;;24507:22:0;;;;;;:18;:22;;;;;;;;24479:50;24476:96;;;-1:-1:-1;24555:5:0;24476:96;24592:38;24607:4;24612:2;24615:6;24622:7;24592:14;:38::i;:::-;23013:1625;;;22910:1728;;;:::o;1698:192::-;1784:7;1820:12;1812:6;;;;1804:29;;;;-1:-1:-1;;;1804:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1844:9:0;1856:5;1860:1;1856;:5;:::i;:::-;1844:17;1698:192;-1:-1:-1;;;;;1698:192:0:o;33148:163::-;33189:7;33210:15;33227;33246:19;:17;:19::i;:::-;33209:56;;-1:-1:-1;33209:56:0;-1:-1:-1;33283:20:0;33209:56;;33283:11;:20::i;:::-;33276:27;;;;33148:163;:::o;2158:132::-;2216:7;2243:39;2247:1;2250;2243:39;;;;;;;;;;;;;;;;;:3;:39::i;1365:181::-;1423:7;;1455:5;1459:1;1455;:5;:::i;:::-;1443:17;;1484:1;1479;:6;;1471:46;;;;-1:-1:-1;;;1471:46:0;;8199:2:1;1471:46:0;;;8181:21:1;8238:2;8218:18;;;8211:30;8277:29;8257:18;;;8250:57;8324:18;;1471:46:0;8171:177:1;31946:419:0;32005:7;32014;32023;32032;32041;32050;32071:23;32096:12;32110:18;32132:20;32144:7;32132:11;:20::i;:::-;32070:82;;;;;;32164:15;32181:23;32206:12;32222:50;32234:7;32243:4;32249:10;32261;:8;:10::i;:::-;32222:11;:50::i;:::-;32163:109;;;;-1:-1:-1;32163:109:0;;-1:-1:-1;32323:15:0;;-1:-1:-1;32340:4:0;;-1:-1:-1;32346:10:0;;-1:-1:-1;31946:419:0;;-1:-1:-1;;;;;31946:419:0:o;1554:136::-;1612:7;1639:43;1643:1;1646;1639:43;;;;;;;;;;;;;;;;;:3;:43::i;24646:1013::-;17540:16;:23;;-1:-1:-1;;17540:23:0;17559:4;17540:23;;;:16;24800:27:::1;:20:::0;24825:1:::1;24800:24;:27::i;:::-;24785:42:::0;-1:-1:-1;24838:17:0::1;24858:30;:20:::0;24785:42;24858:24:::1;:30::i;:::-;24838:50:::0;-1:-1:-1;25203:21:0::1;25272:22;25289:4:::0;25272:16:::1;:22::i;:::-;25428:18;25449:41;:21;25475:14:::0;25449:25:::1;:41::i;:::-;25428:62;;25547:35;25560:9;25571:10;25547:12;:35::i;:::-;25608:43;::::0;;13947:25:1;;;14003:2;13988:18;;13981:34;;;14031:18;;;14024:34;;;25608:43:0::1;::::0;13935:2:1;13920:18;25608:43:0::1;;;;;;;-1:-1:-1::0;;17586:16:0;:24;;-1:-1:-1;;17586:24:0;;;-1:-1:-1;;;24646:1013:0:o;25667:503::-;17540:16;:23;;-1:-1:-1;;17540:23:0;17559:4;17540:23;;;25782:21:::1;25814:38;25831:20:::0;25814:16:::1;:38::i;:::-;25863:26;25892:41;:21;25918:14:::0;25892:25:::1;:41::i;:::-;25863:70:::0;-1:-1:-1;25946:39:0::1;25964:20;25983:1;25863:70:::0;25964:20:::1;:::i;:::-;25946:17;:39::i;:::-;25996:24;26021:20;26040:1;26021:18:::0;:20:::1;:::i;:::-;26110:16;::::0;25996:45;;-1:-1:-1;26089:63:0::1;::::0;-1:-1:-1;;;;;26110:16:0::1;26128:23;25996:45:::0;26149:1:::1;26128:20;:23::i;:::-;26089:20;:63::i;:::-;-1:-1:-1::0;;17586:16:0;:24;;-1:-1:-1;;17586:24:0;;;-1:-1:-1;;25667:503:0:o;26184:135::-;17540:16;:23;;-1:-1:-1;;17540:23:0;17559:4;17540:23;;;26255:10;;26251:61:::1;;26279:24;26296:6;26279:16;:24::i;:::-;-1:-1:-1::0;17586:16:0;:24;;-1:-1:-1;;17586:24:0;;;26184:135::o;28760:704::-;28871:7;28867:40;;28893:14;:12;:14::i;:::-;-1:-1:-1;;;;;28932:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;28956:22:0;;;;;;:11;:22;;;;;;;;28955:23;28932:46;28928:467;;;28995:48;29017:6;29025:9;29036:6;28995:21;:48::i;:::-;28928:467;;;-1:-1:-1;;;;;29066:19:0;;;;;;:11;:19;;;;;;;;29065:20;:46;;;;-1:-1:-1;;;;;;29089:22:0;;;;;;:11;:22;;;;;;;;29065:46;29061:334;;;29128:46;29148:6;29156:9;29167:6;29128:19;:46::i;29061:334::-;-1:-1:-1;;;;;29196:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;29219:22:0;;;;;;:11;:22;;;;;;;;29196:45;29192:203;;;29258:48;29280:6;29288:9;29299:6;29258:21;:48::i;29192:203::-;29339:44;29357:6;29365:9;29376:6;29339:17;:44::i;:::-;29419:7;29415:41;;29441:15;34919;;34909:7;:25;34961:21;;34945:13;:37;34865:125;29441:15;28760:704;;;;:::o;33319:561::-;33416:7;;33452;;33369;;;;;33476:289;33500:9;:16;33496:20;;33476:289;;;33566:7;33542;:21;33550:9;33560:1;33550:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;33550:12:0;33542:21;;;;;;;;;;;;;:31;;:66;;;33601:7;33577;:21;33585:9;33595:1;33585:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;33585:12:0;33577:21;;;;;;;;;;;;;:31;33542:66;33538:97;;;33618:7;;33627;;33610:25;;;;;;;33319:561;;:::o;33538:97::-;33660:34;33672:7;:21;33680:9;33690:1;33680:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;33680:12:0;33672:21;;;;;;;;;;;;;33660:7;;:11;:34::i;:::-;33650:44;;33719:34;33731:7;:21;33739:9;33749:1;33739:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;33739:12:0;33731:21;;;;;;;;;;;;;33719:7;;:11;:34::i;:::-;33709:44;-1:-1:-1;33518:3:0;;;;:::i;:::-;;;;33476:289;;;-1:-1:-1;33801:7:0;;33789;;:20;;:11;:20::i;:::-;33779:7;:30;33775:61;;;33819:7;;33828;;33811:25;;;;;;33319:561;;:::o;33775:61::-;33855:7;;33864;;-1:-1:-1;33319:561:0;-1:-1:-1;33319:561:0:o;2298:278::-;2384:7;2419:12;2412:5;2404:28;;;;-1:-1:-1;;;2404:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2443:9:0;2455:5;2459:1;2455;:5;:::i;32373:330::-;32433:7;32442;32451;32471:12;32486:24;32502:7;32486:15;:24::i;:::-;32471:39;;32521:18;32542:30;32564:7;32542:21;:30::i;:::-;32521:51;-1:-1:-1;32583:23:0;32609:33;32521:51;32609:17;:7;32621:4;32609:11;:17::i;:::-;:21;;:33::i;:::-;32583:59;32678:4;;-1:-1:-1;32684:10:0;;-1:-1:-1;32373:330:0;;-1:-1:-1;;;32373:330:0:o;32711:429::-;32826:7;;;;32882:24;:7;32894:11;32882;:24::i;:::-;32864:42;-1:-1:-1;32917:12:0;32932:21;:4;32941:11;32932:8;:21::i;:::-;32917:36;-1:-1:-1;32964:18:0;32985:27;:10;33000:11;32985:14;:27::i;:::-;32964:48;-1:-1:-1;33023:23:0;33049:33;32964:48;33049:17;:7;33061:4;33049:11;:17::i;:33::-;33101:7;;;;-1:-1:-1;33127:4:0;;-1:-1:-1;32711:429:0;;-1:-1:-1;;;;;;;32711:429:0:o;26331:666::-;26481:16;;;26495:1;26481:16;;;;;;;;26457:21;;26481:16;;;;;;;;;;-1:-1:-1;26481:16:0;26457:40;;26526:4;26508;26513:1;26508:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;26508:23:0;;;-1:-1:-1;;;;;26508:23:0;;;;;26552:15;-1:-1:-1;;;;;26552:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26542:4;26547:1;26542:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;26542:32:0;;;-1:-1:-1;;;;;26542:32:0;;;;;26587:62;26604:4;26619:15;26637:11;26587:8;:62::i;:::-;26688:240;;-1:-1:-1;;;26688:240:0;;-1:-1:-1;;;;;26688:15:0;:66;;;;:240;;26769:11;;26795:1;;26839:4;;26866;;26902:15;;26688:240;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26954:35;26971:11;26984:4;26954:35;;;;;;;:::i;:::-;;;;;;;;26386:611;26331:666;:::o;28239:513::-;28387:62;28404:4;28419:15;28437:11;28387:8;:62::i;:::-;28492:15;-1:-1:-1;;;;;28492:31:0;;28531:9;28564:4;28584:11;28610:1;28653;28696:7;6037;6064:6;-1:-1:-1;;;;;6064:6:0;;5999:79;28696:7;28492:252;;;;;;-1:-1:-1;;;;;;28492:252:0;;;-1:-1:-1;;;;;4052:15:1;;;28492:252:0;;;4034:34:1;4084:18;;;4077:34;;;;4127:18;;;4120:34;;;;4170:18;;;4163:34;4234:15;;;4213:19;;;4206:44;28718:15:0;4266:19:1;;;4259:35;3968:19;;28492:252:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;28239:513;;:::o;27005:632::-;27153:16;;;27167:1;27153:16;;;;;;;;27129:21;;27153:16;;;;;;;;;;-1:-1:-1;27153:16:0;27129:40;;27190:15;-1:-1:-1;;;;;27190:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27180:4;27185:1;27180:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;27180:32:0;;;-1:-1:-1;;;;;27180:32:0;;;;;27233:42;27223:4;27228:1;27223:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;27223:52:0;;;:7;;;;;;;;;:52;27483:16;;27321:248;;-1:-1:-1;;;27321:248:0;;:15;:66;;;;;27395:9;;27321:248;;27420:1;;27464:4;;27483:16;;;27543:15;;27321:248;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27595:34;27613:9;27624:4;27595:34;;;;;;;:::i;37099:126::-;37191:26;;-1:-1:-1;;;;;37191:18:0;;;:26;;;;;37210:6;;37191:26;;;;37210:6;37191:18;:26;;;;;;;;;;;;;;;;;;;;;37099:126;;:::o;27649:578::-;27794:16;;;27808:1;27794:16;;;;;;;;27770:21;;27794:16;;;;;;;;;;-1:-1:-1;27794:16:0;27770:40;;27831:15;-1:-1:-1;;;;;27831:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27821:4;27826:1;27821:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;27821:32:0;;;-1:-1:-1;;;;;27821:32:0;;;;;27882:4;27864;27869:1;27864:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;27864:23:0;;;:7;;;;;;;;;:23;27924:15;:66;;27998:6;28020:1;28067:4;28086:11;28128:24;:15;28148:3;28128:19;:24::i;:::-;27924:239;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28189:30;28206:6;28214:4;28189:30;;;;;;;:::i;34603:250::-;34649:7;;:12;:34;;;;-1:-1:-1;34665:13:0;;:18;34649:34;34646:46;;;34603:250::o;34646:46::-;34730:7;;;34712:15;:25;34772:13;;;34748:21;:37;-1:-1:-1;34806:11:0;;;;34828:17;34603:250::o;30573:563::-;30676:15;30693:23;30718:12;30732:23;30757:12;30771:18;30793:19;30804:7;30793:10;:19::i;:::-;-1:-1:-1;;;;;30838:15:0;;;;;;:7;:15;;;;;;30675:137;;-1:-1:-1;30675:137:0;;-1:-1:-1;30675:137:0;;-1:-1:-1;30675:137:0;-1:-1:-1;30675:137:0;-1:-1:-1;30675:137:0;-1:-1:-1;30838:28:0;;30858:7;30838:19;:28::i;:::-;-1:-1:-1;;;;;30820:15:0;;;;;;:7;:15;;;;;;;;:46;;;;30895:7;:15;;;;:28;;30915:7;30895:19;:28::i;:::-;-1:-1:-1;;;;;30877:15:0;;;;;;;:7;:15;;;;;;:46;;;;30955:18;;;;;;;:39;;30978:15;30955:22;:39::i;:::-;-1:-1:-1;;;;;30934:18:0;;;;;;:7;:18;;;;;:60;31008:26;31023:10;31008:14;:26::i;:::-;31045:23;31057:4;31063;31045:11;:23::i;:::-;31101:9;-1:-1:-1;;;;;31084:44:0;31093:6;-1:-1:-1;;;;;31084:44:0;;31112:15;31084:44;;;;12785:25:1;;12773:2;12758:18;;12740:76;31084:44:0;;;;;;;;30664:472;;;;;;30573:563;;;:::o;29982:583::-;30083:15;30100:23;30125:12;30139:23;30164:12;30178:18;30200:19;30211:7;30200:10;:19::i;:::-;-1:-1:-1;;;;;30245:15:0;;;;;;:7;:15;;;;;;30082:137;;-1:-1:-1;30082:137:0;;-1:-1:-1;30082:137:0;;-1:-1:-1;30082:137:0;-1:-1:-1;30082:137:0;-1:-1:-1;30082:137:0;-1:-1:-1;30245:28:0;;30082:137;30245:19;:28::i;:::-;-1:-1:-1;;;;;30227:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;30305:18;;;;;:7;:18;;;;;:39;;30328:15;30305:22;:39::i;:::-;-1:-1:-1;;;;;30284:18:0;;;;;;:7;:18;;;;;;;;:60;;;;30376:7;:18;;;;:39;;30399:15;30376:22;:39::i;31144:639::-;31247:15;31264:23;31289:12;31303:23;31328:12;31342:18;31364:19;31375:7;31364:10;:19::i;:::-;-1:-1:-1;;;;;31409:15:0;;;;;;:7;:15;;;;;;31246:137;;-1:-1:-1;31246:137:0;;-1:-1:-1;31246:137:0;;-1:-1:-1;31246:137:0;-1:-1:-1;31246:137:0;-1:-1:-1;31246:137:0;-1:-1:-1;31409:28:0;;31429:7;31409:19;:28::i;:::-;-1:-1:-1;;;;;31391:15:0;;;;;;:7;:15;;;;;;;;:46;;;;31466:7;:15;;;;:28;;31486:7;31466:19;:28::i;29472:502::-;29571:15;29588:23;29613:12;29627:23;29652:12;29666:18;29688:19;29699:7;29688:10;:19::i;:::-;-1:-1:-1;;;;;29736:15:0;;;;;;:7;:15;;;;;;29570:137;;-1:-1:-1;29570:137:0;;-1:-1:-1;29570:137:0;;-1:-1:-1;29570:137:0;-1:-1:-1;29570:137:0;-1:-1:-1;29570:137:0;-1:-1:-1;29736:28:0;;29570:137;29736:19;:28::i;34259:154::-;34323:7;34350:55;34389:5;34350:20;34362:7;;34350;:11;;:20;;;;:::i;:::-;:24;;:55::i;34425:166::-;34495:7;34522:61;34567:5;34522:26;34534:13;;34522:7;:11;;:26;;;;:::i;1898:250::-;1956:7;1980:6;1976:47;;-1:-1:-1;2010:1:0;2003:8;;1976:47;2035:9;2047:5;2051:1;2047;:5;:::i;:::-;2035:17;-1:-1:-1;2080:1:0;2071:5;2075:1;2035:17;2071:5;:::i;:::-;:10;2063:56;;;;-1:-1:-1;;;2063:56:0;;9680:2:1;2063:56:0;;;9662:21:1;9719:2;9699:18;;;9692:30;9758:34;9738:18;;;9731:62;-1:-1:-1;;;9809:18:1;;;9802:31;9850:19;;2063:56:0;9652:223:1;33892:355:0;33955:19;33978:10;:8;:10::i;:::-;33955:33;-1:-1:-1;33999:18:0;34020:27;:10;33955:33;34020:14;:27::i;:::-;34099:4;34083:22;;;;:7;:22;;;;;;33999:48;;-1:-1:-1;34083:38:0;;33999:48;34083:26;:38::i;:::-;34074:4;34058:22;;;;:7;:22;;;;;;;;:63;;;;34135:11;:26;;;;;;34132:107;;;34217:4;34201:22;;;;:7;:22;;;;;;:38;;34228:10;34201:26;:38::i;:::-;34192:4;34176:22;;;;:7;:22;;;;;:63;33944:303;;33892:355;:::o;31791:147::-;31869:7;;:17;;31881:4;31869:11;:17::i;:::-;31859:7;:27;31910:10;;:20;;31925:4;31910:14;:20::i;:::-;31897:10;:33;-1:-1:-1;;31791:147:0:o;14:160:1:-;79:20;;135:13;;128:21;118:32;;108:2;;164:1;161;154:12;108:2;60:114;;;:::o;179:247::-;238:6;291:2;279:9;270:7;266:23;262:32;259:2;;;307:1;304;297:12;259:2;346:9;333:23;365:31;390:5;365:31;:::i;431:251::-;501:6;554:2;542:9;533:7;529:23;525:32;522:2;;;570:1;567;560:12;522:2;602:9;596:16;621:31;646:5;621:31;:::i;687:388::-;755:6;763;816:2;804:9;795:7;791:23;787:32;784:2;;;832:1;829;822:12;784:2;871:9;858:23;890:31;915:5;890:31;:::i;:::-;940:5;-1:-1:-1;997:2:1;982:18;;969:32;1010:33;969:32;1010:33;:::i;:::-;1062:7;1052:17;;;774:301;;;;;:::o;1080:456::-;1157:6;1165;1173;1226:2;1214:9;1205:7;1201:23;1197:32;1194:2;;;1242:1;1239;1232:12;1194:2;1281:9;1268:23;1300:31;1325:5;1300:31;:::i;:::-;1350:5;-1:-1:-1;1407:2:1;1392:18;;1379:32;1420:33;1379:32;1420:33;:::i;:::-;1184:352;;1472:7;;-1:-1:-1;;;1526:2:1;1511:18;;;;1498:32;;1184:352::o;1541:315::-;1609:6;1617;1670:2;1658:9;1649:7;1645:23;1641:32;1638:2;;;1686:1;1683;1676:12;1638:2;1725:9;1712:23;1744:31;1769:5;1744:31;:::i;:::-;1794:5;1846:2;1831:18;;;;1818:32;;-1:-1:-1;;;1628:228:1:o;1861:180::-;1917:6;1970:2;1958:9;1949:7;1945:23;1941:32;1938:2;;;1986:1;1983;1976:12;1938:2;2009:26;2025:9;2009:26;:::i;2046:180::-;2105:6;2158:2;2146:9;2137:7;2133:23;2129:32;2126:2;;;2174:1;2171;2164:12;2126:2;-1:-1:-1;2197:23:1;;2116:110;-1:-1:-1;2116:110:1:o;2231:248::-;2296:6;2304;2357:2;2345:9;2336:7;2332:23;2328:32;2325:2;;;2373:1;2370;2363:12;2325:2;2409:9;2396:23;2386:33;;2438:35;2469:2;2458:9;2454:18;2438:35;:::i;:::-;2428:45;;2315:164;;;;;:::o;2484:306::-;2572:6;2580;2588;2641:2;2629:9;2620:7;2616:23;2612:32;2609:2;;;2657:1;2654;2647:12;2609:2;2686:9;2680:16;2670:26;;2736:2;2725:9;2721:18;2715:25;2705:35;;2780:2;2769:9;2765:18;2759:25;2749:35;;2599:191;;;;;:::o;2795:461::-;2848:3;2886:5;2880:12;2913:6;2908:3;2901:19;2939:4;2968:2;2963:3;2959:12;2952:19;;3005:2;2998:5;2994:14;3026:1;3036:195;3050:6;3047:1;3044:13;3036:195;;;3115:13;;-1:-1:-1;;;;;3111:39:1;3099:52;;3171:12;;;;3206:15;;;;3147:1;3065:9;3036:195;;;-1:-1:-1;3247:3:1;;2856:400;-1:-1:-1;;;;;2856:400:1:o;4732:518::-;5011:6;5000:9;4993:25;5054:3;5049:2;5038:9;5034:18;5027:31;4974:4;5075:57;5127:3;5116:9;5112:19;5104:6;5075:57;:::i;:::-;-1:-1:-1;;;;;5168:32:1;;;;5163:2;5148:18;;5141:60;-1:-1:-1;5232:2:1;5217:18;5210:34;5067:65;4983:267;-1:-1:-1;;4983:267:1:o;5770:597::-;5882:4;5911:2;5940;5929:9;5922:21;5972:6;5966:13;6015:6;6010:2;5999:9;5995:18;5988:34;6040:1;6050:140;6064:6;6061:1;6058:13;6050:140;;;6159:14;;;6155:23;;6149:30;6125:17;;;6144:2;6121:26;6114:66;6079:10;;6050:140;;;6208:6;6205:1;6202:13;6199:2;;;6278:1;6273:2;6264:6;6253:9;6249:22;6245:31;6238:42;6199:2;-1:-1:-1;6351:2:1;6330:15;-1:-1:-1;;6326:29:1;6311:45;;;;6358:2;6307:54;;5891:476;-1:-1:-1;;;5891:476:1:o;9880:356::-;10082:2;10064:21;;;10101:18;;;10094:30;10160:34;10155:2;10140:18;;10133:62;10227:2;10212:18;;10054:182::o;12821:332::-;13028:6;13017:9;13010:25;13071:2;13066;13055:9;13051:18;13044:30;12991:4;13091:56;13143:2;13132:9;13128:18;13120:6;13091:56;:::i;:::-;13083:64;13000:153;-1:-1:-1;;;;13000:153:1:o;13158:582::-;13457:6;13446:9;13439:25;13500:6;13495:2;13484:9;13480:18;13473:34;13543:3;13538:2;13527:9;13523:18;13516:31;13420:4;13564:57;13616:3;13605:9;13601:19;13593:6;13564:57;:::i;:::-;-1:-1:-1;;;;;13657:32:1;;;;13652:2;13637:18;;13630:60;-1:-1:-1;13721:3:1;13706:19;13699:35;13556:65;13429:311;-1:-1:-1;;;13429:311:1:o;14258:128::-;14298:3;14329:1;14325:6;14322:1;14319:13;14316:2;;;14335:18;;:::i;:::-;-1:-1:-1;14371:9:1;;14306:80::o;14391:217::-;14431:1;14457;14447:2;;14501:10;14496:3;14492:20;14489:1;14482:31;14536:4;14533:1;14526:15;14564:4;14561:1;14554:15;14447:2;-1:-1:-1;14593:9:1;;14437:171::o;14613:168::-;14653:7;14719:1;14715;14711:6;14707:14;14704:1;14701:21;14696:1;14689:9;14682:17;14678:45;14675:2;;;14726:18;;:::i;:::-;-1:-1:-1;14766:9:1;;14665:116::o;14786:125::-;14826:4;14854:1;14851;14848:8;14845:2;;;14859:18;;:::i;:::-;-1:-1:-1;14896:9:1;;14835:76::o;14916:380::-;14995:1;14991:12;;;;15038;;;15059:2;;15113:4;15105:6;15101:17;15091:27;;15059:2;15166;15158:6;15155:14;15135:18;15132:38;15129:2;;;15212:10;15207:3;15203:20;15200:1;15193:31;15247:4;15244:1;15237:15;15275:4;15272:1;15265:15;15129:2;;14971:325;;;:::o;15301:135::-;15340:3;-1:-1:-1;;15361:17:1;;15358:2;;;15381:18;;:::i;:::-;-1:-1:-1;15428:1:1;15417:13;;15348:88::o;15441:127::-;15502:10;15497:3;15493:20;15490:1;15483:31;15533:4;15530:1;15523:15;15557:4;15554:1;15547:15;15573:127;15634:10;15629:3;15625:20;15622:1;15615:31;15665:4;15662:1;15655:15;15689:4;15686:1;15679:15;15705:127;15766:10;15761:3;15757:20;15754:1;15747:31;15797:4;15794:1;15787:15;15821:4;15818:1;15811:15;15969:131;-1:-1:-1;;;;;16044:31:1;;16034:42;;16024:2;;16090:1;16087;16080:12;16024:2;16014:86;:::o
Swarm Source
ipfs://6d8dd00329d000612e61d0420b497225fb5ffb2760b4c3667624b95d2bad1f47
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.