Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
100,000,000,000,000 IZA
Holders
8
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
971,402,734,101.848952298 IZAValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
IZA
Compiler Version
v0.8.14+commit.80d49f37
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-06-16 */ // SPDX-License-Identifier: NOLICENSE pragma solidity ^0.8.0; 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 tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } library Address { function isContract(address account) internal view returns (bool) { uint256 size; assembly { size := extcodesize(account) } return size > 0; } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (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"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return _verifyCallResult(success, returndata, errorMessage); } function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return _verifyCallResult(success, returndata, errorMessage); } function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return _verifyCallResult(success, returndata, errorMessage); } function _verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) private pure returns (bytes memory) { if (success) { return returndata; } else { if (returndata.length > 0) { assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { _setOwner(_msgSender()); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { _setOwner(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } interface IFactory{ function createPair(address tokenA, address tokenB) external returns (address pair); function getPair(address tokenA, address tokenB) external view returns (address pair); } interface IRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); 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; } //"ETH" symb is used for better uniswap-core integration //uniswap is use due to their better repo management contract IZA is Context, IERC20, Ownable { using SafeMath for uint256; using Address for address; 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; mapping (address => bool) private _isBot; address[] private _excluded; bool public tradingEnabled; bool public swapEnabled; bool public buyBackEnabled = false; bool private swapping; IRouter public router; address public pair; uint8 private constant _decimals = 9; uint256 private constant MAX = ~uint256(0); uint256 private _tTotal = 100000000000000 * 10**_decimals; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 public maxBuyAmount = _tTotal.mul(3).div(100); uint256 public maxSellAmount = _tTotal.mul(3).div(100); uint256 public swapTokensAtAmount = 50000000000 * 10**_decimals; uint256 public _maxWalletSize = 3000000000000 * 10**9; uint256 public buyBackUpperLimit = 1 * 10**18; // Native Tokens address public burnAddress = 0x000000000000000000000000000000000000dEaD; //BNB address public marketingAddress = 0x748ab112d5D74c77DDbA81eb1Bc97795BF938491; address public constant deadAddress = 0x000000000000000000000000000000000000dEaD; string private constant _name = "Izanami Inu"; string private constant _symbol = "IZA"; struct feeRatesStruct { uint256 rfi; uint256 marketing; uint256 burn; uint256 liquidity; uint256 buyback; } feeRatesStruct public feeRates = feeRatesStruct( {rfi: 0, marketing: 50, burn: 0, liquidity: 30, buyback: 0 }); feeRatesStruct public sellFeeRates = feeRatesStruct( {rfi: 0, marketing: 50, burn: 0, liquidity: 30, buyback: 0 }); struct TotFeesPaidStruct{ uint256 rfi; uint256 marketing; uint256 burn; uint256 liquidity; uint256 buyBack; } TotFeesPaidStruct public totFeesPaid; struct valuesFromGetValues{ uint256 rAmount; uint256 rTransferAmount; uint256 rRfi; uint256 rmarketing; uint256 rburn; uint256 rLiquidity; uint256 rBuyback; uint256 tTransferAmount; uint256 tRfi; uint256 tmarketing; uint256 tburn; uint256 tLiquidity; uint256 tBuyback; } event FeesChanged(); event TradingEnabled(uint256 startDate); event UpdatedRouter(address oldRouter, address newRouter); modifier lockTheSwap { swapping = true; _; swapping = false; } constructor (address routerAddress) { IRouter _router = IRouter(routerAddress); address _pair = IFactory(_router.factory()) .createPair(address(this), _router.WETH()); router = _router; pair = _pair; _rOwned[owner()] = _rTotal; _isExcludedFromFee[owner()] = true; _isExcludedFromFee[burnAddress]=true; _isExcludedFromFee[marketingAddress] = true; emit Transfer(address(0), owner(), _tTotal); } //std ERC20: function name() public pure returns (string memory) { return _name; } function symbol() public pure returns (string memory) { return _symbol; } function decimals() public pure returns (uint8) { return _decimals; } //override ERC20: 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]+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 deliver(uint256 tAmount) public { address sender = _msgSender(); require(!_isExcluded[sender], "Excluded addresses cannot call this function"); valuesFromGetValues memory s = _getValues(tAmount, true, false); _rOwned[sender] = _rOwned[sender].sub(s.rAmount); _rTotal = _rTotal.sub(s.rAmount); totFeesPaid.rfi += tAmount; } function reflectionFromToken(uint256 tAmount, bool deductTransferRfi) public view returns(uint256) { require(tAmount <= _tTotal, "Amount must be less than supply"); if (!deductTransferRfi) { valuesFromGetValues memory s = _getValues(tAmount, true, false); return s.rAmount; } else { valuesFromGetValues memory s = _getValues(tAmount, true, false); return s.rTransferAmount; } } function startTrading() external onlyOwner{ tradingEnabled = true; swapEnabled = true; emit TradingEnabled(block.timestamp); } function tokenFromReflection(uint256 rAmount) public view returns(uint256) { require(rAmount <= _rTotal, "Amount must be less than total reflections"); uint256 currentRate = _getRate(); return rAmount/currentRate; } //@dev kept original RFI naming -> "reward" as in reflection 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 not 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 excludeFromFee(address account) public onlyOwner { _isExcludedFromFee[account] = true; } function includeInFee(address account) public onlyOwner { _isExcludedFromFee[account] = false; } function isExcludedFromFee(address account) public view returns(bool) { return _isExcludedFromFee[account]; } function setMaxWalletPercent(uint256 maxWallPercent) external onlyOwner() { _maxWalletSize = _tTotal.mul(maxWallPercent).div( 10**2 ); } function setFeeRates(uint256 _rfi, uint256 _marketing, uint256 _burn, uint256 _liquidity, uint256 _buyback) external onlyOwner { feeRates.rfi = _rfi; feeRates.marketing = _marketing; feeRates.burn = _burn; feeRates.liquidity = _liquidity; feeRates.buyback = _buyback; emit FeesChanged(); } function setSellFeeRates(uint256 _rfi, uint256 _marketing, uint256 _burn,uint256 _liquidity, uint256 _buyback) external onlyOwner{ sellFeeRates.rfi = _rfi; sellFeeRates.marketing = _marketing; sellFeeRates.burn = _burn; sellFeeRates.liquidity = _liquidity; sellFeeRates.buyback = _buyback; emit FeesChanged(); } function _reflectRfi(uint256 rRfi, uint256 tRfi) private { _rTotal -=rRfi; totFeesPaid.rfi +=tRfi; } function _takemarketing(uint256 rmarketing, uint256 tmarketing) private { totFeesPaid.marketing +=tmarketing; if(_isExcluded[address(this)]){ _tOwned[address(this)]+=tmarketing; } _rOwned[address(this)] +=rmarketing; } function _takeBuyback(uint256 rBuyback, uint256 tBuyback) private { totFeesPaid.buyBack +=tBuyback; if(_isExcluded[address(this)]) { _tOwned[address(this)]+=tBuyback; } _rOwned[address(this)] +=rBuyback; } function _takeLiquidity(uint256 rLiquidity, uint256 tLiquidity) private { totFeesPaid.liquidity +=tLiquidity; if(_isExcluded[address(this)]) { _tOwned[address(this)]+=tLiquidity; } _rOwned[address(this)] +=rLiquidity; } function _takeburn(uint256 rburn, uint256 tburn) private { totFeesPaid.burn +=tburn; if(_isExcluded[burnAddress]) { _tOwned[burnAddress]+=tburn; } _rOwned[burnAddress] +=rburn; } function _getValues(uint256 tAmount, bool takeFee, bool isSale) private view returns (valuesFromGetValues memory to_return) { to_return = _getTValues(tAmount, takeFee, isSale); (to_return.rAmount, to_return.rTransferAmount, to_return.rRfi,to_return.rmarketing ,to_return.rburn, to_return.rLiquidity, to_return.rBuyback) = _getRValues(to_return, tAmount, takeFee, _getRate()); return to_return; } function _getTValues(uint256 tAmount, bool takeFee, bool isSale) private view returns (valuesFromGetValues memory s) { if(!takeFee) { s.tTransferAmount = tAmount; return s; } if(isSale){ s.tRfi = tAmount*sellFeeRates.rfi/1000; s.tmarketing = tAmount*sellFeeRates.marketing/1000; s.tburn = tAmount*sellFeeRates.burn/1000; s.tLiquidity = tAmount*sellFeeRates.liquidity/1000; s.tBuyback = tAmount*sellFeeRates.buyback/1000; s.tTransferAmount = tAmount-s.tRfi-s.tmarketing-s.tburn-s.tLiquidity-s.tBuyback; } else{ s.tRfi = tAmount*feeRates.rfi/1000; s.tmarketing = tAmount*feeRates.marketing/1000; s.tburn = tAmount*feeRates.burn/1000; s.tLiquidity = tAmount*feeRates.liquidity/1000; s.tBuyback = tAmount*feeRates.buyback/1000; s.tTransferAmount = tAmount-s.tRfi-s.tmarketing-s.tburn-s.tLiquidity-s.tBuyback; } return s; } function _getRValues(valuesFromGetValues memory s, uint256 tAmount, bool takeFee, uint256 currentRate) private pure returns (uint256 rAmount, uint256 rTransferAmount, uint256 rRfi, uint256 rmarketing,uint256 rburn, uint256 rLiquidity, uint256 rBuyback) { rAmount = tAmount*currentRate; if(!takeFee) { return(rAmount, rAmount, 0,0,0,0,0); } rRfi = s.tRfi*currentRate; rmarketing = s.tmarketing*currentRate; rburn = s.tburn*currentRate; rLiquidity = s.tLiquidity*currentRate; rBuyback = s.tBuyback*currentRate; rTransferAmount = rAmount-rRfi-rmarketing-rburn-rLiquidity-rBuyback; return (rAmount, rTransferAmount, rRfi,rmarketing,rburn, rLiquidity, rBuyback); } function _getRate() private view returns(uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply/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-_rOwned[_excluded[i]]; tSupply = tSupply-_tOwned[_excluded[i]]; } if (rSupply < _rTotal/_tTotal) return (_rTotal, _tTotal); return (rSupply, tSupply); } 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"); require(amount <= balanceOf(from),"You are trying to transfer more than your balance"); require(!_isBot[from] && !_isBot[to], "Fuck you Bots"); if(!_isExcludedFromFee[from] && !_isExcludedFromFee[to]){ require(tradingEnabled, "Trading is not enabled yet"); } if( from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !_isExcludedFromFee[to] && !_isExcludedFromFee[from] && from == pair){ require(amount <= maxBuyAmount, "you are exceeding maxBuyAmount"); uint256 walletCurrentBalance = balanceOf(to); require(walletCurrentBalance + amount <= _maxWalletSize, "Exceeds maximum wallet token amount"); } if( from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !_isExcludedFromFee[to] && !_isExcludedFromFee[from] && from == pair){ require(amount <= maxSellAmount, "Amount is exceeding maxSellAmount"); } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if(!swapping && swapEnabled && canSwap && from != pair){ uint256 balance = address(this).balance; if (buyBackEnabled && balance > uint256(1 * 10**18) && to == pair) { if (balance > buyBackUpperLimit) balance = buyBackUpperLimit; buyBackTokens(balance.div(100)); } swapAndLiquify(swapTokensAtAmount); } bool isSale; if(to == pair) isSale = true; _tokenTransfer(from, to, amount, !(_isExcludedFromFee[from] || _isExcludedFromFee[to]), isSale); } //this method is responsible for taking all fee, if takeFee is true function _tokenTransfer(address sender, address recipient, uint256 tAmount, bool takeFee, bool isSale) private { valuesFromGetValues memory s = _getValues(tAmount, takeFee, isSale); if (_isExcluded[sender] ) { //from excluded _tOwned[sender] = _tOwned[sender]-tAmount; } if (_isExcluded[recipient]) { //to excluded _tOwned[recipient] = _tOwned[recipient]+s.tTransferAmount; } _rOwned[sender] = _rOwned[sender]-s.rAmount; _rOwned[recipient] = _rOwned[recipient]+s.rTransferAmount; _reflectRfi(s.rRfi, s.tRfi); _takemarketing(s.rmarketing,s.tmarketing); _takeLiquidity(s.rLiquidity,s.tLiquidity); _takeburn(s.rburn, s.tburn); _takeBuyback(s.rBuyback, s.tBuyback); emit Transfer(sender, recipient, s.tTransferAmount); emit Transfer(sender, address(this), s.tLiquidity + s.tmarketing + s.tBuyback ); emit Transfer(sender, burnAddress, s.tburn); } function buyBackTokens(uint256 amount) private lockTheSwap{ if (amount > 0) { swapETHForTokens(amount); } } function swapETHForTokens(uint256 amount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = router.WETH(); path[1] = address(this); // make the swap router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}( 0, // accept any amount of Tokens path, deadAddress, // Burn address block.timestamp.add(300) ); } function swapAndLiquify(uint256 tokens) private lockTheSwap{ // Split the contract balance into halves uint256 denominator= (feeRates.liquidity + feeRates.buyback + feeRates.marketing ) * 2; uint256 tokensToAddLiquidityWith = tokens * feeRates.liquidity / denominator; uint256 toSwap = tokens - tokensToAddLiquidityWith; uint256 initialBalance = address(this).balance; swapTokensForBNB(toSwap); uint256 deltaBalance = address(this).balance - initialBalance; uint256 unitBalance= deltaBalance / (denominator - feeRates.liquidity); uint256 bnbToAddLiquidityWith = unitBalance * feeRates.liquidity; if(bnbToAddLiquidityWith > 0){ // Add liquidity to pancake addLiquidity(tokensToAddLiquidityWith, bnbToAddLiquidityWith); } // Send BNB to marketingWallet uint256 marketingAmt = unitBalance * 2 * feeRates.marketing; if(marketingAmt > 0){ payable(marketingAddress).transfer(marketingAmt); } } function addLiquidity(uint256 tokenAmount, uint256 bnbAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(router), tokenAmount); // add the liquidity router.addLiquidityETH{value: bnbAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable owner(), block.timestamp ); } function swapTokensForBNB(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = router.WETH(); _approve(address(this), address(router), tokenAmount); // make the swap router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function updateburnWallet(address newWallet) external onlyOwner{ require(burnAddress != newWallet ,'Wallet already set'); burnAddress = newWallet; _isExcludedFromFee[burnAddress]; } function updatemarketingWallet(address newWallet) external onlyOwner{ require(marketingAddress != newWallet ,'Wallet already set'); marketingAddress = newWallet; _isExcludedFromFee[marketingAddress]; } function setMaxBuyAndSellAmount(uint256 _maxBuyamount, uint256 _maxSellAmount) external onlyOwner{ maxBuyAmount = _maxBuyamount * 10**9; maxSellAmount = _maxSellAmount * 10**9; } function updateSwapTokensAtAmount(uint256 amount) external onlyOwner{ swapTokensAtAmount = amount * 10**_decimals; } function updateSwapEnabled(bool _enabled) external onlyOwner{ swapEnabled = _enabled; } function updateBuybackEnabled(bool _enabled) external onlyOwner{ buyBackEnabled = _enabled; } function setAntibot(address account, bool _bot) external onlyOwner{ require(_isBot[account] != _bot, 'Value already set'); _isBot[account] = _bot; } function setBuybackUpperLimit(uint256 buyBackLimit) external onlyOwner() { buyBackUpperLimit = buyBackLimit * 10**15; } function isBot(address account) public view returns(bool){ return _isBot[account]; } //Use this in case BNB are sent to the contract by mistake function rescueBNB(uint256 weiAmount) external onlyOwner{ require(address(this).balance >= weiAmount, "insufficient BNB balance"); payable(msg.sender).transfer(weiAmount); } function rescueBEP20Tokens(address tokenAddress) external onlyOwner{ IERC20(tokenAddress).transfer(msg.sender, IERC20(tokenAddress).balanceOf(address(this))); } function setRouterAddress(address newRouter) external onlyOwner { require(newRouter != address(router)); IRouter _newRouter = IRouter(newRouter); address get_pair = IFactory(_newRouter.factory()).getPair(address(this), _newRouter.WETH()); if (get_pair == address(0)) { pair = IFactory(_newRouter.factory()).createPair(address(this), _newRouter.WETH()); } else { pair = get_pair; } router = _newRouter; } receive() external payable{ } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"routerAddress","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":[],"name":"FeesChanged","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":"startDate","type":"uint256"}],"name":"TradingEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldRouter","type":"address"},{"indexed":false,"internalType":"address","name":"newRouter","type":"address"}],"name":"UpdatedRouter","type":"event"},{"inputs":[],"name":"_maxWalletSize","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":"burnAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyBackEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyBackUpperLimit","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":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeRates","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"buyback","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":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferRfi","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"}],"name":"rescueBEP20Tokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"rescueBNB","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellFeeRates","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"buyback","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"_bot","type":"bool"}],"name":"setAntibot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyBackLimit","type":"uint256"}],"name":"setBuybackUpperLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rfi","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_burn","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_buyback","type":"uint256"}],"name":"setFeeRates","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxBuyamount","type":"uint256"},{"internalType":"uint256","name":"_maxSellAmount","type":"uint256"}],"name":"setMaxBuyAndSellAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent","type":"uint256"}],"name":"setMaxWalletPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setRouterAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rfi","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_burn","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_buyback","type":"uint256"}],"name":"setSellFeeRates","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totFeesPaid","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"buyBack","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"updateBuybackEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateburnWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updatemarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526008805462ff0000191690556200001e6009600a620005fb565b6200003090655af3107a40006200060c565b600a819055620000439060001962000644565b62000051906000196200065b565b600b556200008b6064620000776003600a546200047360201b62001cf31790919060201c565b6200048a60201b62001cff1790919060201c565b600c55620000b16064620000776003600a546200047360201b62001cf31790919060201c565b600d55620000c26009600a620005fb565b620000d390640ba43b74006200060c565b600e5568a2a15d09519be00000600f55670de0b6b3a7640000601055601180546001600160a01b031990811661dead179091556012805490911673748ab112d5d74c77ddba81eb1bc97795bf9384911790556040805160a08082018352600080835260326020808501829052848601839052601e6060808701829052608096870185905260138590556014849055601585905560168290556017859055875195860188528486529185018390529584018390528301859052919092018290526018829055601955601a819055601b91909155601c55348015620001b557600080fd5b506040516200409d3803806200409d833981016040819052620001d89162000675565b620001e33362000498565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000229573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200024f919062000675565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200029d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002c3919062000675565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000311573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000337919062000675565b60088054600160201b600160c01b0319166401000000006001600160a01b038681169190910291909117909155600980546001600160a01b031916838316179055600b54600080549092168252600160208190526040832091909155919250600490620003ac6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790556011548216815260049093528183208054851660019081179091556012549091168352912080549092161790556200041a6000546001600160a01b031690565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600a546040516200046291815260200190565b60405180910390a3505050620006be565b60006200048182846200060c565b90505b92915050565b6000620004818284620006a7565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200053f578160001904821115620005235762000523620004e8565b808516156200053157918102915b93841c939080029062000503565b509250929050565b600082620005585750600162000484565b81620005675750600062000484565b81600181146200058057600281146200058b57620005ab565b600191505062000484565b60ff8411156200059f576200059f620004e8565b50506001821b62000484565b5060208310610133831016604e8410600b8410161715620005d0575081810a62000484565b620005dc8383620004fe565b8060001904821115620005f357620005f3620004e8565b029392505050565b60006200048160ff84168362000547565b6000816000190483118215151615620006295762000629620004e8565b500290565b634e487b7160e01b600052601260045260246000fd5b6000826200065657620006566200062e565b500690565b600082821015620006705762000670620004e8565b500390565b6000602082840312156200068857600080fd5b81516001600160a01b0381168114620006a057600080fd5b9392505050565b600082620006b957620006b96200062e565b500490565b6139cf80620006ce6000396000f3fe6080604052600436106103545760003560e01c806370d5ae05116101c6578063a5ece941116100f7578063dd62ed3e11610095578063ea2f0b371161006f578063ea2f0b3714610a6a578063f2fde38b14610a8a578063f887ea4014610aaa578063f9e0896914610ad157600080fd5b8063dd62ed3e146109ee578063e116554514610a34578063e2f4560514610a5457600080fd5b8063abeef102116100d1578063abeef1021461096e578063bff781691461098e578063cdebfea3146109ae578063d257b34f146109ce57600080fd5b8063a5ece9411461090e578063a8aa1b311461092e578063a9059cbb1461094e57600080fd5b806388f8202011610164578063924de9b71161013e578063924de9b71461087b57806395d89b411461089b5780639ba5e4d5146108c7578063a457c2d7146108ee57600080fd5b806388f820201461080e5780638da5cb5b146108475780638f9a55c01461086557600080fd5b80637688c584116101a05780637688c5841461079157806382bf293c146107b857806382d2a4bb146107d857806388e765ff146107f857600080fd5b806370d5ae051461074657806370e5024114610766578063715018a61461077c57600080fd5b80633bbac579116102a057806352390c021161023e57806366d602ae1161021857806366d602ae146106d157806368ca6145146106e75780636ddd17131461070757806370a082311461072657600080fd5b806352390c02146106585780635342acb4146106785780636053a0e3146106b157600080fd5b8063437823ec1161027a578063437823ec146105de578063441b1d30146105fe5780634549b0391461061e5780634ada218b1461063e57600080fd5b80633bbac579146105655780633bd5d1731461059e57806341cb87fc146105be57600080fd5b806327c8f8351161030d578063313ce567116102e7578063313ce567146104e95780633685d4191461050557806339509351146105255780633a4559b01461054557600080fd5b806327c8f83514610486578063293230b8146104b45780632d838119146104c957600080fd5b8063042cfb511461036057806306fdde0314610382578063095ea7b3146103c857806318160ddd146103f857806318a90c441461041757806323b872dd1461046657600080fd5b3661035b57005b600080fd5b34801561036c57600080fd5b5061038061037b366004613417565b610af1565b005b34801561038e57600080fd5b5060408051808201909152600b81526a497a616e616d6920496e7560a81b60208201525b6040516103bf9190613434565b60405180910390f35b3480156103d457600080fd5b506103e86103e3366004613489565b610c09565b60405190151581526020016103bf565b34801561040457600080fd5b50600a545b6040519081526020016103bf565b34801561042357600080fd5b50601854601954601a54601b54601c5461043e949392919085565b604080519586526020860194909452928401919091526060830152608082015260a0016103bf565b34801561047257600080fd5b506103e86104813660046134b5565b610c20565b34801561049257600080fd5b5061049c61dead81565b6040516001600160a01b0390911681526020016103bf565b3480156104c057600080fd5b50610380610c8a565b3480156104d557600080fd5b506104096104e43660046134f6565b610cf8565b3480156104f557600080fd5b50604051600981526020016103bf565b34801561051157600080fd5b50610380610520366004613417565b610d75565b34801561053157600080fd5b506103e8610540366004613489565b610f27565b34801561055157600080fd5b50610380610560366004613417565b610f5e565b34801561057157600080fd5b506103e8610580366004613417565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156105aa57600080fd5b506103806105b93660046134f6565b611003565b3480156105ca57600080fd5b506103806105d9366004613417565b6110f8565b3480156105ea57600080fd5b506103806105f9366004613417565b611451565b34801561060a57600080fd5b506103806106193660046134f6565b61149f565b34801561062a57600080fd5b5061040961063936600461351d565b611546565b34801561064a57600080fd5b506008546103e89060ff1681565b34801561066457600080fd5b50610380610673366004613417565b6115d4565b34801561068457600080fd5b506103e8610693366004613417565b6001600160a01b031660009081526004602052604090205460ff1690565b3480156106bd57600080fd5b506008546103e89062010000900460ff1681565b3480156106dd57600080fd5b50610409600d5481565b3480156106f357600080fd5b5061038061070236600461354d565b611727565b34801561071357600080fd5b506008546103e890610100900460ff1681565b34801561073257600080fd5b50610409610741366004613417565b61179a565b34801561075257600080fd5b5060115461049c906001600160a01b031681565b34801561077257600080fd5b5061040960105481565b34801561078857600080fd5b506103806117f9565b34801561079d57600080fd5b5060135460145460155460165460175461043e949392919085565b3480156107c457600080fd5b506103806107d33660046134f6565b61182f565b3480156107e457600080fd5b506103806107f33660046134f6565b61187f565b34801561080457600080fd5b50610409600c5481565b34801561081a57600080fd5b506103e8610829366004613417565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561085357600080fd5b506000546001600160a01b031661049c565b34801561087157600080fd5b50610409600f5481565b34801561088757600080fd5b50610380610896366004613588565b6118c0565b3480156108a757600080fd5b50604080518082019091526003815262495a4160e81b60208201526103b2565b3480156108d357600080fd5b50601d54601e54601f5460205460215461043e949392919085565b3480156108fa57600080fd5b506103e8610909366004613489565b611904565b34801561091a57600080fd5b5060125461049c906001600160a01b031681565b34801561093a57600080fd5b5060095461049c906001600160a01b031681565b34801561095a57600080fd5b506103e8610969366004613489565b611953565b34801561097a57600080fd5b5061038061098936600461354d565b611960565b34801561099a57600080fd5b506103806109a9366004613417565b6119d3565b3480156109ba57600080fd5b506103806109c93660046135a5565b611a78565b3480156109da57600080fd5b506103806109e93660046134f6565b611ac8565b3480156109fa57600080fd5b50610409610a093660046135c7565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610a4057600080fd5b50610380610a4f3660046135f5565b611b0e565b348015610a6057600080fd5b50610409600e5481565b348015610a7657600080fd5b50610380610a85366004613417565b611bc7565b348015610a9657600080fd5b50610380610aa5366004613417565b611c12565b348015610ab657600080fd5b5060085461049c90600160201b90046001600160a01b031681565b348015610add57600080fd5b50610380610aec366004613588565b611cad565b6000546001600160a01b03163314610b245760405162461bcd60e51b8152600401610b1b90613623565b60405180910390fd5b6040516370a0823160e01b81523060048201526001600160a01b0382169063a9059cbb90339083906370a0823190602401602060405180830381865afa158015610b72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b969190613658565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015610be1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c059190613671565b5050565b6000610c16338484611d0b565b5060015b92915050565b6000610c2d848484611e2f565b610c7f8433610c7a8560405180606001604052806028815260200161394d602891396001600160a01b038a16600090815260036020908152604080832033845290915290205491906124c4565b611d0b565b5060015b9392505050565b6000546001600160a01b03163314610cb45760405162461bcd60e51b8152600401610b1b90613623565b6008805461ffff19166101011790556040514281527fb3da2db3dfc3778f99852546c6e9ab39ec253f9de7b0847afec61bd27878e9239060200160405180910390a1565b6000600b54821115610d5f5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610b1b565b6000610d696124f0565b9050610c8381846136a4565b6000546001600160a01b03163314610d9f5760405162461bcd60e51b8152600401610b1b90613623565b6001600160a01b03811660009081526005602052604090205460ff16610e075760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c756465640000000000000000006044820152606401610b1b565b60005b600754811015610c0557816001600160a01b031660078281548110610e3157610e316136c6565b6000918252602090912001546001600160a01b031603610f155760078054610e5b906001906136dc565b81548110610e6b57610e6b6136c6565b600091825260209091200154600780546001600160a01b039092169183908110610e9757610e976136c6565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600590925220805460ff191690556007805480610eef57610eef6136f3565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610f1f81613709565b915050610e0a565b3360008181526003602090815260408083206001600160a01b03871684529091528120549091610c16918590610c7a908690613722565b6000546001600160a01b03163314610f885760405162461bcd60e51b8152600401610b1b90613623565b6011546001600160a01b03808316911603610fda5760405162461bcd60e51b815260206004820152601260248201527115d85b1b195d08185b1c9958591e481cd95d60721b6044820152606401610b1b565b601180546001600160a01b039092166001600160a01b0319909216821790556000526004602052565b3360008181526005602052604090205460ff16156110785760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b6064820152608401610b1b565b60006110878360016000612513565b80516001600160a01b0384166000908152600160205260409020549192506110af9190612562565b6001600160a01b0383166000908152600160205260409020558051600b546110d691612562565b600b55601d80548491906000906110ee908490613722565b9091555050505050565b6000546001600160a01b031633146111225760405162461bcd60e51b8152600401610b1b90613623565b6008546001600160a01b03600160201b90910481169082160361114457600080fd5b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611189573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ad919061373a565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061121e919061373a565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611269573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061128d919061373a565b90506001600160a01b03811661140657816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ff919061373a565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561134c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611370919061373a565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156113bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e1919061373a565b600980546001600160a01b0319166001600160a01b0392909216919091179055611422565b600980546001600160a01b0319166001600160a01b0383161790555b50600880546001600160a01b03909216600160201b02640100000000600160c01b031990921691909117905550565b6000546001600160a01b0316331461147b5760405162461bcd60e51b8152600401610b1b90613623565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6000546001600160a01b031633146114c95760405162461bcd60e51b8152600401610b1b90613623565b804710156115195760405162461bcd60e51b815260206004820152601860248201527f696e73756666696369656e7420424e422062616c616e636500000000000000006044820152606401610b1b565b604051339082156108fc029083906000818181858888f19350505050158015610c05573d6000803e3d6000fd5b6000600a5483111561159a5760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610b1b565b816115b85760006115ae8460016000612513565b519150610c1a9050565b60006115c78460016000612513565b602001519150610c1a9050565b6000546001600160a01b031633146115fe5760405162461bcd60e51b8152600401610b1b90613623565b6001600160a01b03811660009081526005602052604090205460ff16156116675760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610b1b565b6001600160a01b038116600090815260016020526040902054156116c1576001600160a01b0381166000908152600160205260409020546116a790610cf8565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556007805491820181559091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880180546001600160a01b0319169091179055565b6000546001600160a01b031633146117515760405162461bcd60e51b8152600401610b1b90613623565b601385905560148490556015839055601682905560178190556040517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de1590600090a15050505050565b6001600160a01b03811660009081526005602052604081205460ff16156117d757506001600160a01b031660009081526002602052604090205490565b6001600160a01b038216600090815260016020526040902054610c1a90610cf8565b6000546001600160a01b031633146118235760405162461bcd60e51b8152600401610b1b90613623565b61182d600061256e565b565b6000546001600160a01b031633146118595760405162461bcd60e51b8152600401610b1b90613623565b611879606461187383600a54611cf390919063ffffffff16565b90611cff565b600f5550565b6000546001600160a01b031633146118a95760405162461bcd60e51b8152600401610b1b90613623565b6118ba8166038d7ea4c68000613757565b60105550565b6000546001600160a01b031633146118ea5760405162461bcd60e51b8152600401610b1b90613623565b600880549115156101000261ff0019909216919091179055565b6000610c163384610c7a85604051806060016040528060258152602001613975602591393360009081526003602090815260408083206001600160a01b038d16845290915290205491906124c4565b6000610c16338484611e2f565b6000546001600160a01b0316331461198a5760405162461bcd60e51b8152600401610b1b90613623565b60188590556019849055601a839055601b829055601c8190556040517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de1590600090a15050505050565b6000546001600160a01b031633146119fd5760405162461bcd60e51b8152600401610b1b90613623565b6012546001600160a01b03808316911603611a4f5760405162461bcd60e51b815260206004820152601260248201527115d85b1b195d08185b1c9958591e481cd95d60721b6044820152606401610b1b565b601280546001600160a01b039092166001600160a01b0319909216821790556000526004602052565b6000546001600160a01b03163314611aa25760405162461bcd60e51b8152600401610b1b90613623565b611ab082633b9aca00613757565b600c55611ac181633b9aca00613757565b600d555050565b6000546001600160a01b03163314611af25760405162461bcd60e51b8152600401610b1b90613623565b611afe6009600a61385a565b611b089082613757565b600e5550565b6000546001600160a01b03163314611b385760405162461bcd60e51b8152600401610b1b90613623565b6001600160a01b03821660009081526006602052604090205481151560ff909116151503611b9c5760405162461bcd60e51b815260206004820152601160248201527015985b1d5948185b1c9958591e481cd95d607a1b6044820152606401610b1b565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314611bf15760405162461bcd60e51b8152600401610b1b90613623565b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000546001600160a01b03163314611c3c5760405162461bcd60e51b8152600401610b1b90613623565b6001600160a01b038116611ca15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b1b565b611caa8161256e565b50565b6000546001600160a01b03163314611cd75760405162461bcd60e51b8152600401610b1b90613623565b60088054911515620100000262ff000019909216919091179055565b6000610c838284613757565b6000610c8382846136a4565b6001600160a01b038316611d6d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b1b565b6001600160a01b038216611dce5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b1b565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611e935760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b1b565b6001600160a01b038216611ef55760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b1b565b60008111611f575760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610b1b565b611f608361179a565b811115611fc95760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b6064820152608401610b1b565b6001600160a01b03831660009081526006602052604090205460ff1615801561200b57506001600160a01b03821660009081526006602052604090205460ff16155b6120475760405162461bcd60e51b815260206004820152600d60248201526c4675636b20796f7520426f747360981b6044820152606401610b1b565b6001600160a01b03831660009081526004602052604090205460ff1615801561208957506001600160a01b03821660009081526004602052604090205460ff16155b156120e05760085460ff166120e05760405162461bcd60e51b815260206004820152601a60248201527f54726164696e67206973206e6f7420656e61626c6564207965740000000000006044820152606401610b1b565b6000546001600160a01b0384811691161480159061210c57506000546001600160a01b03838116911614155b801561212057506001600160a01b03821615155b801561213757506001600160a01b03821661dead14155b801561215c57506001600160a01b03821660009081526004602052604090205460ff16155b801561218157506001600160a01b03831660009081526004602052604090205460ff16155b801561219a57506009546001600160a01b038481169116145b1561226857600c548111156121f15760405162461bcd60e51b815260206004820152601e60248201527f796f752061726520657863656564696e67206d6178427579416d6f756e7400006044820152606401610b1b565b60006121fc8361179a565b600f5490915061220c8383613722565b11156122665760405162461bcd60e51b815260206004820152602360248201527f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f6044820152621d5b9d60ea1b6064820152608401610b1b565b505b6000546001600160a01b0384811691161480159061229457506000546001600160a01b03838116911614155b80156122a857506001600160a01b03821615155b80156122bf57506001600160a01b03821661dead14155b80156122e457506001600160a01b03821660009081526004602052604090205460ff16155b801561230957506001600160a01b03831660009081526004602052604090205460ff16155b801561232257506009546001600160a01b038481169116145b1561238357600d548111156123835760405162461bcd60e51b815260206004820152602160248201527f416d6f756e7420697320657863656564696e67206d617853656c6c416d6f756e6044820152601d60fa1b6064820152608401610b1b565b600061238e3061179a565b600e54600854919250821015906301000000900460ff161580156123b95750600854610100900460ff165b80156123c25750805b80156123dc57506009546001600160a01b03868116911614155b1561244f57600854479062010000900460ff1680156124025750670de0b6b3a764000081115b801561241b57506009546001600160a01b038681169116145b156124425760105481111561242f57506010545b61244261243d826064611cff565b6125be565b61244d600e546125f0565b505b6009546000906001600160a01b039081169086160361246c575060015b6001600160a01b0386166000908152600460205260409020546124bc9087908790879060ff16806124b557506001600160a01b03891660009081526004602052604090205460ff165b158561272d565b505050505050565b600081848411156124e85760405162461bcd60e51b8152600401610b1b9190613434565b505050900390565b60008060006124fd6129e8565b909250905061250c81836136a4565b9250505090565b61251b61339a565b612526848484612b6b565b905061253b8185856125366124f0565b612d82565b60c088015260a0870152608086015260608501526040840152602083015281529392505050565b6000610c8382846136dc565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6008805463ff0000001916630100000017905580156125e0576125e081612e58565b506008805463ff00000019169055565b6008805463ff000000191663010000001790556014546017546016546000929161261991613722565b6126239190613722565b61262e906002613757565b9050600081601360030154846126449190613757565b61264e91906136a4565b9050600061265c82856136dc565b90504761266882612fc5565b600061267482476136dc565b60165490915060009061268790876136dc565b61269190836136a4565b6016549091506000906126a49083613757565b905080156126b6576126b6868261313e565b6014546000906126c7846002613757565b6126d19190613757565b90508015612715576012546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612713573d6000803e3d6000fd5b505b50506008805463ff0000001916905550505050505050565b600061273a848484612513565b6001600160a01b03871660009081526005602052604090205490915060ff161561279c576001600160a01b0386166000908152600260205260409020546127829085906136dc565b6001600160a01b0387166000908152600260205260409020555b6001600160a01b03851660009081526005602052604090205460ff16156127ff5760e08101516001600160a01b0386166000908152600260205260409020546127e59190613722565b6001600160a01b0386166000908152600260205260409020555b80516001600160a01b03871660009081526001602052604090205461282491906136dc565b6001600160a01b038088166000908152600160209081526040808320949094558401519188168152919091205461285b9190613722565b6001600160a01b038616600090815260016020526040908190209190915581015161010082015161288c9190613222565b61289f8160600151826101200151613257565b6128b28160a001518261016001516132cd565b6128c581608001518261014001516132e2565b6128d88160c00151826101800151613379565b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360e0015160405161292191815260200190565b60405180910390a3306001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83610180015184610120015185610160015161297a9190613722565b6129849190613722565b60405190815260200160405180910390a36011546101408201516040519081526001600160a01b03918216918816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050505050565b600b54600a546000918291825b600754811015612b3a57826001600060078481548110612a1757612a176136c6565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612a825750816002600060078481548110612a5b57612a5b6136c6565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15612a9857600b54600a54945094505050509091565b6001600060078381548110612aaf57612aaf6136c6565b60009182526020808320909101546001600160a01b03168352820192909252604001902054612ade90846136dc565b92506002600060078381548110612af757612af76136c6565b60009182526020808320909101546001600160a01b03168352820192909252604001902054612b2690836136dc565b915080612b3281613709565b9150506129f5565b50600a54600b54612b4b91906136a4565b821015612b6257600b54600a549350935050509091565b90939092509050565b612b7361339a565b82612b845760e08101849052610c83565b8115612c85576018546103e890612b9b9086613757565b612ba591906136a4565b6101008201526019546103e890612bbc9086613757565b612bc691906136a4565b610120820152601a546103e890612bdd9086613757565b612be791906136a4565b610140820152601b546103e890612bfe9086613757565b612c0891906136a4565b610160820152601c546103e890612c1f9086613757565b612c2991906136a4565b6101808201819052610160820151610140830151610120840151610100850151612c5390896136dc565b612c5d91906136dc565b612c6791906136dc565b612c7191906136dc565b612c7b91906136dc565b60e0820152610c83565b6013546103e890612c969086613757565b612ca091906136a4565b6101008201526014546103e890612cb79086613757565b612cc191906136a4565b6101208201526015546103e890612cd89086613757565b612ce291906136a4565b6101408201526016546103e890612cf99086613757565b612d0391906136a4565b6101608201526017546103e890612d1a9086613757565b612d2491906136a4565b6101808201819052610160820151610140830151610120840151610100850151612d4e90896136dc565b612d5891906136dc565b612d6291906136dc565b612d6c91906136dc565b612d7691906136dc565b60e08201529392505050565b6000808080808080612d94888b613757565b965088612db257508594506000935083925082915081905080612e4a565b878b6101000151612dc39190613757565b9450878b6101200151612dd69190613757565b9350878b6101400151612de99190613757565b9250878b6101600151612dfc9190613757565b9150878b6101800151612e0f9190613757565b905080828486612e1f898c6136dc565b612e2991906136dc565b612e3391906136dc565b612e3d91906136dc565b612e4791906136dc565b95505b949950949992975094509450565b604080516002808252606082018352600092602083019080368337019050509050600860049054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ecc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ef0919061373a565b81600081518110612f0357612f036136c6565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110612f3757612f376136c6565b6001600160a01b039283166020918202929092010152600854600160201b90041663b6f9de958360008461dead612f704261012c61338e565b6040518663ffffffff1660e01b8152600401612f8f94939291906138ad565b6000604051808303818588803b158015612fa857600080fd5b505af1158015612fbc573d6000803e3d6000fd5b50505050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612ffa57612ffa6136c6565b60200260200101906001600160a01b031690816001600160a01b031681525050600860049054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561306d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613091919061373a565b816001815181106130a4576130a46136c6565b6001600160a01b0392831660209182029290920101526008546130d1913091600160201b90041684611d0b565b60085460405163791ac94760e01b8152600160201b9091046001600160a01b03169063791ac947906131109085906000908690309042906004016138e2565b600060405180830381600087803b15801561312a57600080fd5b505af11580156124bc573d6000803e3d6000fd5b60085461315d903090600160201b90046001600160a01b031684611d0b565b6008546001600160a01b03600160201b9091041663f305d71982308560008061318e6000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af11580156131f6573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061321b919061391e565b5050505050565b81600b600082825461323491906136dc565b9091555050601d805482919060009061324e908490613722565b90915550505050565b80601d600101600082825461326c9190613722565b90915550503060009081526005602052604090205460ff16156132ae5730600090815260026020526040812080548392906132a8908490613722565b90915550505b306000908152600160205260408120805484929061324e908490613722565b80601d600301600082825461326c9190613722565b80601d60020160008282546132f79190613722565b90915550506011546001600160a01b031660009081526005602052604090205460ff161561334f576011546001600160a01b031660009081526002602052604081208054839290613349908490613722565b90915550505b6011546001600160a01b03166000908152600160205260408120805484929061324e908490613722565b80601d600401600082825461326c9190613722565b6000610c838284613722565b604051806101a00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6001600160a01b0381168114611caa57600080fd5b60006020828403121561342957600080fd5b8135610c8381613402565b600060208083528351808285015260005b8181101561346157858101830151858201604001528201613445565b81811115613473576000604083870101525b50601f01601f1916929092016040019392505050565b6000806040838503121561349c57600080fd5b82356134a781613402565b946020939093013593505050565b6000806000606084860312156134ca57600080fd5b83356134d581613402565b925060208401356134e581613402565b929592945050506040919091013590565b60006020828403121561350857600080fd5b5035919050565b8015158114611caa57600080fd5b6000806040838503121561353057600080fd5b8235915060208301356135428161350f565b809150509250929050565b600080600080600060a0868803121561356557600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b60006020828403121561359a57600080fd5b8135610c838161350f565b600080604083850312156135b857600080fd5b50508035926020909101359150565b600080604083850312156135da57600080fd5b82356135e581613402565b9150602083013561354281613402565b6000806040838503121561360857600080fd5b823561361381613402565b915060208301356135428161350f565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60006020828403121561366a57600080fd5b5051919050565b60006020828403121561368357600080fd5b8151610c838161350f565b634e487b7160e01b600052601160045260246000fd5b6000826136c157634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b6000828210156136ee576136ee61368e565b500390565b634e487b7160e01b600052603160045260246000fd5b60006001820161371b5761371b61368e565b5060010190565b600082198211156137355761373561368e565b500190565b60006020828403121561374c57600080fd5b8151610c8381613402565b60008160001904831182151516156137715761377161368e565b500290565b600181815b808511156137b15781600019048211156137975761379761368e565b808516156137a457918102915b93841c939080029061377b565b509250929050565b6000826137c857506001610c1a565b816137d557506000610c1a565b81600181146137eb57600281146137f557613811565b6001915050610c1a565b60ff8411156138065761380661368e565b50506001821b610c1a565b5060208310610133831016604e8410600b8410161715613834575081810a610c1a565b61383e8383613776565b80600019048211156138525761385261368e565b029392505050565b6000610c8360ff8416836137b9565b600081518084526020808501945080840160005b838110156138a25781516001600160a01b03168752958201959082019060010161387d565b509495945050505050565b8481526080602082015260006138c66080830186613869565b6001600160a01b03949094166040830152506060015292915050565b85815284602082015260a06040820152600061390160a0830186613869565b6001600160a01b0394909416606083015250608001529392505050565b60008060006060848603121561393357600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220082e42fb37c7e35a1e90c181703fe8f1a23e8d9b0f7d68c2986d8a8b8b1f866764736f6c634300080e00330000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Deployed Bytecode
0x6080604052600436106103545760003560e01c806370d5ae05116101c6578063a5ece941116100f7578063dd62ed3e11610095578063ea2f0b371161006f578063ea2f0b3714610a6a578063f2fde38b14610a8a578063f887ea4014610aaa578063f9e0896914610ad157600080fd5b8063dd62ed3e146109ee578063e116554514610a34578063e2f4560514610a5457600080fd5b8063abeef102116100d1578063abeef1021461096e578063bff781691461098e578063cdebfea3146109ae578063d257b34f146109ce57600080fd5b8063a5ece9411461090e578063a8aa1b311461092e578063a9059cbb1461094e57600080fd5b806388f8202011610164578063924de9b71161013e578063924de9b71461087b57806395d89b411461089b5780639ba5e4d5146108c7578063a457c2d7146108ee57600080fd5b806388f820201461080e5780638da5cb5b146108475780638f9a55c01461086557600080fd5b80637688c584116101a05780637688c5841461079157806382bf293c146107b857806382d2a4bb146107d857806388e765ff146107f857600080fd5b806370d5ae051461074657806370e5024114610766578063715018a61461077c57600080fd5b80633bbac579116102a057806352390c021161023e57806366d602ae1161021857806366d602ae146106d157806368ca6145146106e75780636ddd17131461070757806370a082311461072657600080fd5b806352390c02146106585780635342acb4146106785780636053a0e3146106b157600080fd5b8063437823ec1161027a578063437823ec146105de578063441b1d30146105fe5780634549b0391461061e5780634ada218b1461063e57600080fd5b80633bbac579146105655780633bd5d1731461059e57806341cb87fc146105be57600080fd5b806327c8f8351161030d578063313ce567116102e7578063313ce567146104e95780633685d4191461050557806339509351146105255780633a4559b01461054557600080fd5b806327c8f83514610486578063293230b8146104b45780632d838119146104c957600080fd5b8063042cfb511461036057806306fdde0314610382578063095ea7b3146103c857806318160ddd146103f857806318a90c441461041757806323b872dd1461046657600080fd5b3661035b57005b600080fd5b34801561036c57600080fd5b5061038061037b366004613417565b610af1565b005b34801561038e57600080fd5b5060408051808201909152600b81526a497a616e616d6920496e7560a81b60208201525b6040516103bf9190613434565b60405180910390f35b3480156103d457600080fd5b506103e86103e3366004613489565b610c09565b60405190151581526020016103bf565b34801561040457600080fd5b50600a545b6040519081526020016103bf565b34801561042357600080fd5b50601854601954601a54601b54601c5461043e949392919085565b604080519586526020860194909452928401919091526060830152608082015260a0016103bf565b34801561047257600080fd5b506103e86104813660046134b5565b610c20565b34801561049257600080fd5b5061049c61dead81565b6040516001600160a01b0390911681526020016103bf565b3480156104c057600080fd5b50610380610c8a565b3480156104d557600080fd5b506104096104e43660046134f6565b610cf8565b3480156104f557600080fd5b50604051600981526020016103bf565b34801561051157600080fd5b50610380610520366004613417565b610d75565b34801561053157600080fd5b506103e8610540366004613489565b610f27565b34801561055157600080fd5b50610380610560366004613417565b610f5e565b34801561057157600080fd5b506103e8610580366004613417565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156105aa57600080fd5b506103806105b93660046134f6565b611003565b3480156105ca57600080fd5b506103806105d9366004613417565b6110f8565b3480156105ea57600080fd5b506103806105f9366004613417565b611451565b34801561060a57600080fd5b506103806106193660046134f6565b61149f565b34801561062a57600080fd5b5061040961063936600461351d565b611546565b34801561064a57600080fd5b506008546103e89060ff1681565b34801561066457600080fd5b50610380610673366004613417565b6115d4565b34801561068457600080fd5b506103e8610693366004613417565b6001600160a01b031660009081526004602052604090205460ff1690565b3480156106bd57600080fd5b506008546103e89062010000900460ff1681565b3480156106dd57600080fd5b50610409600d5481565b3480156106f357600080fd5b5061038061070236600461354d565b611727565b34801561071357600080fd5b506008546103e890610100900460ff1681565b34801561073257600080fd5b50610409610741366004613417565b61179a565b34801561075257600080fd5b5060115461049c906001600160a01b031681565b34801561077257600080fd5b5061040960105481565b34801561078857600080fd5b506103806117f9565b34801561079d57600080fd5b5060135460145460155460165460175461043e949392919085565b3480156107c457600080fd5b506103806107d33660046134f6565b61182f565b3480156107e457600080fd5b506103806107f33660046134f6565b61187f565b34801561080457600080fd5b50610409600c5481565b34801561081a57600080fd5b506103e8610829366004613417565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561085357600080fd5b506000546001600160a01b031661049c565b34801561087157600080fd5b50610409600f5481565b34801561088757600080fd5b50610380610896366004613588565b6118c0565b3480156108a757600080fd5b50604080518082019091526003815262495a4160e81b60208201526103b2565b3480156108d357600080fd5b50601d54601e54601f5460205460215461043e949392919085565b3480156108fa57600080fd5b506103e8610909366004613489565b611904565b34801561091a57600080fd5b5060125461049c906001600160a01b031681565b34801561093a57600080fd5b5060095461049c906001600160a01b031681565b34801561095a57600080fd5b506103e8610969366004613489565b611953565b34801561097a57600080fd5b5061038061098936600461354d565b611960565b34801561099a57600080fd5b506103806109a9366004613417565b6119d3565b3480156109ba57600080fd5b506103806109c93660046135a5565b611a78565b3480156109da57600080fd5b506103806109e93660046134f6565b611ac8565b3480156109fa57600080fd5b50610409610a093660046135c7565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610a4057600080fd5b50610380610a4f3660046135f5565b611b0e565b348015610a6057600080fd5b50610409600e5481565b348015610a7657600080fd5b50610380610a85366004613417565b611bc7565b348015610a9657600080fd5b50610380610aa5366004613417565b611c12565b348015610ab657600080fd5b5060085461049c90600160201b90046001600160a01b031681565b348015610add57600080fd5b50610380610aec366004613588565b611cad565b6000546001600160a01b03163314610b245760405162461bcd60e51b8152600401610b1b90613623565b60405180910390fd5b6040516370a0823160e01b81523060048201526001600160a01b0382169063a9059cbb90339083906370a0823190602401602060405180830381865afa158015610b72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b969190613658565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015610be1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c059190613671565b5050565b6000610c16338484611d0b565b5060015b92915050565b6000610c2d848484611e2f565b610c7f8433610c7a8560405180606001604052806028815260200161394d602891396001600160a01b038a16600090815260036020908152604080832033845290915290205491906124c4565b611d0b565b5060015b9392505050565b6000546001600160a01b03163314610cb45760405162461bcd60e51b8152600401610b1b90613623565b6008805461ffff19166101011790556040514281527fb3da2db3dfc3778f99852546c6e9ab39ec253f9de7b0847afec61bd27878e9239060200160405180910390a1565b6000600b54821115610d5f5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610b1b565b6000610d696124f0565b9050610c8381846136a4565b6000546001600160a01b03163314610d9f5760405162461bcd60e51b8152600401610b1b90613623565b6001600160a01b03811660009081526005602052604090205460ff16610e075760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c756465640000000000000000006044820152606401610b1b565b60005b600754811015610c0557816001600160a01b031660078281548110610e3157610e316136c6565b6000918252602090912001546001600160a01b031603610f155760078054610e5b906001906136dc565b81548110610e6b57610e6b6136c6565b600091825260209091200154600780546001600160a01b039092169183908110610e9757610e976136c6565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600590925220805460ff191690556007805480610eef57610eef6136f3565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610f1f81613709565b915050610e0a565b3360008181526003602090815260408083206001600160a01b03871684529091528120549091610c16918590610c7a908690613722565b6000546001600160a01b03163314610f885760405162461bcd60e51b8152600401610b1b90613623565b6011546001600160a01b03808316911603610fda5760405162461bcd60e51b815260206004820152601260248201527115d85b1b195d08185b1c9958591e481cd95d60721b6044820152606401610b1b565b601180546001600160a01b039092166001600160a01b0319909216821790556000526004602052565b3360008181526005602052604090205460ff16156110785760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b6064820152608401610b1b565b60006110878360016000612513565b80516001600160a01b0384166000908152600160205260409020549192506110af9190612562565b6001600160a01b0383166000908152600160205260409020558051600b546110d691612562565b600b55601d80548491906000906110ee908490613722565b9091555050505050565b6000546001600160a01b031633146111225760405162461bcd60e51b8152600401610b1b90613623565b6008546001600160a01b03600160201b90910481169082160361114457600080fd5b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611189573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ad919061373a565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061121e919061373a565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611269573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061128d919061373a565b90506001600160a01b03811661140657816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ff919061373a565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561134c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611370919061373a565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156113bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e1919061373a565b600980546001600160a01b0319166001600160a01b0392909216919091179055611422565b600980546001600160a01b0319166001600160a01b0383161790555b50600880546001600160a01b03909216600160201b02640100000000600160c01b031990921691909117905550565b6000546001600160a01b0316331461147b5760405162461bcd60e51b8152600401610b1b90613623565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6000546001600160a01b031633146114c95760405162461bcd60e51b8152600401610b1b90613623565b804710156115195760405162461bcd60e51b815260206004820152601860248201527f696e73756666696369656e7420424e422062616c616e636500000000000000006044820152606401610b1b565b604051339082156108fc029083906000818181858888f19350505050158015610c05573d6000803e3d6000fd5b6000600a5483111561159a5760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610b1b565b816115b85760006115ae8460016000612513565b519150610c1a9050565b60006115c78460016000612513565b602001519150610c1a9050565b6000546001600160a01b031633146115fe5760405162461bcd60e51b8152600401610b1b90613623565b6001600160a01b03811660009081526005602052604090205460ff16156116675760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610b1b565b6001600160a01b038116600090815260016020526040902054156116c1576001600160a01b0381166000908152600160205260409020546116a790610cf8565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556007805491820181559091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880180546001600160a01b0319169091179055565b6000546001600160a01b031633146117515760405162461bcd60e51b8152600401610b1b90613623565b601385905560148490556015839055601682905560178190556040517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de1590600090a15050505050565b6001600160a01b03811660009081526005602052604081205460ff16156117d757506001600160a01b031660009081526002602052604090205490565b6001600160a01b038216600090815260016020526040902054610c1a90610cf8565b6000546001600160a01b031633146118235760405162461bcd60e51b8152600401610b1b90613623565b61182d600061256e565b565b6000546001600160a01b031633146118595760405162461bcd60e51b8152600401610b1b90613623565b611879606461187383600a54611cf390919063ffffffff16565b90611cff565b600f5550565b6000546001600160a01b031633146118a95760405162461bcd60e51b8152600401610b1b90613623565b6118ba8166038d7ea4c68000613757565b60105550565b6000546001600160a01b031633146118ea5760405162461bcd60e51b8152600401610b1b90613623565b600880549115156101000261ff0019909216919091179055565b6000610c163384610c7a85604051806060016040528060258152602001613975602591393360009081526003602090815260408083206001600160a01b038d16845290915290205491906124c4565b6000610c16338484611e2f565b6000546001600160a01b0316331461198a5760405162461bcd60e51b8152600401610b1b90613623565b60188590556019849055601a839055601b829055601c8190556040517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de1590600090a15050505050565b6000546001600160a01b031633146119fd5760405162461bcd60e51b8152600401610b1b90613623565b6012546001600160a01b03808316911603611a4f5760405162461bcd60e51b815260206004820152601260248201527115d85b1b195d08185b1c9958591e481cd95d60721b6044820152606401610b1b565b601280546001600160a01b039092166001600160a01b0319909216821790556000526004602052565b6000546001600160a01b03163314611aa25760405162461bcd60e51b8152600401610b1b90613623565b611ab082633b9aca00613757565b600c55611ac181633b9aca00613757565b600d555050565b6000546001600160a01b03163314611af25760405162461bcd60e51b8152600401610b1b90613623565b611afe6009600a61385a565b611b089082613757565b600e5550565b6000546001600160a01b03163314611b385760405162461bcd60e51b8152600401610b1b90613623565b6001600160a01b03821660009081526006602052604090205481151560ff909116151503611b9c5760405162461bcd60e51b815260206004820152601160248201527015985b1d5948185b1c9958591e481cd95d607a1b6044820152606401610b1b565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314611bf15760405162461bcd60e51b8152600401610b1b90613623565b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000546001600160a01b03163314611c3c5760405162461bcd60e51b8152600401610b1b90613623565b6001600160a01b038116611ca15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b1b565b611caa8161256e565b50565b6000546001600160a01b03163314611cd75760405162461bcd60e51b8152600401610b1b90613623565b60088054911515620100000262ff000019909216919091179055565b6000610c838284613757565b6000610c8382846136a4565b6001600160a01b038316611d6d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b1b565b6001600160a01b038216611dce5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b1b565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611e935760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b1b565b6001600160a01b038216611ef55760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b1b565b60008111611f575760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610b1b565b611f608361179a565b811115611fc95760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b6064820152608401610b1b565b6001600160a01b03831660009081526006602052604090205460ff1615801561200b57506001600160a01b03821660009081526006602052604090205460ff16155b6120475760405162461bcd60e51b815260206004820152600d60248201526c4675636b20796f7520426f747360981b6044820152606401610b1b565b6001600160a01b03831660009081526004602052604090205460ff1615801561208957506001600160a01b03821660009081526004602052604090205460ff16155b156120e05760085460ff166120e05760405162461bcd60e51b815260206004820152601a60248201527f54726164696e67206973206e6f7420656e61626c6564207965740000000000006044820152606401610b1b565b6000546001600160a01b0384811691161480159061210c57506000546001600160a01b03838116911614155b801561212057506001600160a01b03821615155b801561213757506001600160a01b03821661dead14155b801561215c57506001600160a01b03821660009081526004602052604090205460ff16155b801561218157506001600160a01b03831660009081526004602052604090205460ff16155b801561219a57506009546001600160a01b038481169116145b1561226857600c548111156121f15760405162461bcd60e51b815260206004820152601e60248201527f796f752061726520657863656564696e67206d6178427579416d6f756e7400006044820152606401610b1b565b60006121fc8361179a565b600f5490915061220c8383613722565b11156122665760405162461bcd60e51b815260206004820152602360248201527f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f6044820152621d5b9d60ea1b6064820152608401610b1b565b505b6000546001600160a01b0384811691161480159061229457506000546001600160a01b03838116911614155b80156122a857506001600160a01b03821615155b80156122bf57506001600160a01b03821661dead14155b80156122e457506001600160a01b03821660009081526004602052604090205460ff16155b801561230957506001600160a01b03831660009081526004602052604090205460ff16155b801561232257506009546001600160a01b038481169116145b1561238357600d548111156123835760405162461bcd60e51b815260206004820152602160248201527f416d6f756e7420697320657863656564696e67206d617853656c6c416d6f756e6044820152601d60fa1b6064820152608401610b1b565b600061238e3061179a565b600e54600854919250821015906301000000900460ff161580156123b95750600854610100900460ff165b80156123c25750805b80156123dc57506009546001600160a01b03868116911614155b1561244f57600854479062010000900460ff1680156124025750670de0b6b3a764000081115b801561241b57506009546001600160a01b038681169116145b156124425760105481111561242f57506010545b61244261243d826064611cff565b6125be565b61244d600e546125f0565b505b6009546000906001600160a01b039081169086160361246c575060015b6001600160a01b0386166000908152600460205260409020546124bc9087908790879060ff16806124b557506001600160a01b03891660009081526004602052604090205460ff165b158561272d565b505050505050565b600081848411156124e85760405162461bcd60e51b8152600401610b1b9190613434565b505050900390565b60008060006124fd6129e8565b909250905061250c81836136a4565b9250505090565b61251b61339a565b612526848484612b6b565b905061253b8185856125366124f0565b612d82565b60c088015260a0870152608086015260608501526040840152602083015281529392505050565b6000610c8382846136dc565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6008805463ff0000001916630100000017905580156125e0576125e081612e58565b506008805463ff00000019169055565b6008805463ff000000191663010000001790556014546017546016546000929161261991613722565b6126239190613722565b61262e906002613757565b9050600081601360030154846126449190613757565b61264e91906136a4565b9050600061265c82856136dc565b90504761266882612fc5565b600061267482476136dc565b60165490915060009061268790876136dc565b61269190836136a4565b6016549091506000906126a49083613757565b905080156126b6576126b6868261313e565b6014546000906126c7846002613757565b6126d19190613757565b90508015612715576012546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612713573d6000803e3d6000fd5b505b50506008805463ff0000001916905550505050505050565b600061273a848484612513565b6001600160a01b03871660009081526005602052604090205490915060ff161561279c576001600160a01b0386166000908152600260205260409020546127829085906136dc565b6001600160a01b0387166000908152600260205260409020555b6001600160a01b03851660009081526005602052604090205460ff16156127ff5760e08101516001600160a01b0386166000908152600260205260409020546127e59190613722565b6001600160a01b0386166000908152600260205260409020555b80516001600160a01b03871660009081526001602052604090205461282491906136dc565b6001600160a01b038088166000908152600160209081526040808320949094558401519188168152919091205461285b9190613722565b6001600160a01b038616600090815260016020526040908190209190915581015161010082015161288c9190613222565b61289f8160600151826101200151613257565b6128b28160a001518261016001516132cd565b6128c581608001518261014001516132e2565b6128d88160c00151826101800151613379565b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360e0015160405161292191815260200190565b60405180910390a3306001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83610180015184610120015185610160015161297a9190613722565b6129849190613722565b60405190815260200160405180910390a36011546101408201516040519081526001600160a01b03918216918816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050505050565b600b54600a546000918291825b600754811015612b3a57826001600060078481548110612a1757612a176136c6565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612a825750816002600060078481548110612a5b57612a5b6136c6565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15612a9857600b54600a54945094505050509091565b6001600060078381548110612aaf57612aaf6136c6565b60009182526020808320909101546001600160a01b03168352820192909252604001902054612ade90846136dc565b92506002600060078381548110612af757612af76136c6565b60009182526020808320909101546001600160a01b03168352820192909252604001902054612b2690836136dc565b915080612b3281613709565b9150506129f5565b50600a54600b54612b4b91906136a4565b821015612b6257600b54600a549350935050509091565b90939092509050565b612b7361339a565b82612b845760e08101849052610c83565b8115612c85576018546103e890612b9b9086613757565b612ba591906136a4565b6101008201526019546103e890612bbc9086613757565b612bc691906136a4565b610120820152601a546103e890612bdd9086613757565b612be791906136a4565b610140820152601b546103e890612bfe9086613757565b612c0891906136a4565b610160820152601c546103e890612c1f9086613757565b612c2991906136a4565b6101808201819052610160820151610140830151610120840151610100850151612c5390896136dc565b612c5d91906136dc565b612c6791906136dc565b612c7191906136dc565b612c7b91906136dc565b60e0820152610c83565b6013546103e890612c969086613757565b612ca091906136a4565b6101008201526014546103e890612cb79086613757565b612cc191906136a4565b6101208201526015546103e890612cd89086613757565b612ce291906136a4565b6101408201526016546103e890612cf99086613757565b612d0391906136a4565b6101608201526017546103e890612d1a9086613757565b612d2491906136a4565b6101808201819052610160820151610140830151610120840151610100850151612d4e90896136dc565b612d5891906136dc565b612d6291906136dc565b612d6c91906136dc565b612d7691906136dc565b60e08201529392505050565b6000808080808080612d94888b613757565b965088612db257508594506000935083925082915081905080612e4a565b878b6101000151612dc39190613757565b9450878b6101200151612dd69190613757565b9350878b6101400151612de99190613757565b9250878b6101600151612dfc9190613757565b9150878b6101800151612e0f9190613757565b905080828486612e1f898c6136dc565b612e2991906136dc565b612e3391906136dc565b612e3d91906136dc565b612e4791906136dc565b95505b949950949992975094509450565b604080516002808252606082018352600092602083019080368337019050509050600860049054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ecc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ef0919061373a565b81600081518110612f0357612f036136c6565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110612f3757612f376136c6565b6001600160a01b039283166020918202929092010152600854600160201b90041663b6f9de958360008461dead612f704261012c61338e565b6040518663ffffffff1660e01b8152600401612f8f94939291906138ad565b6000604051808303818588803b158015612fa857600080fd5b505af1158015612fbc573d6000803e3d6000fd5b50505050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612ffa57612ffa6136c6565b60200260200101906001600160a01b031690816001600160a01b031681525050600860049054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561306d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613091919061373a565b816001815181106130a4576130a46136c6565b6001600160a01b0392831660209182029290920101526008546130d1913091600160201b90041684611d0b565b60085460405163791ac94760e01b8152600160201b9091046001600160a01b03169063791ac947906131109085906000908690309042906004016138e2565b600060405180830381600087803b15801561312a57600080fd5b505af11580156124bc573d6000803e3d6000fd5b60085461315d903090600160201b90046001600160a01b031684611d0b565b6008546001600160a01b03600160201b9091041663f305d71982308560008061318e6000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af11580156131f6573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061321b919061391e565b5050505050565b81600b600082825461323491906136dc565b9091555050601d805482919060009061324e908490613722565b90915550505050565b80601d600101600082825461326c9190613722565b90915550503060009081526005602052604090205460ff16156132ae5730600090815260026020526040812080548392906132a8908490613722565b90915550505b306000908152600160205260408120805484929061324e908490613722565b80601d600301600082825461326c9190613722565b80601d60020160008282546132f79190613722565b90915550506011546001600160a01b031660009081526005602052604090205460ff161561334f576011546001600160a01b031660009081526002602052604081208054839290613349908490613722565b90915550505b6011546001600160a01b03166000908152600160205260408120805484929061324e908490613722565b80601d600401600082825461326c9190613722565b6000610c838284613722565b604051806101a00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6001600160a01b0381168114611caa57600080fd5b60006020828403121561342957600080fd5b8135610c8381613402565b600060208083528351808285015260005b8181101561346157858101830151858201604001528201613445565b81811115613473576000604083870101525b50601f01601f1916929092016040019392505050565b6000806040838503121561349c57600080fd5b82356134a781613402565b946020939093013593505050565b6000806000606084860312156134ca57600080fd5b83356134d581613402565b925060208401356134e581613402565b929592945050506040919091013590565b60006020828403121561350857600080fd5b5035919050565b8015158114611caa57600080fd5b6000806040838503121561353057600080fd5b8235915060208301356135428161350f565b809150509250929050565b600080600080600060a0868803121561356557600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b60006020828403121561359a57600080fd5b8135610c838161350f565b600080604083850312156135b857600080fd5b50508035926020909101359150565b600080604083850312156135da57600080fd5b82356135e581613402565b9150602083013561354281613402565b6000806040838503121561360857600080fd5b823561361381613402565b915060208301356135428161350f565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60006020828403121561366a57600080fd5b5051919050565b60006020828403121561368357600080fd5b8151610c838161350f565b634e487b7160e01b600052601160045260246000fd5b6000826136c157634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b6000828210156136ee576136ee61368e565b500390565b634e487b7160e01b600052603160045260246000fd5b60006001820161371b5761371b61368e565b5060010190565b600082198211156137355761373561368e565b500190565b60006020828403121561374c57600080fd5b8151610c8381613402565b60008160001904831182151516156137715761377161368e565b500290565b600181815b808511156137b15781600019048211156137975761379761368e565b808516156137a457918102915b93841c939080029061377b565b509250929050565b6000826137c857506001610c1a565b816137d557506000610c1a565b81600181146137eb57600281146137f557613811565b6001915050610c1a565b60ff8411156138065761380661368e565b50506001821b610c1a565b5060208310610133831016604e8410600b8410161715613834575081810a610c1a565b61383e8383613776565b80600019048211156138525761385261368e565b029392505050565b6000610c8360ff8416836137b9565b600081518084526020808501945080840160005b838110156138a25781516001600160a01b03168752958201959082019060010161387d565b509495945050505050565b8481526080602082015260006138c66080830186613869565b6001600160a01b03949094166040830152506060015292915050565b85815284602082015260a06040820152600061390160a0830186613869565b6001600160a01b0394909416606083015250608001529392505050565b60008060006060848603121561393357600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220082e42fb37c7e35a1e90c181703fe8f1a23e8d9b0f7d68c2986d8a8b8b1f866764736f6c634300080e0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
-----Decoded View---------------
Arg [0] : routerAddress (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Deployed Bytecode Sourcemap
9235:22128:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30628:174;;;;;;;;;;-1:-1:-1;30628:174:0;;;;;:::i;:::-;;:::i;:::-;;12659:83;;;;;;;;;;-1:-1:-1;12729:5:0;;;;;;;;;;;;-1:-1:-1;;;12729:5:0;;;;12659:83;;;;;;;:::i;:::-;;;;;;;;13590:161;;;;;;;;;;-1:-1:-1;13590:161:0;;;;;:::i;:::-;;:::i;:::-;;;1489:14:1;;1482:22;1464:41;;1452:2;1437:18;13590:161:0;1324:187:1;12955:95:0;;;;;;;;;;-1:-1:-1;13035:7:0;;12955:95;;;1662:25:1;;;1650:2;1635:18;12955:95:0;1516:177:1;11148:148:0;;;;;;;;;;-1:-1:-1;11148:148:0;;;;;;;;;;;;;;;;;;;;;;1957:25:1;;;2013:2;1998:18;;1991:34;;;;2041:18;;;2034:34;;;;2099:2;2084:18;;2077:34;2142:3;2127:19;;2120:35;1944:3;1929:19;11148:148:0;1698:463:1;13759:313:0;;;;;;;;;;-1:-1:-1;13759:313:0;;;;;:::i;:::-;;:::i;10642:80::-;;;;;;;;;;;;10680:42;10642:80;;;;;-1:-1:-1;;;;;2791:32:1;;;2773:51;;2761:2;2746:18;10642:80:0;2627:203:1;15588:158:0;;;;;;;;;;;;;:::i;15756:248::-;;;;;;;;;;-1:-1:-1;15756:248:0;;;;;:::i;:::-;;:::i;12841:83::-;;;;;;;;;;-1:-1:-1;12841:83:0;;9955:1;3162:36:1;;3150:2;3135:18;12841:83:0;3020:184:1;16419:475:0;;;;;;;;;;-1:-1:-1;16419:475:0;;;;;:::i;:::-;;:::i;14080:213::-;;;;;;;;;;-1:-1:-1;14080:213:0;;;;;:::i;:::-;;:::i;28899:::-;;;;;;;;;;-1:-1:-1;28899:213:0;;;;;:::i;:::-;;:::i;30254:98::-;;;;;;;;;;-1:-1:-1;30254:98:0;;;;;:::i;:::-;-1:-1:-1;;;;;30329:15:0;30306:4;30329:15;;;:6;:15;;;;;;;;;30254:98;14706:390;;;;;;;;;;-1:-1:-1;14706:390:0;;;;;:::i;:::-;;:::i;30812:506::-;;;;;;;;;;-1:-1:-1;30812:506:0;;;;;:::i;:::-;;:::i;16904:111::-;;;;;;;;;;-1:-1:-1;16904:111:0;;;;;:::i;:::-;;:::i;30424:196::-;;;;;;;;;;-1:-1:-1;30424:196:0;;;;;:::i;:::-;;:::i;15110:470::-;;;;;;;;;;-1:-1:-1;15110:470:0;;;;;:::i;:::-;;:::i;9730:26::-;;;;;;;;;;-1:-1:-1;9730:26:0;;;;;;;;16078:333;;;;;;;;;;-1:-1:-1;16078:333:0;;;;;:::i;:::-;;:::i;17143:123::-;;;;;;;;;;-1:-1:-1;17143:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;17231:27:0;17207:4;17231:27;;;:18;:27;;;;;;;;;17143:123;9793:34;;;;;;;;;;-1:-1:-1;9793:34:0;;;;;;;;;;;10196:54;;;;;;;;;;;;;;;;17458:350;;;;;;;;;;-1:-1:-1;17458:350:0;;;;;:::i;:::-;;:::i;9763:23::-;;;;;;;;;;-1:-1:-1;9763:23:0;;;;;;;;;;;13058:198;;;;;;;;;;-1:-1:-1;13058:198:0;;;;;:::i;:::-;;:::i;10464:71::-;;;;;;;;;;-1:-1:-1;10464:71:0;;;;-1:-1:-1;;;;;10464:71:0;;;10388:45;;;;;;;;;;;;;;;;7601:94;;;;;;;;;;;;;:::i;10990:149::-;;;;;;;;;;-1:-1:-1;10990:149:0;;;;;;;;;;;;;;;;;;17273:171;;;;;;;;;;-1:-1:-1;17273:171:0;;;;;:::i;:::-;;:::i;30113:133::-;;;;;;;;;;-1:-1:-1;30113:133:0;;;;;:::i;:::-;;:::i;10136:53::-;;;;;;;;;;;;;;;;14578:120;;;;;;;;;;-1:-1:-1;14578:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;14670:20:0;14646:4;14670:20;;;:11;:20;;;;;;;;;14578:120;7378:87;;;;;;;;;;-1:-1:-1;7424:7:0;7451:6;-1:-1:-1;;;;;7451:6:0;7378:87;;10327:53;;;;;;;;;;;;;;;;29710:101;;;;;;;;;;-1:-1:-1;29710:101:0;;;;;:::i;:::-;;:::i;12748:87::-;;;;;;;;;;-1:-1:-1;12820:7:0;;;;;;;;;;;;-1:-1:-1;;;12820:7:0;;;;12748:87;;11470:36;;;;;;;;;;-1:-1:-1;11470:36:0;;;;;;;;;;;;;;;;;;14301:269;;;;;;;;;;-1:-1:-1;14301:269:0;;;;;:::i;:::-;;:::i;10555:76::-;;;;;;;;;;-1:-1:-1;10555:76:0;;;;-1:-1:-1;;;;;10555:76:0;;;9892:19;;;;;;;;;;-1:-1:-1;9892:19:0;;;;-1:-1:-1;;;;;9892:19:0;;;13264:167;;;;;;;;;;-1:-1:-1;13264:167:0;;;;;:::i;:::-;;:::i;17816:372::-;;;;;;;;;;-1:-1:-1;17816:372:0;;;;;:::i;:::-;;:::i;29120:233::-;;;;;;;;;;-1:-1:-1;29120:233:0;;;;;:::i;:::-;;:::i;29363:201::-;;;;;;;;;;-1:-1:-1;29363:201:0;;;;;:::i;:::-;;:::i;29572:130::-;;;;;;;;;;-1:-1:-1;29572:130:0;;;;;:::i;:::-;;:::i;13439:143::-;;;;;;;;;;-1:-1:-1;13439:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;13547:18:0;;;13520:7;13547:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;13439:143;29934:171;;;;;;;;;;-1:-1:-1;29934:171:0;;;;;:::i;:::-;;:::i;10257:63::-;;;;;;;;;;;;;;;;17023:110;;;;;;;;;;-1:-1:-1;17023:110:0;;;;;:::i;:::-;;:::i;7703:192::-;;;;;;;;;;-1:-1:-1;7703:192:0;;;;;:::i;:::-;;:::i;9864:21::-;;;;;;;;;;-1:-1:-1;9864:21:0;;;;-1:-1:-1;;;9864:21:0;;-1:-1:-1;;;;;9864:21:0;;;29819:107;;;;;;;;;;-1:-1:-1;29819:107:0;;;;;:::i;:::-;;:::i;30628:174::-;7424:7;7451:6;-1:-1:-1;;;;;7451:6:0;3325:10;7513:23;7505:68;;;;-1:-1:-1;;;7505:68:0;;;;;;;:::i;:::-;;;;;;;;;30748:45:::1;::::0;-1:-1:-1;;;30748:45:0;;30787:4:::1;30748:45;::::0;::::1;2773:51:1::0;-1:-1:-1;;;;;30706:29:0;::::1;::::0;::::1;::::0;30736:10:::1;::::0;30706:29;;30748:30:::1;::::0;2746:18:1;;30748:45:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30706:88;::::0;-1:-1:-1;;;;;;30706:88:0::1;::::0;;;;;;-1:-1:-1;;;;;6349:32:1;;;30706:88:0::1;::::0;::::1;6331:51:1::0;6398:18;;;6391:34;6304:18;;30706:88:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;30628:174:::0;:::o;13590:161::-;13665:4;13682:39;3325:10;13705:7;13714:6;13682:8;:39::i;:::-;-1:-1:-1;13739:4:0;13590:161;;;;;:::o;13759:313::-;13857:4;13874:36;13884:6;13892:9;13903:6;13874:9;:36::i;:::-;13921:121;13930:6;3325:10;13952:89;13990:6;13952:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13952:19:0;;;;;;:11;:19;;;;;;;;3325:10;13952:33;;;;;;;;;;:37;:89::i;:::-;13921:8;:121::i;:::-;-1:-1:-1;14060:4:0;13759:313;;;;;;:::o;15588:158::-;7424:7;7451:6;-1:-1:-1;;;;;7451:6:0;3325:10;7513:23;7505:68;;;;-1:-1:-1;;;7505:68:0;;;;;;;:::i;:::-;15641:14:::1;:21:::0;;-1:-1:-1;;15673:18:0;;;;;15707:31:::1;::::0;15722:15:::1;1662:25:1::0;;15707:31:0::1;::::0;1650:2:1;1635:18;15707:31:0::1;;;;;;;15588:158::o:0;15756:248::-;15822:7;15861;;15850;:18;;15842:73;;;;-1:-1:-1;;;15842:73:0;;6888:2:1;15842:73:0;;;6870:21:1;6927:2;6907:18;;;6900:30;6966:34;6946:18;;;6939:62;-1:-1:-1;;;7017:18:1;;;7010:40;7067:19;;15842:73:0;6686:406:1;15842:73:0;15926:19;15949:10;:8;:10::i;:::-;15926:33;-1:-1:-1;15977:19:0;15926:33;15977:7;:19;:::i;16419:475::-;7424:7;7451:6;-1:-1:-1;;;;;7451:6:0;3325:10;7513:23;7505:68;;;;-1:-1:-1;;;7505:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16501:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;16493:56;;;::::0;-1:-1:-1;;;16493:56:0;;7653:2:1;16493:56:0::1;::::0;::::1;7635:21:1::0;7692:2;7672:18;;;7665:30;7731:25;7711:18;;;7704:53;7774:18;;16493:56:0::1;7451:347:1::0;16493:56:0::1;16565:9;16560:327;16584:9;:16:::0;16580:20;::::1;16560:327;;;16642:7;-1:-1:-1::0;;;;;16626:23:0::1;:9;16636:1;16626:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;16626:12:0::1;:23:::0;16622:254:::1;;16685:9;16695:16:::0;;:20:::1;::::0;16714:1:::1;::::0;16695:20:::1;:::i;:::-;16685:31;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;16670:9:::1;:12:::0;;-1:-1:-1;;;;;16685:31:0;;::::1;::::0;16680:1;;16670:12;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;16670:46:0::1;-1:-1:-1::0;;;;;16670:46:0;;::::1;;::::0;;16735:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;16774:11:::1;:20:::0;;;;:28;;-1:-1:-1;;16774:28:0::1;::::0;;16821:9:::1;:15:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;16821:15:0;;;;;-1:-1:-1;;;;;;16821:15:0::1;::::0;;;;;30706:88:::1;30628:174:::0;:::o;16622:254::-:1;16602:3:::0;::::1;::::0;::::1;:::i;:::-;;;;16560:327;;14080:213:::0;3325:10;14168:4;14217:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;14217:34:0;;;;;;;;;;14168:4;;14185:78;;14208:7;;14217:45;;14252:10;;14217:45;:::i;28899:213::-;7424:7;7451:6;-1:-1:-1;;;;;7451:6:0;3325:10;7513:23;7505:68;;;;-1:-1:-1;;;7505:68:0;;;;;;;:::i;:::-;28981:11:::1;::::0;-1:-1:-1;;;;;28981:24:0;;::::1;:11:::0;::::1;:24:::0;28973:55:::1;;;::::0;-1:-1:-1;;;28973:55:0;;8672:2:1;28973:55:0::1;::::0;::::1;8654:21:1::0;8711:2;8691:18;;;8684:30;-1:-1:-1;;;8730:18:1;;;8723:48;8788:18;;28973:55:0::1;8470:342:1::0;28973:55:0::1;29039:11;:23:::0;;-1:-1:-1;;;;;29039:23:0;;::::1;-1:-1:-1::0;;;;;;29039:23:0;;::::1;::::0;::::1;::::0;;:11:::1;29073:31:::0;:18:::1;:31;::::0;28899:213::o;14706:390::-;3325:10;14758:14;14807:19;;;:11;:19;;;;;;;;14806:20;14798:77;;;;-1:-1:-1;;;14798:77:0;;9019:2:1;14798:77:0;;;9001:21:1;9058:2;9038:18;;;9031:30;9097:34;9077:18;;;9070:62;-1:-1:-1;;;9148:18:1;;;9141:42;9200:19;;14798:77:0;8817:408:1;14798:77:0;14886:28;14917:32;14928:7;14937:4;14943:5;14917:10;:32::i;:::-;14998:9;;-1:-1:-1;;;;;14978:15:0;;14998:9;14978:15;;;:7;:15;;;;;;14886:63;;-1:-1:-1;14978:30:0;;:15;:19;:30::i;:::-;-1:-1:-1;;;;;14960:15:0;;;;;;:7;:15;;;;;:48;15041:9;;15029:7;;:22;;:11;:22::i;:::-;15019:7;:32;15062:11;:26;;15081:7;;15062:11;:15;;:26;;15081:7;;15062:26;:::i;:::-;;;;-1:-1:-1;;;;;14706:390:0:o;30812:506::-;7424:7;7451:6;-1:-1:-1;;;;;7451:6:0;3325:10;7513:23;7505:68;;;;-1:-1:-1;;;7505:68:0;;;;;;;:::i;:::-;30916:6:::1;::::0;-1:-1:-1;;;;;;;;30916:6:0;;::::1;::::0;::::1;30895:28:::0;;::::1;::::0;30887:37:::1;;;::::0;::::1;;30935:18;30964:9;30935:39;;30985:16;31013:10;-1:-1:-1::0;;;;;31013:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;31004:38:0::1;;31051:4;31058:10;-1:-1:-1::0;;;;;31058:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31004:72;::::0;-1:-1:-1;;;;;;31004:72:0::1;::::0;;;;;;-1:-1:-1;;;;;9716:15:1;;;31004:72:0::1;::::0;::::1;9698:34:1::0;9768:15;;9748:18;;;9741:43;9633:18;;31004:72:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30985:91:::0;-1:-1:-1;;;;;;31091:22:0;::::1;31087:194;;31146:10;-1:-1:-1::0;;;;;31146:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;31137:41:0::1;;31187:4;31194:10;-1:-1:-1::0;;;;;31194:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31137:75;::::0;-1:-1:-1;;;;;;31137:75:0::1;::::0;;;;;;-1:-1:-1;;;;;9716:15:1;;;31137:75:0::1;::::0;::::1;9698:34:1::0;9768:15;;9748:18;;;9741:43;9633:18;;31137:75:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31130:4;:82:::0;;-1:-1:-1;;;;;;31130:82:0::1;-1:-1:-1::0;;;;;31130:82:0;;;::::1;::::0;;;::::1;::::0;;31087:194:::1;;;31254:4;:15:::0;;-1:-1:-1;;;;;;31254:15:0::1;-1:-1:-1::0;;;;;31254:15:0;::::1;;::::0;;31087:194:::1;-1:-1:-1::0;31291:6:0::1;:19:::0;;-1:-1:-1;;;;;31291:19:0;;::::1;-1:-1:-1::0;;;31291:19:0::1;-1:-1:-1::0;;;;;;31291:19:0;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;30812:506:0:o;16904:111::-;7424:7;7451:6;-1:-1:-1;;;;;7451:6:0;3325:10;7513:23;7505:68;;;;-1:-1:-1;;;7505:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16973:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;16973:34:0::1;17003:4;16973:34;::::0;;16904:111::o;30424:196::-;7424:7;7451:6;-1:-1:-1;;;;;7451:6:0;3325:10;7513:23;7505:68;;;;-1:-1:-1;;;7505:68:0;;;;;;;:::i;:::-;30524:9:::1;30499:21;:34;;30491:71;;;::::0;-1:-1:-1;;;30491:71:0;;9997:2:1;30491:71:0::1;::::0;::::1;9979:21:1::0;10036:2;10016:18;;;10009:30;10075:26;10055:18;;;10048:54;10119:18;;30491:71:0::1;9795:348:1::0;30491:71:0::1;30573:39;::::0;30581:10:::1;::::0;30573:39;::::1;;;::::0;30602:9;;30573:39:::1;::::0;;;30602:9;30581:10;30573:39;::::1;;;;;;;;;;;;;::::0;::::1;;;;15110:470:::0;15200:7;15239;;15228;:18;;15220:62;;;;-1:-1:-1;;;15220:62:0;;10350:2:1;15220:62:0;;;10332:21:1;10389:2;10369:18;;;10362:30;10428:33;10408:18;;;10401:61;10479:18;;15220:62:0;10148:355:1;15220:62:0;15298:17;15293:280;;15332:28;15363:32;15374:7;15383:4;15389:5;15363:10;:32::i;:::-;15417:9;;-1:-1:-1;15410:16:0;;-1:-1:-1;15410:16:0;15293:280;15459:28;15490:32;15501:7;15510:4;15516:5;15490:10;:32::i;:::-;15544:17;;;;-1:-1:-1;15537:24:0;;-1:-1:-1;15537:24:0;16078:333;7424:7;7451:6;-1:-1:-1;;;;;7451:6:0;3325:10;7513:23;7505:68;;;;-1:-1:-1;;;7505:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16161:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;16160:21;16152:61;;;::::0;-1:-1:-1;;;16152:61:0;;10710:2:1;16152:61:0::1;::::0;::::1;10692:21:1::0;10749:2;10729:18;;;10722:30;10788:29;10768:18;;;10761:57;10835:18;;16152:61:0::1;10508:351:1::0;16152:61:0::1;-1:-1:-1::0;;;;;16227:16:0;::::1;16246:1;16227:16:::0;;;:7:::1;:16;::::0;;;;;:20;16224:108:::1;;-1:-1:-1::0;;;;;16303:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;16283:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;16264:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;16224:108:::1;-1:-1:-1::0;;;;;16342:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;16342:27:0::1;16365:4;16342:27:::0;;::::1;::::0;;;16380:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;16380:23:0::1;::::0;;::::1;::::0;;16078:333::o;17458:350::-;7424:7;7451:6;-1:-1:-1;;;;;7451:6:0;3325:10;7513:23;7505:68;;;;-1:-1:-1;;;7505:68:0;;;;;;;:::i;:::-;17596:8:::1;:19:::0;;;17626:18;:31;;;17668:13;:21;;;17702:18;:31;;;17744:16;:27;;;17787:13:::1;::::0;::::1;::::0;17596:12:::1;::::0;17787:13:::1;17458:350:::0;;;;;:::o;13058:198::-;-1:-1:-1;;;;;13148:20:0;;13124:7;13148:20;;;:11;:20;;;;;;;;13144:49;;;-1:-1:-1;;;;;;13177:16:0;;;;;:7;:16;;;;;;;13058:198::o;13144:49::-;-1:-1:-1;;;;;13231:16:0;;;;;;:7;:16;;;;;;13211:37;;:19;:37::i;7601:94::-;7424:7;7451:6;-1:-1:-1;;;;;7451:6:0;3325:10;7513:23;7505:68;;;;-1:-1:-1;;;7505:68:0;;;;;;;:::i;:::-;7666:21:::1;7684:1;7666:9;:21::i;:::-;7601:94::o:0;17273:171::-;7424:7;7451:6;-1:-1:-1;;;;;7451:6:0;3325:10;7513:23;7505:68;;;;-1:-1:-1;;;7505:68:0;;;;;;;:::i;:::-;17375:62:::1;17421:5;17375:27;17387:14;17375:7;;:11;;:27;;;;:::i;:::-;:31:::0;::::1;:62::i;:::-;17358:14;:79:::0;-1:-1:-1;17273:171:0:o;30113:133::-;7424:7;7451:6;-1:-1:-1;;;;;7451:6:0;3325:10;7513:23;7505:68;;;;-1:-1:-1;;;7505:68:0;;;;;;;:::i;:::-;30217:21:::1;:12:::0;30232:6:::1;30217:21;:::i;:::-;30197:17;:41:::0;-1:-1:-1;30113:133:0:o;29710:101::-;7424:7;7451:6;-1:-1:-1;;;;;7451:6:0;3325:10;7513:23;7505:68;;;;-1:-1:-1;;;7505:68:0;;;;;;;:::i;:::-;29781:11:::1;:22:::0;;;::::1;;;;-1:-1:-1::0;;29781:22:0;;::::1;::::0;;;::::1;::::0;;29710:101::o;14301:269::-;14394:4;14411:129;3325:10;14434:7;14443:96;14482:15;14443:96;;;;;;;;;;;;;;;;;3325:10;14443:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;14443:34:0;;;;;;;;;;;;:38;:96::i;13264:167::-;13342:4;13359:42;3325:10;13383:9;13394:6;13359:9;:42::i;17816:372::-;7424:7;7451:6;-1:-1:-1;;;;;7451:6:0;3325:10;7513:23;7505:68;;;;-1:-1:-1;;;7505:68:0;;;;;;;:::i;:::-;17956:12:::1;:23:::0;;;17990:22;:35;;;18036:17;:25;;;18074:22;:35;;;18120:20;:31;;;18167:13:::1;::::0;::::1;::::0;17956:16:::1;::::0;18167:13:::1;17816:372:::0;;;;;:::o;29120:233::-;7424:7;7451:6;-1:-1:-1;;;;;7451:6:0;3325:10;7513:23;7505:68;;;;-1:-1:-1;;;7505:68:0;;;;;;;:::i;:::-;29207:16:::1;::::0;-1:-1:-1;;;;;29207:29:0;;::::1;:16:::0;::::1;:29:::0;29199:60:::1;;;::::0;-1:-1:-1;;;29199:60:0;;8672:2:1;29199:60:0::1;::::0;::::1;8654:21:1::0;8711:2;8691:18;;;8684:30;-1:-1:-1;;;8730:18:1;;;8723:48;8788:18;;29199:60:0::1;8470:342:1::0;29199:60:0::1;29270:16;:28:::0;;-1:-1:-1;;;;;29270:28:0;;::::1;-1:-1:-1::0;;;;;;29270:28:0;;::::1;::::0;::::1;::::0;;:16:::1;29309:36:::0;:18:::1;:36;::::0;29120:233::o;29363:201::-;7424:7;7451:6;-1:-1:-1;;;;;7451:6:0;3325:10;7513:23;7505:68;;;;-1:-1:-1;;;7505:68:0;;;;;;;:::i;:::-;29486:21:::1;:13:::0;29502:5:::1;29486:21;:::i;:::-;29471:12;:36:::0;29534:22:::1;:14:::0;29551:5:::1;29534:22;:::i;:::-;29518:13;:38:::0;-1:-1:-1;;29363:201:0:o;29572:130::-;7424:7;7451:6;-1:-1:-1;;;;;7451:6:0;3325:10;7513:23;7505:68;;;;-1:-1:-1;;;7505:68:0;;;;;;;:::i;:::-;29681:13:::1;9955:1;29681:2;:13;:::i;:::-;29672:22;::::0;:6;:22:::1;:::i;:::-;29651:18;:43:::0;-1:-1:-1;29572:130:0:o;29934:171::-;7424:7;7451:6;-1:-1:-1;;;;;7451:6:0;3325:10;7513:23;7505:68;;;;-1:-1:-1;;;7505:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;30019:15:0;::::1;;::::0;;;:6:::1;:15;::::0;;;;;:23;::::1;;:15;::::0;;::::1;:23;;::::0;30011:53:::1;;;::::0;-1:-1:-1;;;30011:53:0;;12622:2:1;30011:53:0::1;::::0;::::1;12604:21:1::0;12661:2;12641:18;;;12634:30;-1:-1:-1;;;12680:18:1;;;12673:47;12737:18;;30011:53:0::1;12420:341:1::0;30011:53:0::1;-1:-1:-1::0;;;;;30075:15:0;;;::::1;;::::0;;;:6:::1;:15;::::0;;;;:22;;-1:-1:-1;;30075:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;29934:171::o;17023:110::-;7424:7;7451:6;-1:-1:-1;;;;;7451:6:0;3325:10;7513:23;7505:68;;;;-1:-1:-1;;;7505:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17090:27:0::1;17120:5;17090:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;17090:35:0::1;::::0;;17023:110::o;7703:192::-;7424:7;7451:6;-1:-1:-1;;;;;7451:6:0;3325:10;7513:23;7505:68;;;;-1:-1:-1;;;7505:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7792:22:0;::::1;7784:73;;;::::0;-1:-1:-1;;;7784:73:0;;12968:2:1;7784:73:0::1;::::0;::::1;12950:21:1::0;13007:2;12987:18;;;12980:30;13046:34;13026:18;;;13019:62;-1:-1:-1;;;13097:18:1;;;13090:36;13143:19;;7784:73:0::1;12766:402:1::0;7784:73:0::1;7868:19;7878:8;7868:9;:19::i;:::-;7703:192:::0;:::o;29819:107::-;7424:7;7451:6;-1:-1:-1;;;;;7451:6:0;3325:10;7513:23;7505:68;;;;-1:-1:-1;;;7505:68:0;;;;;;;:::i;:::-;29893:14:::1;:25:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;29893:25:0;;::::1;::::0;;;::::1;::::0;;29819:107::o;2149:98::-;2207:7;2234:5;2238:1;2234;:5;:::i;2255:98::-;2313:7;2340:5;2344:1;2340;:5;:::i;22440:335::-;-1:-1:-1;;;;;22533:19:0;;22525:68;;;;-1:-1:-1;;;22525:68:0;;13375:2:1;22525:68:0;;;13357:21:1;13414:2;13394:18;;;13387:30;13453:34;13433:18;;;13426:62;-1:-1:-1;;;13504:18:1;;;13497:34;13548:19;;22525:68:0;13173:400:1;22525:68:0;-1:-1:-1;;;;;22612:21:0;;22604:68;;;;-1:-1:-1;;;22604:68:0;;13780:2:1;22604:68:0;;;13762:21:1;13819:2;13799:18;;;13792:30;13858:34;13838:18;;;13831:62;-1:-1:-1;;;13909:18:1;;;13902:32;13951:19;;22604:68:0;13578:398:1;22604:68:0;-1:-1:-1;;;;;22683:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;22735:32;;1662:25:1;;;22735:32:0;;1635:18:1;22735:32:0;;;;;;;22440:335;;;:::o;22783:2181::-;-1:-1:-1;;;;;22879:18:0;;22871:68;;;;-1:-1:-1;;;22871:68:0;;14183:2:1;22871:68:0;;;14165:21:1;14222:2;14202:18;;;14195:30;14261:34;14241:18;;;14234:62;-1:-1:-1;;;14312:18:1;;;14305:35;14357:19;;22871:68:0;13981:401:1;22871:68:0;-1:-1:-1;;;;;22958:16:0;;22950:64;;;;-1:-1:-1;;;22950:64:0;;14589:2:1;22950:64:0;;;14571:21:1;14628:2;14608:18;;;14601:30;14667:34;14647:18;;;14640:62;-1:-1:-1;;;14718:18:1;;;14711:33;14761:19;;22950:64:0;14387:399:1;22950:64:0;23042:1;23033:6;:10;23025:64;;;;-1:-1:-1;;;23025:64:0;;14993:2:1;23025:64:0;;;14975:21:1;15032:2;15012:18;;;15005:30;15071:34;15051:18;;;15044:62;-1:-1:-1;;;15122:18:1;;;15115:39;15171:19;;23025:64:0;14791:405:1;23025:64:0;23118:15;23128:4;23118:9;:15::i;:::-;23108:6;:25;;23100:86;;;;-1:-1:-1;;;23100:86:0;;15403:2:1;23100:86:0;;;15385:21:1;15442:2;15422:18;;;15415:30;15481:34;15461:18;;;15454:62;-1:-1:-1;;;15532:18:1;;;15525:47;15589:19;;23100:86:0;15201:413:1;23100:86:0;-1:-1:-1;;;;;23206:12:0;;;;;;:6;:12;;;;;;;;23205:13;:28;;;;-1:-1:-1;;;;;;23223:10:0;;;;;;:6;:10;;;;;;;;23222:11;23205:28;23197:54;;;;-1:-1:-1;;;23197:54:0;;15821:2:1;23197:54:0;;;15803:21:1;15860:2;15840:18;;;15833:30;-1:-1:-1;;;15879:18:1;;;15872:43;15932:18;;23197:54:0;15619:337:1;23197:54:0;-1:-1:-1;;;;;23268:24:0;;;;;;:18;:24;;;;;;;;23267:25;:52;;;;-1:-1:-1;;;;;;23297:22:0;;;;;;:18;:22;;;;;;;;23296:23;23267:52;23264:136;;;23343:14;;;;23335:53;;;;-1:-1:-1;;;23335:53:0;;16163:2:1;23335:53:0;;;16145:21:1;16202:2;16182:18;;;16175:30;16241:28;16221:18;;;16214:56;16287:18;;23335:53:0;15961:350:1;23335:53:0;7424:7;7451:6;-1:-1:-1;;;;;23416:15:0;;;7451:6;;23416:15;;;;:45;;-1:-1:-1;7424:7:0;7451:6;-1:-1:-1;;;;;23448:13:0;;;7451:6;;23448:13;;23416:45;:78;;;;-1:-1:-1;;;;;;23478:16:0;;;;23416:78;:116;;;;-1:-1:-1;;;;;;23511:21:0;;23525:6;23511:21;;23416:116;:156;;;;-1:-1:-1;;;;;;23550:22:0;;;;;;:18;:22;;;;;;;;23549:23;23416:156;:198;;;;-1:-1:-1;;;;;;23590:24:0;;;;;;:18;:24;;;;;;;;23589:25;23416:198;:227;;;;-1:-1:-1;23639:4:0;;-1:-1:-1;;;;;23631:12:0;;;23639:4;;23631:12;23416:227;23412:492;;;23677:12;;23667:6;:22;;23659:65;;;;-1:-1:-1;;;23659:65:0;;16518:2:1;23659:65:0;;;16500:21:1;16557:2;16537:18;;;16530:30;16596:32;16576:18;;;16569:60;16646:18;;23659:65:0;16316:354:1;23659:65:0;23738:28;23769:13;23779:2;23769:9;:13::i;:::-;23838:14;;23738:44;;-1:-1:-1;23805:29:0;23828:6;23738:44;23805:29;:::i;:::-;:47;;23797:95;;;;-1:-1:-1;;;23797:95:0;;16877:2:1;23797:95:0;;;16859:21:1;16916:2;16896:18;;;16889:30;16955:34;16935:18;;;16928:62;-1:-1:-1;;;17006:18:1;;;16999:33;17049:19;;23797:95:0;16675:399:1;23797:95:0;23644:260;23412:492;7424:7;7451:6;-1:-1:-1;;;;;23920:15:0;;;7451:6;;23920:15;;;;:45;;-1:-1:-1;7424:7:0;7451:6;-1:-1:-1;;;;;23952:13:0;;;7451:6;;23952:13;;23920:45;:78;;;;-1:-1:-1;;;;;;23982:16:0;;;;23920:78;:116;;;;-1:-1:-1;;;;;;24015:21:0;;24029:6;24015:21;;23920:116;:156;;;;-1:-1:-1;;;;;;24054:22:0;;;;;;:18;:22;;;;;;;;24053:23;23920:156;:198;;;;-1:-1:-1;;;;;;24094:24:0;;;;;;:18;:24;;;;;;;;24093:25;23920:198;:227;;;;-1:-1:-1;24143:4:0;;-1:-1:-1;;;;;24135:12:0;;;24143:4;;24135:12;23920:227;23916:328;;;24181:13;;24171:6;:23;;24163:69;;;;-1:-1:-1;;;24163:69:0;;17281:2:1;24163:69:0;;;17263:21:1;17320:2;17300:18;;;17293:30;17359:34;17339:18;;;17332:62;-1:-1:-1;;;17410:18:1;;;17403:31;17451:19;;24163:69:0;17079:397:1;24163:69:0;24256:28;24287:24;24305:4;24287:9;:24::i;:::-;24361:18;;24394:8;;24256:55;;-1:-1:-1;24337:42:0;;;;24394:8;;;;;24393:9;:24;;;;-1:-1:-1;24406:11:0;;;;;;;24393:24;:35;;;;;24421:7;24393:35;:51;;;;-1:-1:-1;24440:4:0;;-1:-1:-1;;;;;24432:12:0;;;24440:4;;24432:12;;24393:51;24390:398;;;24518:14;;24478:21;;24518:14;;;;;:47;;;;;24554:10;24536:7;:29;24518:47;:61;;;;-1:-1:-1;24575:4:0;;-1:-1:-1;;;;;24569:10:0;;;24575:4;;24569:10;24518:61;24514:212;;;24614:17;;24604:7;:27;24600:60;;;-1:-1:-1;24643:17:0;;24600:60;24679:31;24693:16;:7;24705:3;24693:11;:16::i;:::-;24679:13;:31::i;:::-;24742:34;24757:18;;24742:14;:34::i;:::-;24445:343;24390:398;24829:4;;24798:11;;-1:-1:-1;;;;;24829:4:0;;;24823:10;;;;24820:28;;-1:-1:-1;24844:4:0;24820:28;-1:-1:-1;;;;;24896:24:0;;;;;;:18;:24;;;;;;24861:95;;24876:4;;24882:2;;24886:6;;24896:24;;;:50;;-1:-1:-1;;;;;;24924:22:0;;;;;;:18;:22;;;;;;;;24896:50;24894:53;24949:6;24861:14;:95::i;:::-;22852:2112;;;22783:2181;;;:::o;2467:240::-;2587:7;2648:12;2640:6;;;;2632:29;;;;-1:-1:-1;;;2632:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;2683:5:0;;;2467:240::o;21726:158::-;21767:7;21788:15;21805;21824:19;:17;:19::i;:::-;21787:56;;-1:-1:-1;21787:56:0;-1:-1:-1;21861:15:0;21787:56;;21861:15;:::i;:::-;21854:22;;;;21726:158;:::o;19433:427::-;19519:36;;:::i;:::-;19580:37;19592:7;19601;19610:6;19580:11;:37::i;:::-;19568:49;;19773:52;19785:9;19796:7;19805;19814:10;:8;:10::i;:::-;19773:11;:52::i;:::-;19751:18;;;19628:197;19729:20;;;19628:197;19712:15;;;19628:197;19690:20;;;19628:197;19675:14;;;19628:197;19648:25;;;19628:197;;;19433:427;;;;;:::o;2043:98::-;2101:7;2128:5;2132:1;2128;:5;:::i;7903:173::-;7959:16;7978:6;;-1:-1:-1;;;;;7995:17:0;;;-1:-1:-1;;;;;;7995:17:0;;;;;;8028:40;;7978:6;;;;;;;8028:40;;7959:16;8028:40;7948:128;7903:173;:::o;26082:134::-;12063:8;:15;;-1:-1:-1;;12063:15:0;;;;;26152:10;;26148:61:::1;;26176:24;26193:6;26176:16;:24::i;:::-;-1:-1:-1::0;12101:8:0;:16;;-1:-1:-1;;12101:16:0;;;26082:134::o;26737:1075::-;12063:8;:15;;-1:-1:-1;;12063:15:0;;;;;26921:18;;26902:16;;26881:18;;12063:15;;26921:18;26881:37:::1;::::0;::::1;:::i;:::-;:58;;;;:::i;:::-;26880:65;::::0;26944:1:::1;26880:65;:::i;:::-;26859:86;;26956:32;27021:11;27000:8;:18;;;26991:6;:27;;;;:::i;:::-;:41;;;;:::i;:::-;26956:76:::0;-1:-1:-1;27043:14:0::1;27060:33;26956:76:::0;27060:6;:33:::1;:::i;:::-;27043:50:::0;-1:-1:-1;27131:21:0::1;27165:24;27043:50:::0;27165:16:::1;:24::i;:::-;27202:20;27225:38;27249:14:::0;27225:21:::1;:38;:::i;:::-;27325:18:::0;;27202:61;;-1:-1:-1;27274:19:0::1;::::0;27311:32:::1;::::0;:11;:32:::1;:::i;:::-;27295:49;::::0;:12;:49:::1;:::i;:::-;27401:18:::0;;27274:70;;-1:-1:-1;27355:29:0::1;::::0;27387:32:::1;::::0;27274:70;27387:32:::1;:::i;:::-;27355:64:::0;-1:-1:-1;27435:25:0;;27432:158:::1;;27517:61;27530:24;27556:21;27517:12;:61::i;:::-;27683:18:::0;;27642:20:::1;::::0;27665:15:::1;:11:::0;27679:1:::1;27665:15;:::i;:::-;:36;;;;:::i;:::-;27642:59:::0;-1:-1:-1;27715:16:0;;27712:93:::1;;27753:16;::::0;27745:48:::1;::::0;-1:-1:-1;;;;;27753:16:0;;::::1;::::0;27745:48;::::1;;;::::0;27780:12;;27753:16:::1;27745:48:::0;27753:16;27745:48;27780:12;27753:16;27745:48;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;27712:93;-1:-1:-1::0;;12101:8:0;:16;;-1:-1:-1;;12101:16:0;;;-1:-1:-1;;;;;;;26737:1075:0:o;25047:1027::-;25171:28;25202:36;25213:7;25222;25231:6;25202:10;:36::i;:::-;-1:-1:-1;;;;;25255:19:0;;;;;;:11;:19;;;;;;25171:67;;-1:-1:-1;25255:19:0;;25251:115;;;-1:-1:-1;;;;;25331:15:0;;;;;;:7;:15;;;;;;:23;;25347:7;;25331:23;:::i;:::-;-1:-1:-1;;;;;25313:15:0;;;;;;:7;:15;;;;;:41;25251:115;-1:-1:-1;;;;;25380:22:0;;;;;;:11;:22;;;;;;;;25376:130;;;25477:17;;;;-1:-1:-1;;;;;25458:18:0;;;;;;:7;:18;;;;;;:36;;25477:17;25458:36;:::i;:::-;-1:-1:-1;;;;;25437:18:0;;;;;;:7;:18;;;;;:57;25376:130;25552:9;;-1:-1:-1;;;;;25536:15:0;;25552:9;25536:15;;;:7;:15;;;;;;:25;;25552:9;25536:25;:::i;:::-;-1:-1:-1;;;;;25518:15:0;;;;;;;:7;:15;;;;;;;;:43;;;;25612:17;;;25593:18;;;;;;;;;;:36;;25612:17;25593:36;:::i;:::-;-1:-1:-1;;;;;25572:18:0;;;;;;:7;:18;;;;;;;:57;;;;25652:6;;;25660;;;;25640:27;;25652:6;25640:11;:27::i;:::-;25678:41;25693:1;:12;;;25706:1;:12;;;25678:14;:41::i;:::-;25732;25747:1;:12;;;25760:1;:12;;;25732:14;:41::i;:::-;25784:27;25794:1;:7;;;25803:1;:7;;;25784:9;:27::i;:::-;25822:36;25835:1;:10;;;25847:1;:10;;;25822:12;:36::i;:::-;25891:9;-1:-1:-1;;;;;25874:46:0;25883:6;-1:-1:-1;;;;;25874:46:0;;25902:1;:17;;;25874:46;;;;1662:25:1;;1650:2;1635:18;;1516:177;25874:46:0;;;;;;;;25961:4;-1:-1:-1;;;;;25936:74:0;25945:6;-1:-1:-1;;;;;25936:74:0;;25998:1;:10;;;25983:1;:12;;;25968:1;:12;;;:27;;;;:::i;:::-;:40;;;;:::i;:::-;25936:74;;1662:25:1;;;1650:2;1635:18;25936:74:0;;;;;;;26043:11;;26056:7;;;;26026:38;;1662:25:1;;;-1:-1:-1;;;;;26043:11:0;;;;26026:38;;;;;1650:2:1;1635:18;26026:38:0;;;;;;;25158:916;25047:1027;;;;;:::o;21892:540::-;21989:7;;22025;;21942;;;;;22043:279;22067:9;:16;22063:20;;22043:279;;;22133:7;22109;:21;22117:9;22127:1;22117:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;22117:12:0;22109:21;;;;;;;;;;;;;:31;;:66;;;22168:7;22144;:21;22152:9;22162:1;22152:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;22152:12:0;22144:21;;;;;;;;;;;;;:31;22109:66;22105:97;;;22185:7;;22194;;22177:25;;;;;;;21892:540;;:::o;22105:97::-;22235:7;:21;22243:9;22253:1;22243:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;22243:12:0;22235:21;;;;;;;;;;;;;22227:29;;:7;:29;:::i;:::-;22217:39;;22289:7;:21;22297:9;22307:1;22297:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;22297:12:0;22289:21;;;;;;;;;;;;;22281:29;;:7;:29;:::i;:::-;22271:39;-1:-1:-1;22085:3:0;;;;:::i;:::-;;;;22043:279;;;;22354:7;;22346;;:15;;;;:::i;:::-;22336:7;:25;22332:56;;;22371:7;;22380;;22363:25;;;;;;21892:540;;:::o;22332:56::-;22407:7;;22416;;-1:-1:-1;21892:540:0;-1:-1:-1;21892:540:0:o;19868:1072::-;19955:28;;:::i;:::-;20002:7;19998:86;;20024:17;;;:27;;;20064:8;;19998:86;20099:6;20096:818;;;20138:12;:16;20155:4;;20130:24;;:7;:24;:::i;:::-;:29;;;;:::i;:::-;20121:6;;;:38;20197:22;;20220:4;;20189:30;;:7;:30;:::i;:::-;:35;;;;:::i;:::-;20174:12;;;:50;20257:17;;20275:4;;20249:25;;:7;:25;:::i;:::-;:30;;;;:::i;:::-;20239:7;;;:40;20317:22;;20340:4;;20309:30;;:7;:30;:::i;:::-;:35;;;;:::i;:::-;20294:12;;;:50;20380:20;;20401:4;;20372:28;;:7;:28;:::i;:::-;:33;;;;:::i;:::-;20359:10;;;:46;;;20476:12;;;;20468:7;;;;20455:12;;;;20448:6;;;;20440:14;;:7;:14;:::i;:::-;:27;;;;:::i;:::-;:35;;;;:::i;:::-;:48;;;;:::i;:::-;:59;;;;:::i;:::-;20420:17;;;:79;20096:818;;;20557:8;:12;20570:4;;20549:20;;:7;:20;:::i;:::-;:25;;;;:::i;:::-;20540:6;;;:34;20612:18;;20631:4;;20604:26;;:7;:26;:::i;:::-;:31;;;;:::i;:::-;20589:12;;;:46;20668:13;;20682:4;;20660:21;;:7;:21;:::i;:::-;:26;;;;:::i;:::-;20650:7;;;:36;20726:18;;20745:4;;20718:26;;:7;:26;:::i;:::-;:31;;;;:::i;:::-;20703:12;;;:46;20785:16;;20802:4;;20777:24;;:7;:24;:::i;:::-;:29;;;;:::i;:::-;20764:10;;;:42;;;20879:12;;;;20871:7;;;;20858:12;;;;20851:6;;;;20843:14;;:7;:14;:::i;:::-;:27;;;;:::i;:::-;:35;;;;:::i;:::-;:48;;;;:::i;:::-;:59;;;;:::i;:::-;20823:17;;;:79;19868:1072;;;;;:::o;20948:770::-;21073:15;;;;;;;21222:19;21230:11;21222:7;:19;:::i;:::-;21212:29;;21258:7;21254:73;;-1:-1:-1;21287:7:0;;-1:-1:-1;21305:1:0;;-1:-1:-1;21305:1:0;;-1:-1:-1;21305:1:0;;-1:-1:-1;21305:1:0;;-1:-1:-1;21305:1:0;21280:35;;21254:73;21353:11;21346:1;:6;;;:18;;;;:::i;:::-;21339:25;;21401:11;21388:1;:12;;;:24;;;;:::i;:::-;21375:37;;21439:11;21431:1;:7;;;:19;;;;:::i;:::-;21423:27;;21487:11;21474:1;:12;;;:24;;;;:::i;:::-;21461:37;;21531:11;21520:1;:10;;;:22;;;;:::i;:::-;21509:33;-1:-1:-1;21509:33:0;21602:10;21596:5;21585:10;21572:12;21580:4;21572:7;:12;:::i;:::-;:23;;;;:::i;:::-;:29;;;;:::i;:::-;:40;;;;:::i;:::-;:49;;;;:::i;:::-;21553:68;;20948:770;;;;;;;;;;;;;:::o;26224:505::-;26369:16;;;26383:1;26369:16;;;;;;;;26345:21;;26369:16;;;;;;;;;;-1:-1:-1;26369:16:0;26345:40;;26406:6;;;;;;;;;-1:-1:-1;;;;;26406:6:0;-1:-1:-1;;;;;26406:11:0;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26396:4;26401:1;26396:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;26396:23:0;;;-1:-1:-1;;;;;26396:23:0;;;;;26448:4;26430;26435:1;26430:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;26430:23:0;;;:7;;;;;;;;;:23;26490:6;;-1:-1:-1;;;26490:6:0;;;:57;26555:6;26577:1;26624:4;10680:42;26685:24;:15;26705:3;26685:19;:24::i;:::-;26490:230;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26274:455;26224:505;:::o;28325:564::-;28475:16;;;28489:1;28475:16;;;;;;;;28451:21;;28475:16;;;;;;;;;;-1:-1:-1;28475:16:0;28451:40;;28520:4;28502;28507:1;28502:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;28502:23:0;;;-1:-1:-1;;;;;28502:23:0;;;;;28546:6;;;;;;;;;-1:-1:-1;;;;;28546:6:0;-1:-1:-1;;;;;28546:11:0;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28536:4;28541:1;28536:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;28536:23:0;;;:7;;;;;;;;;:23;28604:6;;28572:53;;28589:4;;-1:-1:-1;;;28604:6:0;;;28613:11;28572:8;:53::i;:::-;28664:6;;:215;;-1:-1:-1;;;28664:215:0;;-1:-1:-1;;;28664:6:0;;;-1:-1:-1;;;;;28664:6:0;;:57;;:215;;28736:11;;28762:1;;28806:4;;28833;;28853:15;;28664:6;:215;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27822:495;28002:6;;27970:53;;27987:4;;-1:-1:-1;;;28002:6:0;;-1:-1:-1;;;;;28002:6:0;28011:11;27970:8;:53::i;:::-;28066:6;;-1:-1:-1;;;;;;;;28066:6:0;;;;:22;28096:9;28129:4;28149:11;28175:1;;28261:7;7424;7451:6;-1:-1:-1;;;;;7451:6:0;;7378:87;28261:7;28066:243;;;;;;-1:-1:-1;;;;;;28066:243:0;;;-1:-1:-1;;;;;19540:15:1;;;28066:243:0;;;19522:34:1;19572:18;;;19565:34;;;;19615:18;;;19608:34;;;;19658:18;;;19651:34;19722:15;;;19701:19;;;19694:44;28283:15:0;19754:19:1;;;19747:35;19456:19;;28066:243:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;27822:495;;:::o;18196:123::-;18274:4;18264:7;;:14;;;;;;;:::i;:::-;;;;-1:-1:-1;;18289:11:0;:22;;18307:4;;18289:11;:15;;:22;;18307:4;;18289:22;:::i;:::-;;;;-1:-1:-1;;;;18196:123:0:o;18327:275::-;18434:10;18410:11;:21;;;:34;;;;;;;:::i;:::-;;;;-1:-1:-1;;18478:4:0;18458:26;;;;:11;:26;;;;;;;;18455:92;;;18517:4;18501:22;;;;:7;:22;;;;;:34;;18525:10;;18501:22;:34;;18525:10;;18501:34;:::i;:::-;;;;-1:-1:-1;;18455:92:0;18573:4;18557:22;;;;:7;:22;;;;;:35;;18582:10;;18557:22;:35;;18582:10;;18557:35;:::i;18888:284::-;18995:10;18971:11;:21;;;:34;;;;;;;:::i;19180:243::-;19267:5;19248:11;:16;;;:24;;;;;;;:::i;:::-;;;;-1:-1:-1;;19300:11:0;;-1:-1:-1;;;;;19300:11:0;19288:24;;;;:11;:24;;;;;;;;19285:92;;;19346:11;;-1:-1:-1;;;;;19346:11:0;19338:20;;;;:7;:20;;;;;:27;;19360:5;;19338:20;:27;;19360:5;;19338:27;:::i;:::-;;;;-1:-1:-1;;19285:92:0;19395:11;;-1:-1:-1;;;;;19395:11:0;19387:20;;;;:7;:20;;;;;:28;;19410:5;;19387:20;:28;;19410:5;;19387:28;:::i;18610:270::-;18709:8;18687:11;:19;;;:30;;;;;;;:::i;1937:98::-;1995:7;2022:5;2026:1;2022;:5;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:131:1:-;-1:-1:-1;;;;;89:31:1;;79:42;;69:70;;135:1;132;125:12;150:247;209:6;262:2;250:9;241:7;237:23;233:32;230:52;;;278:1;275;268:12;230:52;317:9;304:23;336:31;361:5;336:31;:::i;402:597::-;514:4;543:2;572;561:9;554:21;604:6;598:13;647:6;642:2;631:9;627:18;620:34;672:1;682:140;696:6;693:1;690:13;682:140;;;791:14;;;787:23;;781:30;757:17;;;776:2;753:26;746:66;711:10;;682:140;;;840:6;837:1;834:13;831:91;;;910:1;905:2;896:6;885:9;881:22;877:31;870:42;831:91;-1:-1:-1;983:2:1;962:15;-1:-1:-1;;958:29:1;943:45;;;;990:2;939:54;;402:597;-1:-1:-1;;;402:597:1:o;1004:315::-;1072:6;1080;1133:2;1121:9;1112:7;1108:23;1104:32;1101:52;;;1149:1;1146;1139:12;1101:52;1188:9;1175:23;1207:31;1232:5;1207:31;:::i;:::-;1257:5;1309:2;1294:18;;;;1281:32;;-1:-1:-1;;;1004:315:1:o;2166:456::-;2243:6;2251;2259;2312:2;2300:9;2291:7;2287:23;2283:32;2280:52;;;2328:1;2325;2318:12;2280:52;2367:9;2354:23;2386:31;2411:5;2386:31;:::i;:::-;2436:5;-1:-1:-1;2493:2:1;2478:18;;2465:32;2506:33;2465:32;2506:33;:::i;:::-;2166:456;;2558:7;;-1:-1:-1;;;2612:2:1;2597:18;;;;2584:32;;2166:456::o;2835:180::-;2894:6;2947:2;2935:9;2926:7;2922:23;2918:32;2915:52;;;2963:1;2960;2953:12;2915:52;-1:-1:-1;2986:23:1;;2835:180;-1:-1:-1;2835:180:1:o;3209:118::-;3295:5;3288:13;3281:21;3274:5;3271:32;3261:60;;3317:1;3314;3307:12;3332:309;3397:6;3405;3458:2;3446:9;3437:7;3433:23;3429:32;3426:52;;;3474:1;3471;3464:12;3426:52;3510:9;3497:23;3487:33;;3570:2;3559:9;3555:18;3542:32;3583:28;3605:5;3583:28;:::i;:::-;3630:5;3620:15;;;3332:309;;;;;:::o;3646:454::-;3741:6;3749;3757;3765;3773;3826:3;3814:9;3805:7;3801:23;3797:33;3794:53;;;3843:1;3840;3833:12;3794:53;-1:-1:-1;;3866:23:1;;;3936:2;3921:18;;3908:32;;-1:-1:-1;3987:2:1;3972:18;;3959:32;;4038:2;4023:18;;4010:32;;-1:-1:-1;4089:3:1;4074:19;4061:33;;-1:-1:-1;3646:454:1;-1:-1:-1;3646:454:1:o;4105:241::-;4161:6;4214:2;4202:9;4193:7;4189:23;4185:32;4182:52;;;4230:1;4227;4220:12;4182:52;4269:9;4256:23;4288:28;4310:5;4288:28;:::i;4351:248::-;4419:6;4427;4480:2;4468:9;4459:7;4455:23;4451:32;4448:52;;;4496:1;4493;4486:12;4448:52;-1:-1:-1;;4519:23:1;;;4589:2;4574:18;;;4561:32;;-1:-1:-1;4351:248:1:o;4604:388::-;4672:6;4680;4733:2;4721:9;4712:7;4708:23;4704:32;4701:52;;;4749:1;4746;4739:12;4701:52;4788:9;4775:23;4807:31;4832:5;4807:31;:::i;:::-;4857:5;-1:-1:-1;4914:2:1;4899:18;;4886:32;4927:33;4886:32;4927:33;:::i;4997:382::-;5062:6;5070;5123:2;5111:9;5102:7;5098:23;5094:32;5091:52;;;5139:1;5136;5129:12;5091:52;5178:9;5165:23;5197:31;5222:5;5197:31;:::i;:::-;5247:5;-1:-1:-1;5304:2:1;5289:18;;5276:32;5317:30;5276:32;5317:30;:::i;5607:356::-;5809:2;5791:21;;;5828:18;;;5821:30;5887:34;5882:2;5867:18;;5860:62;5954:2;5939:18;;5607:356::o;5968:184::-;6038:6;6091:2;6079:9;6070:7;6066:23;6062:32;6059:52;;;6107:1;6104;6097:12;6059:52;-1:-1:-1;6130:16:1;;5968:184;-1:-1:-1;5968:184:1:o;6436:245::-;6503:6;6556:2;6544:9;6535:7;6531:23;6527:32;6524:52;;;6572:1;6569;6562:12;6524:52;6604:9;6598:16;6623:28;6645:5;6623:28;:::i;7097:127::-;7158:10;7153:3;7149:20;7146:1;7139:31;7189:4;7186:1;7179:15;7213:4;7210:1;7203:15;7229:217;7269:1;7295;7285:132;;7339:10;7334:3;7330:20;7327:1;7320:31;7374:4;7371:1;7364:15;7402:4;7399:1;7392:15;7285:132;-1:-1:-1;7431:9:1;;7229:217::o;7803:127::-;7864:10;7859:3;7855:20;7852:1;7845:31;7895:4;7892:1;7885:15;7919:4;7916:1;7909:15;7935:125;7975:4;8003:1;8000;7997:8;7994:34;;;8008:18;;:::i;:::-;-1:-1:-1;8045:9:1;;7935:125::o;8065:127::-;8126:10;8121:3;8117:20;8114:1;8107:31;8157:4;8154:1;8147:15;8181:4;8178:1;8171:15;8197:135;8236:3;8257:17;;;8254:43;;8277:18;;:::i;:::-;-1:-1:-1;8324:1:1;8313:13;;8197:135::o;8337:128::-;8377:3;8408:1;8404:6;8401:1;8398:13;8395:39;;;8414:18;;:::i;:::-;-1:-1:-1;8450:9:1;;8337:128::o;9230:251::-;9300:6;9353:2;9341:9;9332:7;9328:23;9324:32;9321:52;;;9369:1;9366;9359:12;9321:52;9401:9;9395:16;9420:31;9445:5;9420:31;:::i;10864:168::-;10904:7;10970:1;10966;10962:6;10958:14;10955:1;10952:21;10947:1;10940:9;10933:17;10929:45;10926:71;;;10977:18;;:::i;:::-;-1:-1:-1;11017:9:1;;10864:168::o;11037:422::-;11126:1;11169:5;11126:1;11183:270;11204:7;11194:8;11191:21;11183:270;;;11263:4;11259:1;11255:6;11251:17;11245:4;11242:27;11239:53;;;11272:18;;:::i;:::-;11322:7;11312:8;11308:22;11305:55;;;11342:16;;;;11305:55;11421:22;;;;11381:15;;;;11183:270;;;11187:3;11037:422;;;;;:::o;11464:806::-;11513:5;11543:8;11533:80;;-1:-1:-1;11584:1:1;11598:5;;11533:80;11632:4;11622:76;;-1:-1:-1;11669:1:1;11683:5;;11622:76;11714:4;11732:1;11727:59;;;;11800:1;11795:130;;;;11707:218;;11727:59;11757:1;11748:10;;11771:5;;;11795:130;11832:3;11822:8;11819:17;11816:43;;;11839:18;;:::i;:::-;-1:-1:-1;;11895:1:1;11881:16;;11910:5;;11707:218;;12009:2;11999:8;11996:16;11990:3;11984:4;11981:13;11977:36;11971:2;11961:8;11958:16;11953:2;11947:4;11944:12;11940:35;11937:77;11934:159;;;-1:-1:-1;12046:19:1;;;12078:5;;11934:159;12125:34;12150:8;12144:4;12125:34;:::i;:::-;12195:6;12191:1;12187:6;12183:19;12174:7;12171:32;12168:58;;;12206:18;;:::i;:::-;12244:20;;11464:806;-1:-1:-1;;;11464:806:1:o;12275:140::-;12333:5;12362:47;12403:4;12393:8;12389:19;12383:4;12362:47;:::i;17613:461::-;17666:3;17704:5;17698:12;17731:6;17726:3;17719:19;17757:4;17786:2;17781:3;17777:12;17770:19;;17823:2;17816:5;17812:14;17844:1;17854:195;17868:6;17865:1;17862:13;17854:195;;;17933:13;;-1:-1:-1;;;;;17929:39:1;17917:52;;17989:12;;;;18024:15;;;;17965:1;17883:9;17854:195;;;-1:-1:-1;18065:3:1;;17613:461;-1:-1:-1;;;;;17613:461:1:o;18079:510::-;18350:6;18339:9;18332:25;18393:3;18388:2;18377:9;18373:18;18366:31;18313:4;18414:57;18466:3;18455:9;18451:19;18443:6;18414:57;:::i;:::-;-1:-1:-1;;;;;18507:32:1;;;;18502:2;18487:18;;18480:60;-1:-1:-1;18571:2:1;18556:18;18549:34;18406:65;18079:510;-1:-1:-1;;18079:510:1:o;18594:582::-;18893:6;18882:9;18875:25;18936:6;18931:2;18920:9;18916:18;18909:34;18979:3;18974:2;18963:9;18959:18;18952:31;18856:4;19000:57;19052:3;19041:9;19037:19;19029:6;19000:57;:::i;:::-;-1:-1:-1;;;;;19093:32:1;;;;19088:2;19073:18;;19066:60;-1:-1:-1;19157:3:1;19142:19;19135:35;18992:65;18594:582;-1:-1:-1;;;18594:582:1:o;19793:306::-;19881:6;19889;19897;19950:2;19938:9;19929:7;19925:23;19921:32;19918:52;;;19966:1;19963;19956:12;19918:52;19995:9;19989:16;19979:26;;20045:2;20034:9;20030:18;20024:25;20014:35;;20089:2;20078:9;20074:18;20068:25;20058:35;;19793:306;;;;;:::o
Swarm Source
ipfs://082e42fb37c7e35a1e90c181703fe8f1a23e8d9b0f7d68c2986d8a8b8b1f8667
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.