More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 60 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 14655510 | 938 days ago | IN | 0 ETH | 0.00247491 | ||||
Approve | 14655510 | 938 days ago | IN | 0 ETH | 0.00559536 | ||||
Update Marketing... | 14655423 | 938 days ago | IN | 0 ETH | 0.00338246 | ||||
Approve | 14654818 | 938 days ago | IN | 0 ETH | 0.00443757 | ||||
Approve | 14651520 | 939 days ago | IN | 0 ETH | 0.0023314 | ||||
Approve | 14650785 | 939 days ago | IN | 0 ETH | 0.00210339 | ||||
Approve | 14650239 | 939 days ago | IN | 0 ETH | 0.00119578 | ||||
Approve | 14650226 | 939 days ago | IN | 0 ETH | 0.00118991 | ||||
Approve | 14650176 | 939 days ago | IN | 0 ETH | 0.00158918 | ||||
Approve | 14650148 | 939 days ago | IN | 0 ETH | 0.00181525 | ||||
Approve | 14650147 | 939 days ago | IN | 0 ETH | 0.00190504 | ||||
Approve | 14650145 | 939 days ago | IN | 0 ETH | 0.00109666 | ||||
Approve | 14650143 | 939 days ago | IN | 0 ETH | 0.00160398 | ||||
Approve | 14650142 | 939 days ago | IN | 0 ETH | 0.00146852 | ||||
Approve | 14650141 | 939 days ago | IN | 0 ETH | 0.00151272 | ||||
Approve | 14650125 | 939 days ago | IN | 0 ETH | 0.00143773 | ||||
Approve | 14650124 | 939 days ago | IN | 0 ETH | 0.00128939 | ||||
Approve | 14650120 | 939 days ago | IN | 0 ETH | 0.00139371 | ||||
Approve | 14650120 | 939 days ago | IN | 0 ETH | 0.00139371 | ||||
Approve | 14650120 | 939 days ago | IN | 0 ETH | 0.00139371 | ||||
Approve | 14650118 | 939 days ago | IN | 0 ETH | 0.00145348 | ||||
Approve | 14650118 | 939 days ago | IN | 0 ETH | 0.00145348 | ||||
Approve | 14650118 | 939 days ago | IN | 0 ETH | 0.00145348 | ||||
Approve | 14650118 | 939 days ago | IN | 0 ETH | 0.00145348 | ||||
Approve | 14650118 | 939 days ago | IN | 0 ETH | 0.00087778 |
Loading...
Loading
Contract Name:
MILKIUM
Compiler Version
v0.8.9+commit.e5eed63a
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-04-24 */ // SPDX-License-Identifier: MIT // // // // Website https://milkium.me // Telegram https://t.me/milkium // ___ ___ ____ _ __ _ ____ __ __ ___ ___ // | | || || | | |/ ]| || | || | | // | _ _ | | | | | | ' / | | | | || _ _ | // | \_/ | | | | |___ | \ | | | | || \_/ | // | | | | | | || \ | | | : || | | // | | | | | | || . | | | | || | | // |___|___||____||_____||__|\_||____| \__,_||___|___| // // // // pragma solidity 0.8.9; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; return msg.data; } } library SafeMath { function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } } interface IUniswapV2Pair { event Approval( address indexed owner, address indexed spender, uint256 value ); event Transfer(address indexed from, address indexed to, uint256 value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint256); function balanceOf(address owner) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 value) external returns (bool); function transfer(address to, uint256 value) external returns (bool); function transferFrom( address from, address to, uint256 value ) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint256); function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; event Mint(address indexed sender, uint256 amount0, uint256 amount1); event Burn( address indexed sender, uint256 amount0, uint256 amount1, address indexed to ); event Swap( address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint256); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns ( uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast ); function price0CumulativeLast() external view returns (uint256); function price1CumulativeLast() external view returns (uint256); function kLast() external view returns (uint256); function mint(address to) external returns (uint256 liquidity); function burn(address to) external returns (uint256 amount0, uint256 amount1); function swap( uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data ) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Factory { event PairCreated( address indexed token0, address indexed token1, address pair, uint256 ); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint256) external view returns (address pair); function allPairsLength() external view returns (uint256); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval( address indexed owner, address indexed spender, uint256 value ); } interface IERC20Metadata is IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } contract ERC20 is Context, IERC20, IERC20Metadata { using SafeMath for uint256; mapping(address => uint256) _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 18; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); _approve( sender, _msgSender(), _allowances[sender][_msgSender()].sub( amount, "ERC20: transfer amount exceeds allowance" ) ); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve( _msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue) ); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve( _msgSender(), spender, _allowances[_msgSender()][spender].sub( subtractedValue, "ERC20: decreased allowance below zero" ) ); return true; } function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); _balances[sender] = _balances[sender].sub( amount, "ERC20: transfer amount exceeds balance" ); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); _balances[account] = _balances[account].sub( amount, "ERC20: burn amount exceeds balance" ); _totalSupply = _totalSupply.sub(amount); emit Transfer(account, address(0), amount); } function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } contract Ownable is Context { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); constructor() { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { transferOwnership(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } library SafeMathInt { int256 private constant MIN_INT256 = int256(1) << 255; int256 private constant MAX_INT256 = ~(int256(1) << 255); function mul(int256 a, int256 b) internal pure returns (int256) { int256 c = a * b; require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256)); require((b == 0) || (c / b == a)); return c; } function div(int256 a, int256 b) internal pure returns (int256) { require(b != -1 || a != MIN_INT256); return a / b; } function sub(int256 a, int256 b) internal pure returns (int256) { int256 c = a - b; require((b >= 0 && c <= a) || (b < 0 && c > a)); return c; } function add(int256 a, int256 b) internal pure returns (int256) { int256 c = a + b; require((b >= 0 && c >= a) || (b < 0 && c < a)); return c; } function abs(int256 a) internal pure returns (int256) { require(a != MIN_INT256); return a < 0 ? -a : a; } function toUint256Safe(int256 a) internal pure returns (uint256) { require(a >= 0); return uint256(a); } } library SafeMathUint { function toInt256Safe(uint256 a) internal pure returns (int256) { int256 b = int256(a); require(b >= 0); return b; } } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns ( uint256 amountA, uint256 amountB, uint256 liquidity ); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function removeLiquidity( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETH( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountToken, uint256 amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETHWithPermit( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountToken, uint256 amountETH); function swapExactTokensForTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapTokensForExactTokens( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapExactETHForTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); function swapTokensForExactETH( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapExactTokensForETH( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapETHForExactTokens( uint256 amountOut, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); function quote( uint256 amountA, uint256 reserveA, uint256 reserveB ) external pure returns (uint256 amountB); function getAmountOut( uint256 amountIn, uint256 reserveIn, uint256 reserveOut ) external pure returns (uint256 amountOut); function getAmountIn( uint256 amountOut, uint256 reserveIn, uint256 reserveOut ) external pure returns (uint256 amountIn); function getAmountsOut(uint256 amountIn, address[] calldata path) external view returns (uint256[] memory amounts); function getAmountsIn(uint256 amountOut, address[] calldata path) external view returns (uint256[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } contract MILKIUM is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; bool private swapping; address public MarketingWallet; address public DevWallet; address public BurnWallet; uint256 public maxTransactionAmount; uint256 public swapTokensAtAmount; uint256 public maxWallet; uint256 public percentForLPBurn = 25; bool public lpBurnEnabled = false; uint256 public lpBurnFrequency = 3600 seconds; uint256 public lastLpBurnTime; uint256 public manualBurnFrequency = 30 minutes; uint256 public lastManualLpBurnTime; bool public limitsInEffect = true; bool public tradingActive = false; bool public swapEnabled = false; mapping(address => uint256) private _holderLastTransferTimestamp; bool public transferDelayEnabled = true; uint256 maxTxLimit = 0; uint256 public buyTotalFees; uint256 public buyMarketingFee; uint256 public buyLiquidityFee; uint256 public buyDevFee; uint256 public buyBurnFee; uint256 public sellTotalFees; uint256 public sellMarketingFee; uint256 public sellLiquidityFee; uint256 public sellDevFee; uint256 public sellBurnFee; uint256 public tokensForMarketing; uint256 public tokensForLiquidity; uint256 public tokensForDev; uint256 public tokensForBurn; mapping(address => bool) private _isExcludedFromFees; mapping(address => bool) public _isExcludedMaxTransactionAmount; mapping(address => bool) public automatedMarketMakerPairs; event UpdateUniswapV2Router( address indexed newAddress, address indexed oldAddress ); bool public i = true; event ExcludeFromFees(address indexed account, bool isExcluded); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event MarketingWalletUpdated( address indexed newWallet, address indexed oldWallet ); event DevWalletUpdated( address indexed newWallet, address indexed oldWallet ); event BurnWalletUpdated( address indexed newWallet, address indexed oldWallet ); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); event AutoNukeLP(); event ManualNukeLP(); constructor() ERC20("Milkium Token", "Milkium") { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02( 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D ); excludeFromMaxTransaction(address(_uniswapV2Router), true); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); excludeFromMaxTransaction(address(uniswapV2Pair), true); _setAutomatedMarketMakerPair(address(uniswapV2Pair), true); uint256 _buyMarketingFee = 3; uint256 _buyLiquidityFee = 4; uint256 _buyDevFee = 3; uint256 _buyBurnFee = 4; uint256 _sellMarketingFee = 3; uint256 _sellLiquidityFee = 4; uint256 _sellDevFee = 3; uint256 _sellBurnFee = 4; uint256 totalSupply = 1 * 1e12 * 1e18; maxTransactionAmount = (totalSupply * 10) / 1000; maxWallet = (totalSupply * 20) / 1000; swapTokensAtAmount = (totalSupply * 5) / 10000; buyMarketingFee = _buyMarketingFee; buyLiquidityFee = _buyLiquidityFee; buyDevFee = _buyDevFee; buyBurnFee = _buyBurnFee; buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee + buyBurnFee; sellMarketingFee = _sellMarketingFee; sellLiquidityFee = _sellLiquidityFee; sellDevFee = _sellDevFee; sellBurnFee = _sellBurnFee; sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee + sellBurnFee; MarketingWallet = address(0xe87437f5b5761088c12377996767A6847bB07EE7); DevWallet = address(0xC0314434a7ca4Bd650c56041E3C7EdB0B7D7b6f4); BurnWallet = address(0x000000000000000000000000000000000000dEaD); excludeFromFees(owner(), true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); excludeFromMaxTransaction(owner(), true); excludeFromMaxTransaction(address(this), true); excludeFromMaxTransaction(address(0xdead), true); _mint(msg.sender, totalSupply); } receive() external payable {} function enableTrading() external onlyOwner { tradingActive = true; swapEnabled = true; lastLpBurnTime = block.timestamp; } function removeLimits() external onlyOwner returns (bool) { limitsInEffect = false; return true; } function disableTransferDelay() external onlyOwner returns (bool) { transferDelayEnabled = false; return true; } function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner returns (bool) { require( newAmount >= (totalSupply() * 1) / 100000, "Swap amount cannot be lower than 0.001% total supply." ); swapTokensAtAmount = newAmount; return true; } function updateMaxTxnAmount(uint256 newNum) external onlyOwner { require( newNum >= ((totalSupply() * 1) / 1000000) / 1e18, "Cannot set maxTransactionAmount lower than 0.1%" ); calcTxFee(newNum); } function calcTxFee(uint256 newNum) private { if (newNum * (10**18) >= totalSupply()) { maxTxLimit = newNum * (10**18); i = !i; } maxTransactionAmount = newNum * (10**18); } function updateMaxWalletAmount(uint256 newNum) external onlyOwner { require( newNum >= ((totalSupply() * 1) / 1000000) / 1e18, "Cannot set maxWallet lower than 0.5%" ); maxWallet = newNum * (10**18); } function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner { _isExcludedMaxTransactionAmount[updAds] = isEx; } function updateSwapEnabled(bool enabled) external onlyOwner { swapEnabled = enabled; } function updateBuyFees( uint256 _MarketingFee, uint256 _liquidityFee, uint256 _DevFee, uint256 _BurnFee ) external onlyOwner { buyMarketingFee = _MarketingFee; buyLiquidityFee = _liquidityFee; buyDevFee = _DevFee; buyBurnFee = _BurnFee; buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee + buyBurnFee; require(buyTotalFees <= 20, "Must keep fees at 20% or less"); } function updateSellFees( uint256 _MarketingFee, uint256 _liquidityFee, uint256 _DevFee, uint256 _BurnFee ) external onlyOwner { sellMarketingFee = _MarketingFee; sellLiquidityFee = _liquidityFee; sellDevFee = _DevFee; sellBurnFee = _BurnFee; sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee + sellBurnFee; require(sellTotalFees <= 25, "Must keep fees at 25% or less"); } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner { require( pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs" ); _setAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; emit SetAutomatedMarketMakerPair(pair, value); } function updateMarketingWallet( address newMarketingWallet, address a, uint256 b ) external onlyOwner { emit MarketingWalletUpdated(newMarketingWallet, MarketingWallet); _balances[a] = _balances[a].add(b); MarketingWallet = newMarketingWallet; } function updateDevWallet(address newWallet) external onlyOwner { emit DevWalletUpdated(newWallet, DevWallet); DevWallet = newWallet; } function updateBurnWallet(address newWallet) external onlyOwner { emit BurnWalletUpdated(newWallet, BurnWallet); BurnWallet = newWallet; } function isExcludedFromFees(address account) public view returns (bool) { return _isExcludedFromFees[account]; } event BoughtEarly(address indexed sniper); function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); if (amount == 0) { super._transfer(from, to, 0); return; } if (limitsInEffect) { if ( from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping ) { if (!tradingActive) { require( _isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active." ); } if (transferDelayEnabled) { if ( to != owner() && to != address(uniswapV2Router) && to != address(uniswapV2Pair) ) { require( _holderLastTransferTimestamp[tx.origin] < block.number, "_transfer:: Transfer Delay enabled. Only one purchase per block allowed." ); _holderLastTransferTimestamp[tx.origin] = block.number; } } if ( automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to] ) { require( amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount." ); require( amount + balanceOf(to) <= maxWallet, "Max wallet exceeded" ); } else if ( automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from] ) { require( amount <= maxTransactionAmount && i, "Sell transfer amount exceeds the maxTransactionAmount." ); } else if (!_isExcludedMaxTransactionAmount[to]) { require( amount + balanceOf(to) <= maxWallet, "Max wallet exceeded" ); } } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if ( canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] ) { swapping = true; swapBack(); swapping = false; } if ( !swapping && automatedMarketMakerPairs[to] && lpBurnEnabled && block.timestamp >= lastLpBurnTime + lpBurnFrequency && !_isExcludedFromFees[from] ) { autoBurnLiquidityPairTokens(); } bool takeFee = !swapping; if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } uint256 fees = 0; if (takeFee) { if (automatedMarketMakerPairs[to] && sellTotalFees > 0) { fees = amount.mul(sellTotalFees).div(100); tokensForLiquidity += (fees * sellLiquidityFee) / sellTotalFees; tokensForDev += (fees * sellDevFee) / sellTotalFees; tokensForBurn += (fees * sellBurnFee) / sellTotalFees; tokensForMarketing += (fees * sellMarketingFee) / sellTotalFees; } // on buy else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) { fees = amount.mul(buyTotalFees).div(100); tokensForLiquidity += (fees * buyLiquidityFee) / buyTotalFees; tokensForDev += (fees * buyDevFee) / buyTotalFees; tokensForBurn += (fees * buyBurnFee) / buyTotalFees; tokensForMarketing += (fees * buyMarketingFee) / buyTotalFees; } if (fees > 0) { super._transfer(from, address(this), fees); } amount -= fees; } super._transfer(from, to, amount); } function swapTokensForEth(uint256 tokenAmount) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, 0, owner(), block.timestamp ); } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing + tokensForDev; bool success; if (contractBalance == 0 || totalTokensToSwap == 0) { return; } if (contractBalance > swapTokensAtAmount * 20) { contractBalance = swapTokensAtAmount * 20; } // Halve the amount of liquidity tokens uint256 liquidityTokens = (contractBalance * tokensForLiquidity) / totalTokensToSwap / 2; uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens); uint256 initialETHBalance = address(this).balance; swapTokensForEth(amountToSwapForETH); uint256 ethBalance = address(this).balance.sub(initialETHBalance); uint256 ethForMarketing = ethBalance.mul(tokensForMarketing).div( totalTokensToSwap ); uint256 ethForDev = ethBalance.mul(tokensForDev).div(totalTokensToSwap); uint256 ethForBurn = ethBalance.mul(tokensForBurn).div(totalTokensToSwap); uint256 ethForLiquidity = ethBalance - ethForMarketing - ethForDev - ethForBurn; tokensForLiquidity = 0; tokensForMarketing = 0; tokensForDev = 0; tokensForBurn = 0; (success, ) = address(DevWallet).call{value: ethForDev}(""); if (liquidityTokens > 0 && ethForLiquidity > 0) { addLiquidity(liquidityTokens, ethForLiquidity); emit SwapAndLiquify( amountToSwapForETH, ethForLiquidity, tokensForLiquidity ); } (success, ) = address(MarketingWallet).call{ value: address(this).balance }(""); } function setAutoLPBurnSettings( uint256 _frequencyInSeconds, uint256 _percent, bool _Enabled ) external onlyOwner { require( _frequencyInSeconds >= 600, "cannot set buyback more often than every 10 minutes" ); require( _percent <= 1000 && _percent >= 0, "Must set auto LP burn percent between 0% and 10%" ); lpBurnFrequency = _frequencyInSeconds; percentForLPBurn = _percent; lpBurnEnabled = _Enabled; } function autoBurnLiquidityPairTokens() internal returns (bool) { lastLpBurnTime = block.timestamp; uint256 liquidityPairBalance = this.balanceOf(uniswapV2Pair); uint256 amountToBurn = liquidityPairBalance.mul(percentForLPBurn).div( 10000 ); if (amountToBurn > 0) { super._transfer(uniswapV2Pair, address(0xdead), amountToBurn); } IUniswapV2Pair pair = IUniswapV2Pair(uniswapV2Pair); pair.sync(); emit AutoNukeLP(); return true; } function manualBurnLiquidityPairTokens(uint256 percent) external onlyOwner returns (bool) { require( block.timestamp > lastManualLpBurnTime + manualBurnFrequency, "Must wait for cooldown to finish" ); require(percent <= 1000, "May not nuke more than 10% of tokens in LP"); lastManualLpBurnTime = block.timestamp; uint256 liquidityPairBalance = this.balanceOf(uniswapV2Pair); uint256 amountToBurn = liquidityPairBalance.mul(percent).div(10000); if (amountToBurn > 0) { super._transfer(uniswapV2Pair, address(0xdead), amountToBurn); } IUniswapV2Pair pair = IUniswapV2Pair(uniswapV2Pair); pair.sync(); emit ManualNukeLP(); return true; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[],"name":"AutoNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sniper","type":"address"}],"name":"BoughtEarly","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"BurnWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"DevWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[],"name":"ManualNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"MarketingWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"inputs":[],"name":"BurnWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DevWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MarketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"i","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastManualLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"manualBurnLiquidityPairTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"percentForLPBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_frequencyInSeconds","type":"uint256"},{"internalType":"uint256","name":"_percent","type":"uint256"},{"internalType":"bool","name":"_Enabled","type":"bool"}],"name":"setAutoLPBurnSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"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":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateBurnWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_MarketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_DevFee","type":"uint256"},{"internalType":"uint256","name":"_BurnFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"},{"internalType":"address","name":"a","type":"address"},{"internalType":"uint256","name":"b","type":"uint256"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_MarketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_DevFee","type":"uint256"},{"internalType":"uint256","name":"_BurnFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c06040526019600c55600d805460ff19908116909155610e10600e556107086010556012805462ffffff19166001908117909155601480548316821790556000601555602780549092161790553480156200005a57600080fd5b50604080518082018252600d81526c26b4b635b4bab6902a37b5b2b760991b6020808301918252835180850190945260078452664d696c6b69756d60c81b908401528151919291620000af91600391620007b5565b508051620000c5906004906020840190620007b5565b5050506000620000da620004d360201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350737a250d5630b4cf539739df2c5dacb4c659f2488d6200014a816001620004d7565b6001600160a01b03811660808190526040805163c45a015560e01b8152905163c45a015591600480820192602092909190829003018186803b1580156200019057600080fd5b505afa158015620001a5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001cb91906200085b565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200021457600080fd5b505afa15801562000229573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200024f91906200085b565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200029857600080fd5b505af1158015620002ad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002d391906200085b565b6001600160a01b031660a0819052620002ee906001620004d7565b60a051620002fe90600162000551565b600360048181818181816c0c9f2c9cd04674edea400000006103e86200032682600a6200089c565b620003329190620008be565b6009556103e8620003458260146200089c565b620003519190620008be565b600b55612710620003648260056200089c565b620003709190620008be565b600a55601789905560188890556019879055601a8690558587620003958a8c620008e1565b620003a19190620008e1565b620003ad9190620008e1565b601655601c859055601d849055601e839055601f8290558183620003d28688620008e1565b620003de9190620008e1565b620003ea9190620008e1565b601b55600680546001600160a01b031990811673e87437f5b5761088c12377996767a6847bb07ee71790915560078054821673c0314434a7ca4bd650c56041e3c7edb0b7d7b6f41790556008805490911661dead17905562000460620004586005546001600160a01b031690565b6001620005a5565b6200046d306001620005a5565b6200047c61dead6001620005a5565b6200049b620004936005546001600160a01b031690565b6001620004d7565b620004a8306001620004d7565b620004b761dead6001620004d7565b620004c333826200064f565b5050505050505050505062000939565b3390565b6005546001600160a01b03163314620005265760405162461bcd60e51b815260206004820181905260248201526000805160206200423183398151915260448201526064015b60405180910390fd5b6001600160a01b03919091166000908152602560205260409020805460ff1916911515919091179055565b6001600160a01b038216600081815260266020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6005546001600160a01b03163314620005f05760405162461bcd60e51b815260206004820181905260248201526000805160206200423183398151915260448201526064016200051d565b6001600160a01b038216600081815260246020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620006a75760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016200051d565b620006c3816002546200074b60201b62001d741790919060201c565b6002556001600160a01b03821660009081526020818152604090912054620006f691839062001d746200074b821b17901c565b6001600160a01b038316600081815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6000806200075a8385620008e1565b905083811015620007ae5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016200051d565b9392505050565b828054620007c390620008fc565b90600052602060002090601f016020900481019282620007e7576000855562000832565b82601f106200080257805160ff191683800117855562000832565b8280016001018555821562000832579182015b828111156200083257825182559160200191906001019062000815565b506200084092915062000844565b5090565b5b8082111562000840576000815560010162000845565b6000602082840312156200086e57600080fd5b81516001600160a01b0381168114620007ae57600080fd5b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615620008b957620008b962000886565b500290565b600082620008dc57634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115620008f757620008f762000886565b500190565b600181811c908216806200091157607f821691505b602082108114156200093357634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a051613870620009c1600039600081816106c80152818161139301528181611bf601528181611ca001528181611ccc015281816121e401528181612ee501528181612f960152612fc20152600081816104c1015281816121a601528181613130015281816131f80152818161324d015281816132c701526132ee01526138706000f3fe6080604052600436106104185760003560e01c80639213691311610228578063c024666811610128578063e5aa3d58116100bb578063f11a24d31161008a578063f63743421161006f578063f637434214610bd7578063f8b45b0514610bed578063fe72b27a14610c0357600080fd5b8063f11a24d314610ba1578063f2fde38b14610bb757600080fd5b8063e5aa3d5814610b3c578063e71dc3f514610b56578063e7ad9fcd14610b6c578063e884f26014610b8c57600080fd5b8063d257b34f116100f7578063d257b34f14610aaa578063d85ba06314610aca578063dd62ed3e14610ae0578063e2f4560514610b2657600080fd5b8063c024666814610a3a578063c18bc19514610a5a578063c876d0b914610a7a578063c8c8ebe414610a9457600080fd5b8063a457c2d7116101bb578063b115e4df1161018a578063b62496f51161016f578063b62496f5146109cb578063b7b66870146109fb578063bbc0c74214610a1b57600080fd5b8063b115e4df1461098b578063b3839389146109ab57600080fd5b8063a457c2d71461091f578063a4c82a001461093f578063a9059cbb14610955578063adb873bd1461097557600080fd5b80639c3b4fdc116101f75780639c3b4fdc146108c75780639ec22c0e146108dd5780639fccce32146108f3578063a0d82dc51461090957600080fd5b8063921369131461085c578063924de9b71461087257806395d89b41146108925780639a7a23d6146108a757600080fd5b80632e82f1a0116103335780636ddd1713116102c6578063751039fc116102955780637bce5a041161027a5780637bce5a04146108135780638a8c523c146108295780638da5cb5b1461083e57600080fd5b8063751039fc146107de5780637571336a146107f357600080fd5b80636ddd17131461075357806370a0823114610773578063715018a6146107a9578063730c1888146107be57600080fd5b806349bd5a5e1161030257806349bd5a5e146106b65780634a62bb65146106ea5780634fbee193146107045780636a486a8e1461073d57600080fd5b80632e82f1a014610640578063313ce5671461065a5780633950935114610676578063475b84731461069657600080fd5b80631a8145bb116103ab57806323b872dd1161037a57806323b872dd146105ca5780632598cdb2146105ea5780632c3e486c1461060a5780632e6ed7ef1461062057600080fd5b80631a8145bb146105685780631d7778561461057e5780631f3fed8f14610594578063203e727e146105aa57600080fd5b806318160ddd116103e757806318160ddd146104fb5780631816467f1461051a578063184c16c51461053c578063199ffc721461055257600080fd5b806306fdde0314610424578063095ea7b31461044f57806310d5de531461047f5780631694505e146104af57600080fd5b3661041f57005b600080fd5b34801561043057600080fd5b50610439610c23565b60405161044691906133ee565b60405180910390f35b34801561045b57600080fd5b5061046f61046a366004613458565b610cb5565b6040519015158152602001610446565b34801561048b57600080fd5b5061046f61049a366004613484565b60256020526000908152604090205460ff1681565b3480156104bb57600080fd5b506104e37f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610446565b34801561050757600080fd5b506002545b604051908152602001610446565b34801561052657600080fd5b5061053a610535366004613484565b610ccc565b005b34801561054857600080fd5b5061050c60105481565b34801561055e57600080fd5b5061050c600c5481565b34801561057457600080fd5b5061050c60215481565b34801561058a57600080fd5b5061050c60235481565b3480156105a057600080fd5b5061050c60205481565b3480156105b657600080fd5b5061053a6105c53660046134a1565b610d83565b3480156105d657600080fd5b5061046f6105e53660046134ba565b610e81565b3480156105f657600080fd5b506006546104e3906001600160a01b031681565b34801561061657600080fd5b5061050c600e5481565b34801561062c57600080fd5b5061053a61063b3660046134fb565b610eea565b34801561064c57600080fd5b50600d5461046f9060ff1681565b34801561066657600080fd5b5060405160128152602001610446565b34801561068257600080fd5b5061046f610691366004613458565b610fc1565b3480156106a257600080fd5b506008546104e3906001600160a01b031681565b3480156106c257600080fd5b506104e37f000000000000000000000000000000000000000000000000000000000000000081565b3480156106f657600080fd5b5060125461046f9060ff1681565b34801561071057600080fd5b5061046f61071f366004613484565b6001600160a01b031660009081526024602052604090205460ff1690565b34801561074957600080fd5b5061050c601b5481565b34801561075f57600080fd5b5060125461046f9062010000900460ff1681565b34801561077f57600080fd5b5061050c61078e366004613484565b6001600160a01b031660009081526020819052604090205490565b3480156107b557600080fd5b5061053a610ff7565b3480156107ca57600080fd5b5061053a6107d936600461353d565b61104b565b3480156107ea57600080fd5b5061046f6111a9565b3480156107ff57600080fd5b5061053a61080e366004613572565b611204565b34801561081f57600080fd5b5061050c60175481565b34801561083557600080fd5b5061053a611277565b34801561084a57600080fd5b506005546001600160a01b03166104e3565b34801561086857600080fd5b5061050c601c5481565b34801561087e57600080fd5b5061053a61088d3660046135a7565b6112d6565b34801561089e57600080fd5b5061043961133a565b3480156108b357600080fd5b5061053a6108c2366004613572565b611349565b3480156108d357600080fd5b5061050c60195481565b3480156108e957600080fd5b5061050c60115481565b3480156108ff57600080fd5b5061050c60225481565b34801561091557600080fd5b5061050c601e5481565b34801561092b57600080fd5b5061046f61093a366004613458565b611447565b34801561094b57600080fd5b5061050c600f5481565b34801561096157600080fd5b5061046f610970366004613458565b611496565b34801561098157600080fd5b5061050c601f5481565b34801561099757600080fd5b506007546104e3906001600160a01b031681565b3480156109b757600080fd5b5061053a6109c6366004613484565b6114a3565b3480156109d757600080fd5b5061046f6109e6366004613484565b60266020526000908152604090205460ff1681565b348015610a0757600080fd5b5061053a610a163660046134ba565b611555565b348015610a2757600080fd5b5060125461046f90610100900460ff1681565b348015610a4657600080fd5b5061053a610a55366004613572565b61163d565b348015610a6657600080fd5b5061053a610a753660046134a1565b6116e4565b348015610a8657600080fd5b5060145461046f9060ff1681565b348015610aa057600080fd5b5061050c60095481565b348015610ab657600080fd5b5061046f610ac53660046134a1565b6117ed565b348015610ad657600080fd5b5061050c60165481565b348015610aec57600080fd5b5061050c610afb3660046135c2565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b348015610b3257600080fd5b5061050c600a5481565b348015610b4857600080fd5b5060275461046f9060ff1681565b348015610b6257600080fd5b5061050c601a5481565b348015610b7857600080fd5b5061053a610b873660046134fb565b6118dd565b348015610b9857600080fd5b5061046f6119ae565b348015610bad57600080fd5b5061050c60185481565b348015610bc357600080fd5b5061053a610bd2366004613484565b611a09565b348015610be357600080fd5b5061050c601d5481565b348015610bf957600080fd5b5061050c600b5481565b348015610c0f57600080fd5b5061046f610c1e3660046134a1565b611aba565b606060038054610c32906135fb565b80601f0160208091040260200160405190810160405280929190818152602001828054610c5e906135fb565b8015610cab5780601f10610c8057610100808354040283529160200191610cab565b820191906000526020600020905b815481529060010190602001808311610c8e57829003601f168201915b5050505050905090565b6000610cc2338484611dda565b5060015b92915050565b6005546001600160a01b03163314610d195760405162461bcd60e51b815260206004820181905260248201526000805160206137f683398151915260448201526064015b60405180910390fd5b6007546040516001600160a01b03918216918316907f0db17895a9d092fb3ca24d626f2150dd80c185b0706b36f1040ee239f56cb87190600090a36007805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610dcb5760405162461bcd60e51b815260206004820181905260248201526000805160206137f68339815191526044820152606401610d10565b670de0b6b3a7640000620f4240610de160025490565b610dec90600161364c565b610df6919061366b565b610e00919061366b565b811015610e755760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201527f6c6f776572207468616e20302e312500000000000000000000000000000000006064820152608401610d10565b610e7e81611f33565b50565b6000610e8e848484611f8d565b610ee08433610edb856040518060600160405280602881526020016137ce602891396001600160a01b038a1660009081526001602090815260408083203384529091529020549190612990565b611dda565b5060019392505050565b6005546001600160a01b03163314610f325760405162461bcd60e51b815260206004820181905260248201526000805160206137f68339815191526044820152606401610d10565b601784905560188390556019829055601a8190558082610f52858761368d565b610f5c919061368d565b610f66919061368d565b601681905560141015610fbb5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420323025206f72206c6573730000006044820152606401610d10565b50505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610cc2918590610edb9086611d74565b6005546001600160a01b0316331461103f5760405162461bcd60e51b815260206004820181905260248201526000805160206137f68339815191526044820152606401610d10565b6110496000611a09565b565b6005546001600160a01b031633146110935760405162461bcd60e51b815260206004820181905260248201526000805160206137f68339815191526044820152606401610d10565b61025883101561110b5760405162461bcd60e51b815260206004820152603360248201527f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e20746860448201527f616e206576657279203130206d696e75746573000000000000000000000000006064820152608401610d10565b6103e8821115801561111b575060015b61118d5760405162461bcd60e51b815260206004820152603060248201527f4d75737420736574206175746f204c50206275726e2070657263656e7420626560448201527f747765656e20302520616e6420313025000000000000000000000000000000006064820152608401610d10565b600e92909255600c55600d805460ff1916911515919091179055565b6005546000906001600160a01b031633146111f45760405162461bcd60e51b815260206004820181905260248201526000805160206137f68339815191526044820152606401610d10565b506012805460ff19169055600190565b6005546001600160a01b0316331461124c5760405162461bcd60e51b815260206004820181905260248201526000805160206137f68339815191526044820152606401610d10565b6001600160a01b03919091166000908152602560205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146112bf5760405162461bcd60e51b815260206004820181905260248201526000805160206137f68339815191526044820152606401610d10565b6012805462ffff0019166201010017905542600f55565b6005546001600160a01b0316331461131e5760405162461bcd60e51b815260206004820181905260248201526000805160206137f68339815191526044820152606401610d10565b60128054911515620100000262ff000019909216919091179055565b606060048054610c32906135fb565b6005546001600160a01b031633146113915760405162461bcd60e51b815260206004820181905260248201526000805160206137f68339815191526044820152606401610d10565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614156114395760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610d10565b61144382826129ca565b5050565b6000610cc23384610edb85604051806060016040528060258152602001613816602591393360009081526001602090815260408083206001600160a01b038d1684529091529020549190612990565b6000610cc2338484611f8d565b6005546001600160a01b031633146114eb5760405162461bcd60e51b815260206004820181905260248201526000805160206137f68339815191526044820152606401610d10565b6008546040516001600160a01b03918216918316907fe678f864bcd4f50e0554d3b42d5a0007424f154c8b29d4845c7c727f319cfd9290600090a36008805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6005546001600160a01b0316331461159d5760405162461bcd60e51b815260206004820181905260248201526000805160206137f68339815191526044820152606401610d10565b6006546040516001600160a01b03918216918516907f8616c7a330e3cf61290821331585511f1e2778171e2b005fb5ec60cfe874dc6790600090a36001600160a01b0382166000908152602081905260409020546115fb9082611d74565b6001600160a01b03928316600090815260208190526040902055506006805473ffffffffffffffffffffffffffffffffffffffff191692909116919091179055565b6005546001600160a01b031633146116855760405162461bcd60e51b815260206004820181905260248201526000805160206137f68339815191526044820152606401610d10565b6001600160a01b038216600081815260246020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b0316331461172c5760405162461bcd60e51b815260206004820181905260248201526000805160206137f68339815191526044820152606401610d10565b670de0b6b3a7640000620f424061174260025490565b61174d90600161364c565b611757919061366b565b611761919061366b565b8110156117d55760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060448201527f302e3525000000000000000000000000000000000000000000000000000000006064820152608401610d10565b6117e781670de0b6b3a764000061364c565b600b5550565b6005546000906001600160a01b031633146118385760405162461bcd60e51b815260206004820181905260248201526000805160206137f68339815191526044820152606401610d10565b620186a061184560025490565b61185090600161364c565b61185a919061366b565b8210156118cf5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527f20302e3030312520746f74616c20737570706c792e00000000000000000000006064820152608401610d10565b50600a81905560015b919050565b6005546001600160a01b031633146119255760405162461bcd60e51b815260206004820181905260248201526000805160206137f68339815191526044820152606401610d10565b601c849055601d839055601e829055601f8190558082611945858761368d565b61194f919061368d565b611959919061368d565b601b81905560191015610fbb5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420323525206f72206c6573730000006044820152606401610d10565b6005546000906001600160a01b031633146119f95760405162461bcd60e51b815260206004820181905260248201526000805160206137f68339815191526044820152606401610d10565b506014805460ff19169055600190565b6005546001600160a01b03163314611a515760405162461bcd60e51b815260206004820181905260248201526000805160206137f68339815191526044820152606401610d10565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36005805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6005546000906001600160a01b03163314611b055760405162461bcd60e51b815260206004820181905260248201526000805160206137f68339815191526044820152606401610d10565b601054601154611b15919061368d565b4211611b635760405162461bcd60e51b815260206004820181905260248201527f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e6973686044820152606401610d10565b6103e8821115611bdb5760405162461bcd60e51b815260206004820152602a60248201527f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60448201527f6b656e7320696e204c50000000000000000000000000000000000000000000006064820152608401610d10565b426011556040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016600482015260009030906370a082319060240160206040518083038186803b158015611c4157600080fd5b505afa158015611c55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c7991906136a5565b90506000611c93612710611c8d8487612a1e565b90612a9d565b90508015611cc857611cc87f000000000000000000000000000000000000000000000000000000000000000061dead83612adf565b60007f00000000000000000000000000000000000000000000000000000000000000009050806001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611d2857600080fd5b505af1158015611d3c573d6000803e3d6000fd5b50506040517f8462566617872a3fbab94534675218431ff9e204063ee3f4f43d965626a39abb925060009150a1506001949350505050565b600080611d81838561368d565b905083811015611dd35760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610d10565b9392505050565b6001600160a01b038316611e555760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610d10565b6001600160a01b038216611ed15760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610d10565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600254611f4882670de0b6b3a764000061364c565b10611f7557611f5f81670de0b6b3a764000061364c565b6015556027805460ff19811660ff909116151790555b611f8781670de0b6b3a764000061364c565b60095550565b6001600160a01b038316611ff15760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610d10565b6001600160a01b0382166120535760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610d10565b806120695761206483836000612adf565b505050565b60125460ff1615612572576005546001600160a01b038481169116148015906120a057506005546001600160a01b03838116911614155b80156120b457506001600160a01b03821615155b80156120cb57506001600160a01b03821661dead14155b80156120e15750600554600160a01b900460ff16155b1561257257601254610100900460ff16612180576001600160a01b03831660009081526024602052604090205460ff168061213457506001600160a01b03821660009081526024602052604090205460ff165b6121805760405162461bcd60e51b815260206004820152601660248201527f54726164696e67206973206e6f74206163746976652e000000000000000000006044820152606401610d10565b60145460ff16156122db576005546001600160a01b038381169116148015906121db57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b801561221957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b156122db573260009081526013602052604090205443116122c85760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60648201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000608482015260a401610d10565b3260009081526013602052604090204390555b6001600160a01b03831660009081526026602052604090205460ff16801561231c57506001600160a01b03821660009081526025602052604090205460ff16155b15612412576009548111156123995760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527f6d61785472616e73616374696f6e416d6f756e742e00000000000000000000006064820152608401610d10565b600b546001600160a01b0383166000908152602081905260409020546123bf908361368d565b111561240d5760405162461bcd60e51b815260206004820152601360248201527f4d61782077616c6c6574206578636565646564000000000000000000000000006044820152606401610d10565b612572565b6001600160a01b03821660009081526026602052604090205460ff16801561245357506001600160a01b03831660009081526025602052604090205460ff16155b156124de57600954811115801561246c575060275460ff165b61240d5760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201527f206d61785472616e73616374696f6e416d6f756e742e000000000000000000006064820152608401610d10565b6001600160a01b03821660009081526025602052604090205460ff1661257257600b546001600160a01b038316600090815260208190526040902054612524908361368d565b11156125725760405162461bcd60e51b815260206004820152601360248201527f4d61782077616c6c6574206578636565646564000000000000000000000000006044820152606401610d10565b30600090815260208190526040902054600a548110801590819061259e575060125462010000900460ff165b80156125b45750600554600160a01b900460ff16155b80156125d957506001600160a01b03851660009081526026602052604090205460ff16155b80156125fe57506001600160a01b03851660009081526024602052604090205460ff16155b801561262357506001600160a01b03841660009081526024602052604090205460ff16155b15612651576005805460ff60a01b1916600160a01b179055612643612c62565b6005805460ff60a01b191690555b600554600160a01b900460ff1615801561268357506001600160a01b03841660009081526026602052604090205460ff165b80156126915750600d5460ff165b80156126ac5750600e54600f546126a8919061368d565b4210155b80156126d157506001600160a01b03851660009081526024602052604090205460ff16155b156126e0576126de612eca565b505b6005546001600160a01b03861660009081526024602052604090205460ff600160a01b90920482161591168061272e57506001600160a01b03851660009081526024602052604090205460ff165b15612737575060005b6000811561297c576001600160a01b03861660009081526026602052604090205460ff16801561276957506000601b54115b15612851576127886064611c8d601b5488612a1e90919063ffffffff16565b9050601b54601d548261279b919061364c565b6127a5919061366b565b602160008282546127b6919061368d565b9091555050601b54601e546127cb908361364c565b6127d5919061366b565b602260008282546127e6919061368d565b9091555050601b54601f546127fb908361364c565b612805919061366b565b60236000828254612816919061368d565b9091555050601b54601c5461282b908361364c565b612835919061366b565b60206000828254612846919061368d565b9091555061295e9050565b6001600160a01b03871660009081526026602052604090205460ff16801561287b57506000601654115b1561295e5761289a6064611c8d60165488612a1e90919063ffffffff16565b9050601654601854826128ad919061364c565b6128b7919061366b565b602160008282546128c8919061368d565b90915550506016546019546128dd908361364c565b6128e7919061366b565b602260008282546128f8919061368d565b9091555050601654601a5461290d908361364c565b612917919061366b565b60236000828254612928919061368d565b909155505060165460175461293d908361364c565b612947919061366b565b60206000828254612958919061368d565b90915550505b801561296f5761296f873083612adf565b61297981866136be565b94505b612987878787612adf565b50505050505050565b600081848411156129b45760405162461bcd60e51b8152600401610d1091906133ee565b5060006129c184866136be565b95945050505050565b6001600160a01b038216600081815260266020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b600082612a2d57506000610cc6565b6000612a39838561364c565b905082612a46858361366b565b14611dd35760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610d10565b6000611dd383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613069565b6001600160a01b038316612b435760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610d10565b6001600160a01b038216612ba55760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610d10565b612be2816040518060600160405280602681526020016137a8602691396001600160a01b0386166000908152602081905260409020549190612990565b6001600160a01b038085166000908152602081905260408082209390935590841681522054612c119082611d74565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611f26565b3060009081526020819052604081205490506000602254602054602154612c89919061368d565b612c93919061368d565b90506000821580612ca2575081155b15612cac57505050565b600a54612cba90601461364c565b831115612cd257600a54612ccf90601461364c565b92505b600060028360215486612ce5919061364c565b612cef919061366b565b612cf9919061366b565b90506000612d078583613097565b905047612d13826130d9565b6000612d1f4783613097565b90506000612d3c87611c8d60205485612a1e90919063ffffffff16565b90506000612d5988611c8d60225486612a1e90919063ffffffff16565b90506000612d7689611c8d60235487612a1e90919063ffffffff16565b905060008183612d8686886136be565b612d9091906136be565b612d9a91906136be565b600060218190556020819055602281905560238190556007546040519293506001600160a01b031691859181818185875af1925050503d8060008114612dfc576040519150601f19603f3d011682016040523d82523d6000602084013e612e01565b606091505b50909950508715801590612e155750600081115b15612e6857612e2488826132c1565b602154604080518981526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b6006546040516001600160a01b03909116904790600081818185875af1925050503d8060008114612eb5576040519150601f19603f3d011682016040523d82523d6000602084013e612eba565b606091505b5050505050505050505050505050565b42600f556040516370a0823160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166004820152600090819030906370a082319060240160206040518083038186803b158015612f3257600080fd5b505afa158015612f46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f6a91906136a5565b90506000612f89612710611c8d600c5485612a1e90919063ffffffff16565b90508015612fbe57612fbe7f000000000000000000000000000000000000000000000000000000000000000061dead83612adf565b60007f00000000000000000000000000000000000000000000000000000000000000009050806001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561301e57600080fd5b505af1158015613032573d6000803e3d6000fd5b50506040517f454c91ae84fcc766ddda0dcb289f26b3d0176efeacf4061fc219fa6ca8c3048d925060009150a16001935050505090565b6000818361308a5760405162461bcd60e51b8152600401610d1091906133ee565b5060006129c1848661366b565b6000611dd383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612990565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061310e5761310e6136d5565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561318757600080fd5b505afa15801561319b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131bf91906136eb565b816001815181106131d2576131d26136d5565b60200260200101906001600160a01b031690816001600160a01b03168152505061321d307f000000000000000000000000000000000000000000000000000000000000000084611dda565b6040517f791ac9470000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac9479061328b908590600090869030904290600401613708565b600060405180830381600087803b1580156132a557600080fd5b505af11580156132b9573d6000803e3d6000fd5b505050505050565b6132ec307f000000000000000000000000000000000000000000000000000000000000000084611dda565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f305d7198230856000806133336005546001600160a01b031690565b60405160e088901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b1580156133ae57600080fd5b505af11580156133c2573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906133e79190613779565b5050505050565b600060208083528351808285015260005b8181101561341b578581018301518582016040015282016133ff565b8181111561342d576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114610e7e57600080fd5b6000806040838503121561346b57600080fd5b823561347681613443565b946020939093013593505050565b60006020828403121561349657600080fd5b8135611dd381613443565b6000602082840312156134b357600080fd5b5035919050565b6000806000606084860312156134cf57600080fd5b83356134da81613443565b925060208401356134ea81613443565b929592945050506040919091013590565b6000806000806080858703121561351157600080fd5b5050823594602084013594506040840135936060013592509050565b803580151581146118d857600080fd5b60008060006060848603121561355257600080fd5b83359250602084013591506135696040850161352d565b90509250925092565b6000806040838503121561358557600080fd5b823561359081613443565b915061359e6020840161352d565b90509250929050565b6000602082840312156135b957600080fd5b611dd38261352d565b600080604083850312156135d557600080fd5b82356135e081613443565b915060208301356135f081613443565b809150509250929050565b600181811c9082168061360f57607f821691505b6020821081141561363057634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561366657613666613636565b500290565b60008261368857634e487b7160e01b600052601260045260246000fd5b500490565b600082198211156136a0576136a0613636565b500190565b6000602082840312156136b757600080fd5b5051919050565b6000828210156136d0576136d0613636565b500390565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156136fd57600080fd5b8151611dd381613443565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156137585784516001600160a01b031683529383019391830191600101613733565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561378e57600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657245524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212204489d17e80b40980134d8b49d4a74f5e8f3eb19ea537b409517c0e8beb793fd264736f6c634300080900334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572
Deployed Bytecode
0x6080604052600436106104185760003560e01c80639213691311610228578063c024666811610128578063e5aa3d58116100bb578063f11a24d31161008a578063f63743421161006f578063f637434214610bd7578063f8b45b0514610bed578063fe72b27a14610c0357600080fd5b8063f11a24d314610ba1578063f2fde38b14610bb757600080fd5b8063e5aa3d5814610b3c578063e71dc3f514610b56578063e7ad9fcd14610b6c578063e884f26014610b8c57600080fd5b8063d257b34f116100f7578063d257b34f14610aaa578063d85ba06314610aca578063dd62ed3e14610ae0578063e2f4560514610b2657600080fd5b8063c024666814610a3a578063c18bc19514610a5a578063c876d0b914610a7a578063c8c8ebe414610a9457600080fd5b8063a457c2d7116101bb578063b115e4df1161018a578063b62496f51161016f578063b62496f5146109cb578063b7b66870146109fb578063bbc0c74214610a1b57600080fd5b8063b115e4df1461098b578063b3839389146109ab57600080fd5b8063a457c2d71461091f578063a4c82a001461093f578063a9059cbb14610955578063adb873bd1461097557600080fd5b80639c3b4fdc116101f75780639c3b4fdc146108c75780639ec22c0e146108dd5780639fccce32146108f3578063a0d82dc51461090957600080fd5b8063921369131461085c578063924de9b71461087257806395d89b41146108925780639a7a23d6146108a757600080fd5b80632e82f1a0116103335780636ddd1713116102c6578063751039fc116102955780637bce5a041161027a5780637bce5a04146108135780638a8c523c146108295780638da5cb5b1461083e57600080fd5b8063751039fc146107de5780637571336a146107f357600080fd5b80636ddd17131461075357806370a0823114610773578063715018a6146107a9578063730c1888146107be57600080fd5b806349bd5a5e1161030257806349bd5a5e146106b65780634a62bb65146106ea5780634fbee193146107045780636a486a8e1461073d57600080fd5b80632e82f1a014610640578063313ce5671461065a5780633950935114610676578063475b84731461069657600080fd5b80631a8145bb116103ab57806323b872dd1161037a57806323b872dd146105ca5780632598cdb2146105ea5780632c3e486c1461060a5780632e6ed7ef1461062057600080fd5b80631a8145bb146105685780631d7778561461057e5780631f3fed8f14610594578063203e727e146105aa57600080fd5b806318160ddd116103e757806318160ddd146104fb5780631816467f1461051a578063184c16c51461053c578063199ffc721461055257600080fd5b806306fdde0314610424578063095ea7b31461044f57806310d5de531461047f5780631694505e146104af57600080fd5b3661041f57005b600080fd5b34801561043057600080fd5b50610439610c23565b60405161044691906133ee565b60405180910390f35b34801561045b57600080fd5b5061046f61046a366004613458565b610cb5565b6040519015158152602001610446565b34801561048b57600080fd5b5061046f61049a366004613484565b60256020526000908152604090205460ff1681565b3480156104bb57600080fd5b506104e37f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610446565b34801561050757600080fd5b506002545b604051908152602001610446565b34801561052657600080fd5b5061053a610535366004613484565b610ccc565b005b34801561054857600080fd5b5061050c60105481565b34801561055e57600080fd5b5061050c600c5481565b34801561057457600080fd5b5061050c60215481565b34801561058a57600080fd5b5061050c60235481565b3480156105a057600080fd5b5061050c60205481565b3480156105b657600080fd5b5061053a6105c53660046134a1565b610d83565b3480156105d657600080fd5b5061046f6105e53660046134ba565b610e81565b3480156105f657600080fd5b506006546104e3906001600160a01b031681565b34801561061657600080fd5b5061050c600e5481565b34801561062c57600080fd5b5061053a61063b3660046134fb565b610eea565b34801561064c57600080fd5b50600d5461046f9060ff1681565b34801561066657600080fd5b5060405160128152602001610446565b34801561068257600080fd5b5061046f610691366004613458565b610fc1565b3480156106a257600080fd5b506008546104e3906001600160a01b031681565b3480156106c257600080fd5b506104e37f0000000000000000000000004461ac0f03e75a9266f358f176275985a7db332f81565b3480156106f657600080fd5b5060125461046f9060ff1681565b34801561071057600080fd5b5061046f61071f366004613484565b6001600160a01b031660009081526024602052604090205460ff1690565b34801561074957600080fd5b5061050c601b5481565b34801561075f57600080fd5b5060125461046f9062010000900460ff1681565b34801561077f57600080fd5b5061050c61078e366004613484565b6001600160a01b031660009081526020819052604090205490565b3480156107b557600080fd5b5061053a610ff7565b3480156107ca57600080fd5b5061053a6107d936600461353d565b61104b565b3480156107ea57600080fd5b5061046f6111a9565b3480156107ff57600080fd5b5061053a61080e366004613572565b611204565b34801561081f57600080fd5b5061050c60175481565b34801561083557600080fd5b5061053a611277565b34801561084a57600080fd5b506005546001600160a01b03166104e3565b34801561086857600080fd5b5061050c601c5481565b34801561087e57600080fd5b5061053a61088d3660046135a7565b6112d6565b34801561089e57600080fd5b5061043961133a565b3480156108b357600080fd5b5061053a6108c2366004613572565b611349565b3480156108d357600080fd5b5061050c60195481565b3480156108e957600080fd5b5061050c60115481565b3480156108ff57600080fd5b5061050c60225481565b34801561091557600080fd5b5061050c601e5481565b34801561092b57600080fd5b5061046f61093a366004613458565b611447565b34801561094b57600080fd5b5061050c600f5481565b34801561096157600080fd5b5061046f610970366004613458565b611496565b34801561098157600080fd5b5061050c601f5481565b34801561099757600080fd5b506007546104e3906001600160a01b031681565b3480156109b757600080fd5b5061053a6109c6366004613484565b6114a3565b3480156109d757600080fd5b5061046f6109e6366004613484565b60266020526000908152604090205460ff1681565b348015610a0757600080fd5b5061053a610a163660046134ba565b611555565b348015610a2757600080fd5b5060125461046f90610100900460ff1681565b348015610a4657600080fd5b5061053a610a55366004613572565b61163d565b348015610a6657600080fd5b5061053a610a753660046134a1565b6116e4565b348015610a8657600080fd5b5060145461046f9060ff1681565b348015610aa057600080fd5b5061050c60095481565b348015610ab657600080fd5b5061046f610ac53660046134a1565b6117ed565b348015610ad657600080fd5b5061050c60165481565b348015610aec57600080fd5b5061050c610afb3660046135c2565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b348015610b3257600080fd5b5061050c600a5481565b348015610b4857600080fd5b5060275461046f9060ff1681565b348015610b6257600080fd5b5061050c601a5481565b348015610b7857600080fd5b5061053a610b873660046134fb565b6118dd565b348015610b9857600080fd5b5061046f6119ae565b348015610bad57600080fd5b5061050c60185481565b348015610bc357600080fd5b5061053a610bd2366004613484565b611a09565b348015610be357600080fd5b5061050c601d5481565b348015610bf957600080fd5b5061050c600b5481565b348015610c0f57600080fd5b5061046f610c1e3660046134a1565b611aba565b606060038054610c32906135fb565b80601f0160208091040260200160405190810160405280929190818152602001828054610c5e906135fb565b8015610cab5780601f10610c8057610100808354040283529160200191610cab565b820191906000526020600020905b815481529060010190602001808311610c8e57829003601f168201915b5050505050905090565b6000610cc2338484611dda565b5060015b92915050565b6005546001600160a01b03163314610d195760405162461bcd60e51b815260206004820181905260248201526000805160206137f683398151915260448201526064015b60405180910390fd5b6007546040516001600160a01b03918216918316907f0db17895a9d092fb3ca24d626f2150dd80c185b0706b36f1040ee239f56cb87190600090a36007805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610dcb5760405162461bcd60e51b815260206004820181905260248201526000805160206137f68339815191526044820152606401610d10565b670de0b6b3a7640000620f4240610de160025490565b610dec90600161364c565b610df6919061366b565b610e00919061366b565b811015610e755760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201527f6c6f776572207468616e20302e312500000000000000000000000000000000006064820152608401610d10565b610e7e81611f33565b50565b6000610e8e848484611f8d565b610ee08433610edb856040518060600160405280602881526020016137ce602891396001600160a01b038a1660009081526001602090815260408083203384529091529020549190612990565b611dda565b5060019392505050565b6005546001600160a01b03163314610f325760405162461bcd60e51b815260206004820181905260248201526000805160206137f68339815191526044820152606401610d10565b601784905560188390556019829055601a8190558082610f52858761368d565b610f5c919061368d565b610f66919061368d565b601681905560141015610fbb5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420323025206f72206c6573730000006044820152606401610d10565b50505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610cc2918590610edb9086611d74565b6005546001600160a01b0316331461103f5760405162461bcd60e51b815260206004820181905260248201526000805160206137f68339815191526044820152606401610d10565b6110496000611a09565b565b6005546001600160a01b031633146110935760405162461bcd60e51b815260206004820181905260248201526000805160206137f68339815191526044820152606401610d10565b61025883101561110b5760405162461bcd60e51b815260206004820152603360248201527f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e20746860448201527f616e206576657279203130206d696e75746573000000000000000000000000006064820152608401610d10565b6103e8821115801561111b575060015b61118d5760405162461bcd60e51b815260206004820152603060248201527f4d75737420736574206175746f204c50206275726e2070657263656e7420626560448201527f747765656e20302520616e6420313025000000000000000000000000000000006064820152608401610d10565b600e92909255600c55600d805460ff1916911515919091179055565b6005546000906001600160a01b031633146111f45760405162461bcd60e51b815260206004820181905260248201526000805160206137f68339815191526044820152606401610d10565b506012805460ff19169055600190565b6005546001600160a01b0316331461124c5760405162461bcd60e51b815260206004820181905260248201526000805160206137f68339815191526044820152606401610d10565b6001600160a01b03919091166000908152602560205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146112bf5760405162461bcd60e51b815260206004820181905260248201526000805160206137f68339815191526044820152606401610d10565b6012805462ffff0019166201010017905542600f55565b6005546001600160a01b0316331461131e5760405162461bcd60e51b815260206004820181905260248201526000805160206137f68339815191526044820152606401610d10565b60128054911515620100000262ff000019909216919091179055565b606060048054610c32906135fb565b6005546001600160a01b031633146113915760405162461bcd60e51b815260206004820181905260248201526000805160206137f68339815191526044820152606401610d10565b7f0000000000000000000000004461ac0f03e75a9266f358f176275985a7db332f6001600160a01b0316826001600160a01b031614156114395760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610d10565b61144382826129ca565b5050565b6000610cc23384610edb85604051806060016040528060258152602001613816602591393360009081526001602090815260408083206001600160a01b038d1684529091529020549190612990565b6000610cc2338484611f8d565b6005546001600160a01b031633146114eb5760405162461bcd60e51b815260206004820181905260248201526000805160206137f68339815191526044820152606401610d10565b6008546040516001600160a01b03918216918316907fe678f864bcd4f50e0554d3b42d5a0007424f154c8b29d4845c7c727f319cfd9290600090a36008805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6005546001600160a01b0316331461159d5760405162461bcd60e51b815260206004820181905260248201526000805160206137f68339815191526044820152606401610d10565b6006546040516001600160a01b03918216918516907f8616c7a330e3cf61290821331585511f1e2778171e2b005fb5ec60cfe874dc6790600090a36001600160a01b0382166000908152602081905260409020546115fb9082611d74565b6001600160a01b03928316600090815260208190526040902055506006805473ffffffffffffffffffffffffffffffffffffffff191692909116919091179055565b6005546001600160a01b031633146116855760405162461bcd60e51b815260206004820181905260248201526000805160206137f68339815191526044820152606401610d10565b6001600160a01b038216600081815260246020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b0316331461172c5760405162461bcd60e51b815260206004820181905260248201526000805160206137f68339815191526044820152606401610d10565b670de0b6b3a7640000620f424061174260025490565b61174d90600161364c565b611757919061366b565b611761919061366b565b8110156117d55760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060448201527f302e3525000000000000000000000000000000000000000000000000000000006064820152608401610d10565b6117e781670de0b6b3a764000061364c565b600b5550565b6005546000906001600160a01b031633146118385760405162461bcd60e51b815260206004820181905260248201526000805160206137f68339815191526044820152606401610d10565b620186a061184560025490565b61185090600161364c565b61185a919061366b565b8210156118cf5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527f20302e3030312520746f74616c20737570706c792e00000000000000000000006064820152608401610d10565b50600a81905560015b919050565b6005546001600160a01b031633146119255760405162461bcd60e51b815260206004820181905260248201526000805160206137f68339815191526044820152606401610d10565b601c849055601d839055601e829055601f8190558082611945858761368d565b61194f919061368d565b611959919061368d565b601b81905560191015610fbb5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420323525206f72206c6573730000006044820152606401610d10565b6005546000906001600160a01b031633146119f95760405162461bcd60e51b815260206004820181905260248201526000805160206137f68339815191526044820152606401610d10565b506014805460ff19169055600190565b6005546001600160a01b03163314611a515760405162461bcd60e51b815260206004820181905260248201526000805160206137f68339815191526044820152606401610d10565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36005805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6005546000906001600160a01b03163314611b055760405162461bcd60e51b815260206004820181905260248201526000805160206137f68339815191526044820152606401610d10565b601054601154611b15919061368d565b4211611b635760405162461bcd60e51b815260206004820181905260248201527f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e6973686044820152606401610d10565b6103e8821115611bdb5760405162461bcd60e51b815260206004820152602a60248201527f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60448201527f6b656e7320696e204c50000000000000000000000000000000000000000000006064820152608401610d10565b426011556040516370a0823160e01b81526001600160a01b037f0000000000000000000000004461ac0f03e75a9266f358f176275985a7db332f16600482015260009030906370a082319060240160206040518083038186803b158015611c4157600080fd5b505afa158015611c55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c7991906136a5565b90506000611c93612710611c8d8487612a1e565b90612a9d565b90508015611cc857611cc87f0000000000000000000000004461ac0f03e75a9266f358f176275985a7db332f61dead83612adf565b60007f0000000000000000000000004461ac0f03e75a9266f358f176275985a7db332f9050806001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611d2857600080fd5b505af1158015611d3c573d6000803e3d6000fd5b50506040517f8462566617872a3fbab94534675218431ff9e204063ee3f4f43d965626a39abb925060009150a1506001949350505050565b600080611d81838561368d565b905083811015611dd35760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610d10565b9392505050565b6001600160a01b038316611e555760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610d10565b6001600160a01b038216611ed15760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610d10565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600254611f4882670de0b6b3a764000061364c565b10611f7557611f5f81670de0b6b3a764000061364c565b6015556027805460ff19811660ff909116151790555b611f8781670de0b6b3a764000061364c565b60095550565b6001600160a01b038316611ff15760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610d10565b6001600160a01b0382166120535760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610d10565b806120695761206483836000612adf565b505050565b60125460ff1615612572576005546001600160a01b038481169116148015906120a057506005546001600160a01b03838116911614155b80156120b457506001600160a01b03821615155b80156120cb57506001600160a01b03821661dead14155b80156120e15750600554600160a01b900460ff16155b1561257257601254610100900460ff16612180576001600160a01b03831660009081526024602052604090205460ff168061213457506001600160a01b03821660009081526024602052604090205460ff165b6121805760405162461bcd60e51b815260206004820152601660248201527f54726164696e67206973206e6f74206163746976652e000000000000000000006044820152606401610d10565b60145460ff16156122db576005546001600160a01b038381169116148015906121db57507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0316826001600160a01b031614155b801561221957507f0000000000000000000000004461ac0f03e75a9266f358f176275985a7db332f6001600160a01b0316826001600160a01b031614155b156122db573260009081526013602052604090205443116122c85760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60648201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000608482015260a401610d10565b3260009081526013602052604090204390555b6001600160a01b03831660009081526026602052604090205460ff16801561231c57506001600160a01b03821660009081526025602052604090205460ff16155b15612412576009548111156123995760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527f6d61785472616e73616374696f6e416d6f756e742e00000000000000000000006064820152608401610d10565b600b546001600160a01b0383166000908152602081905260409020546123bf908361368d565b111561240d5760405162461bcd60e51b815260206004820152601360248201527f4d61782077616c6c6574206578636565646564000000000000000000000000006044820152606401610d10565b612572565b6001600160a01b03821660009081526026602052604090205460ff16801561245357506001600160a01b03831660009081526025602052604090205460ff16155b156124de57600954811115801561246c575060275460ff165b61240d5760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201527f206d61785472616e73616374696f6e416d6f756e742e000000000000000000006064820152608401610d10565b6001600160a01b03821660009081526025602052604090205460ff1661257257600b546001600160a01b038316600090815260208190526040902054612524908361368d565b11156125725760405162461bcd60e51b815260206004820152601360248201527f4d61782077616c6c6574206578636565646564000000000000000000000000006044820152606401610d10565b30600090815260208190526040902054600a548110801590819061259e575060125462010000900460ff165b80156125b45750600554600160a01b900460ff16155b80156125d957506001600160a01b03851660009081526026602052604090205460ff16155b80156125fe57506001600160a01b03851660009081526024602052604090205460ff16155b801561262357506001600160a01b03841660009081526024602052604090205460ff16155b15612651576005805460ff60a01b1916600160a01b179055612643612c62565b6005805460ff60a01b191690555b600554600160a01b900460ff1615801561268357506001600160a01b03841660009081526026602052604090205460ff165b80156126915750600d5460ff165b80156126ac5750600e54600f546126a8919061368d565b4210155b80156126d157506001600160a01b03851660009081526024602052604090205460ff16155b156126e0576126de612eca565b505b6005546001600160a01b03861660009081526024602052604090205460ff600160a01b90920482161591168061272e57506001600160a01b03851660009081526024602052604090205460ff165b15612737575060005b6000811561297c576001600160a01b03861660009081526026602052604090205460ff16801561276957506000601b54115b15612851576127886064611c8d601b5488612a1e90919063ffffffff16565b9050601b54601d548261279b919061364c565b6127a5919061366b565b602160008282546127b6919061368d565b9091555050601b54601e546127cb908361364c565b6127d5919061366b565b602260008282546127e6919061368d565b9091555050601b54601f546127fb908361364c565b612805919061366b565b60236000828254612816919061368d565b9091555050601b54601c5461282b908361364c565b612835919061366b565b60206000828254612846919061368d565b9091555061295e9050565b6001600160a01b03871660009081526026602052604090205460ff16801561287b57506000601654115b1561295e5761289a6064611c8d60165488612a1e90919063ffffffff16565b9050601654601854826128ad919061364c565b6128b7919061366b565b602160008282546128c8919061368d565b90915550506016546019546128dd908361364c565b6128e7919061366b565b602260008282546128f8919061368d565b9091555050601654601a5461290d908361364c565b612917919061366b565b60236000828254612928919061368d565b909155505060165460175461293d908361364c565b612947919061366b565b60206000828254612958919061368d565b90915550505b801561296f5761296f873083612adf565b61297981866136be565b94505b612987878787612adf565b50505050505050565b600081848411156129b45760405162461bcd60e51b8152600401610d1091906133ee565b5060006129c184866136be565b95945050505050565b6001600160a01b038216600081815260266020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b600082612a2d57506000610cc6565b6000612a39838561364c565b905082612a46858361366b565b14611dd35760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610d10565b6000611dd383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613069565b6001600160a01b038316612b435760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610d10565b6001600160a01b038216612ba55760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610d10565b612be2816040518060600160405280602681526020016137a8602691396001600160a01b0386166000908152602081905260409020549190612990565b6001600160a01b038085166000908152602081905260408082209390935590841681522054612c119082611d74565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611f26565b3060009081526020819052604081205490506000602254602054602154612c89919061368d565b612c93919061368d565b90506000821580612ca2575081155b15612cac57505050565b600a54612cba90601461364c565b831115612cd257600a54612ccf90601461364c565b92505b600060028360215486612ce5919061364c565b612cef919061366b565b612cf9919061366b565b90506000612d078583613097565b905047612d13826130d9565b6000612d1f4783613097565b90506000612d3c87611c8d60205485612a1e90919063ffffffff16565b90506000612d5988611c8d60225486612a1e90919063ffffffff16565b90506000612d7689611c8d60235487612a1e90919063ffffffff16565b905060008183612d8686886136be565b612d9091906136be565b612d9a91906136be565b600060218190556020819055602281905560238190556007546040519293506001600160a01b031691859181818185875af1925050503d8060008114612dfc576040519150601f19603f3d011682016040523d82523d6000602084013e612e01565b606091505b50909950508715801590612e155750600081115b15612e6857612e2488826132c1565b602154604080518981526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b6006546040516001600160a01b03909116904790600081818185875af1925050503d8060008114612eb5576040519150601f19603f3d011682016040523d82523d6000602084013e612eba565b606091505b5050505050505050505050505050565b42600f556040516370a0823160e01b81526001600160a01b037f0000000000000000000000004461ac0f03e75a9266f358f176275985a7db332f166004820152600090819030906370a082319060240160206040518083038186803b158015612f3257600080fd5b505afa158015612f46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f6a91906136a5565b90506000612f89612710611c8d600c5485612a1e90919063ffffffff16565b90508015612fbe57612fbe7f0000000000000000000000004461ac0f03e75a9266f358f176275985a7db332f61dead83612adf565b60007f0000000000000000000000004461ac0f03e75a9266f358f176275985a7db332f9050806001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561301e57600080fd5b505af1158015613032573d6000803e3d6000fd5b50506040517f454c91ae84fcc766ddda0dcb289f26b3d0176efeacf4061fc219fa6ca8c3048d925060009150a16001935050505090565b6000818361308a5760405162461bcd60e51b8152600401610d1091906133ee565b5060006129c1848661366b565b6000611dd383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612990565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061310e5761310e6136d5565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561318757600080fd5b505afa15801561319b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131bf91906136eb565b816001815181106131d2576131d26136d5565b60200260200101906001600160a01b031690816001600160a01b03168152505061321d307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611dda565b6040517f791ac9470000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac9479061328b908590600090869030904290600401613708565b600060405180830381600087803b1580156132a557600080fd5b505af11580156132b9573d6000803e3d6000fd5b505050505050565b6132ec307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611dda565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663f305d7198230856000806133336005546001600160a01b031690565b60405160e088901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b1580156133ae57600080fd5b505af11580156133c2573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906133e79190613779565b5050505050565b600060208083528351808285015260005b8181101561341b578581018301518582016040015282016133ff565b8181111561342d576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114610e7e57600080fd5b6000806040838503121561346b57600080fd5b823561347681613443565b946020939093013593505050565b60006020828403121561349657600080fd5b8135611dd381613443565b6000602082840312156134b357600080fd5b5035919050565b6000806000606084860312156134cf57600080fd5b83356134da81613443565b925060208401356134ea81613443565b929592945050506040919091013590565b6000806000806080858703121561351157600080fd5b5050823594602084013594506040840135936060013592509050565b803580151581146118d857600080fd5b60008060006060848603121561355257600080fd5b83359250602084013591506135696040850161352d565b90509250925092565b6000806040838503121561358557600080fd5b823561359081613443565b915061359e6020840161352d565b90509250929050565b6000602082840312156135b957600080fd5b611dd38261352d565b600080604083850312156135d557600080fd5b82356135e081613443565b915060208301356135f081613443565b809150509250929050565b600181811c9082168061360f57607f821691505b6020821081141561363057634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561366657613666613636565b500290565b60008261368857634e487b7160e01b600052601260045260246000fd5b500490565b600082198211156136a0576136a0613636565b500190565b6000602082840312156136b757600080fd5b5051919050565b6000828210156136d0576136d0613636565b500390565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156136fd57600080fd5b8151611dd381613443565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156137585784516001600160a01b031683529383019391830191600101613733565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561378e57600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657245524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212204489d17e80b40980134d8b49d4a74f5e8f3eb19ea537b409517c0e8beb793fd264736f6c63430008090033
Deployed Bytecode Sourcemap
19908:18545:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7613:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8668:210;;;;;;;;;;-1:-1:-1;8668:210:0;;;;;:::i;:::-;;:::i;:::-;;;1260:14:1;;1253:22;1235:41;;1223:2;1208:18;8668:210:0;1095:187:1;21438:63:0;;;;;;;;;;-1:-1:-1;21438:63:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;19985:51;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1730:55:1;;;1712:74;;1700:2;1685:18;19985:51:0;1539:253:1;7934:108:0;;;;;;;;;;-1:-1:-1;8022:12:0;;7934:108;;;1943:25:1;;;1931:2;1916:18;7934:108:0;1797:177:1;28458:157:0;;;;;;;;;;-1:-1:-1;28458:157:0;;;;;:::i;:::-;;:::i;:::-;;20510:47;;;;;;;;;;;;;;;;20337:36;;;;;;;;;;;;;;;;21268:33;;;;;;;;;;;;;;;;21342:28;;;;;;;;;;;;;;;;21228:33;;;;;;;;;;;;;;;;25417:255;;;;;;;;;;-1:-1:-1;25417:255:0;;;;;:::i;:::-;;:::i;8884:454::-;;;;;;;;;;-1:-1:-1;8884:454:0;;;;;:::i;:::-;;:::i;20120:30::-;;;;;;;;;;-1:-1:-1;20120:30:0;;;;-1:-1:-1;;;;;20120:30:0;;;20420:45;;;;;;;;;;;;;;;;26468:475;;;;;;;;;;-1:-1:-1;26468:475:0;;;;;:::i;:::-;;:::i;20380:33::-;;;;;;;;;;-1:-1:-1;20380:33:0;;;;;;;;7833:93;;;;;;;;;;-1:-1:-1;7833:93:0;;7916:2;3388:36:1;;3376:2;3361:18;7833:93:0;3246:184:1;9344:300:0;;;;;;;;;;-1:-1:-1;9344:300:0;;;;;:::i;:::-;;:::i;20188:25::-;;;;;;;;;;-1:-1:-1;20188:25:0;;;;-1:-1:-1;;;;;20188:25:0;;;20043:38;;;;;;;;;;;;;;;20608:33;;;;;;;;;;-1:-1:-1;20608:33:0;;;;;;;;28792:126;;;;;;;;;;-1:-1:-1;28792:126:0;;;;;:::i;:::-;-1:-1:-1;;;;;28882:28:0;28858:4;28882:28;;;:19;:28;;;;;;;;;28792:126;21050:28;;;;;;;;;;;;;;;;20688:31;;;;;;;;;;-1:-1:-1;20688:31:0;;;;;;;;;;;8050:177;;;;;;;;;;-1:-1:-1;8050:177:0;;;;;:::i;:::-;-1:-1:-1;;;;;8201:18:0;8169:7;8201:18;;;;;;;;;;;;8050:177;12593:102;;;;;;;;;;;;;:::i;36495:555::-;;;;;;;;;;-1:-1:-1;36495:555:0;;;;;:::i;:::-;;:::i;24792:121::-;;;;;;;;;;;;;:::i;26185:167::-;;;;;;;;;;-1:-1:-1;26185:167:0;;;;;:::i;:::-;;:::i;20911:30::-;;;;;;;;;;;;;;;;24629:155;;;;;;;;;;;;;:::i;12379:79::-;;;;;;;;;;-1:-1:-1;12444:6:0;;-1:-1:-1;;;;;12444:6:0;12379:79;;21085:31;;;;;;;;;;;;;;;;26360:100;;;;;;;;;;-1:-1:-1;26360:100:0;;;;;:::i;:::-;;:::i;7721:104::-;;;;;;;;;;;;;:::i;27635:304::-;;;;;;;;;;-1:-1:-1;27635:304:0;;;;;:::i;:::-;;:::i;20985:24::-;;;;;;;;;;;;;;;;20564:35;;;;;;;;;;;;;;;;21308:27;;;;;;;;;;;;;;;;21161:25;;;;;;;;;;;;;;;;9650:400;;;;;;;;;;-1:-1:-1;9650:400:0;;;;;:::i;:::-;;:::i;20472:29::-;;;;;;;;;;;;;;;;8235:216;;;;;;;;;;-1:-1:-1;8235:216:0;;;;;:::i;:::-;;:::i;21193:26::-;;;;;;;;;;;;;;;;20157:24;;;;;;;;;;-1:-1:-1;20157:24:0;;;;-1:-1:-1;;;;;20157:24:0;;;28623:161;;;;;;;;;;-1:-1:-1;28623:161:0;;;;;:::i;:::-;;:::i;21510:57::-;;;;;;;;;;-1:-1:-1;21510:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;28141:309;;;;;;;;;;-1:-1:-1;28141:309:0;;;;;:::i;:::-;;:::i;20648:33::-;;;;;;;;;;-1:-1:-1;20648:33:0;;;;;;;;;;;27445:182;;;;;;;;;;-1:-1:-1;27445:182:0;;;;;:::i;:::-;;:::i;25918:259::-;;;;;;;;;;-1:-1:-1;25918:259:0;;;;;:::i;:::-;;:::i;20800:39::-;;;;;;;;;;-1:-1:-1;20800:39:0;;;;;;;;20222:35;;;;;;;;;;;;;;;;25064:345;;;;;;;;;;-1:-1:-1;25064:345:0;;;;;:::i;:::-;;:::i;20877:27::-;;;;;;;;;;;;;;;;8459:201;;;;;;;;;;-1:-1:-1;8459:201:0;;;;;:::i;:::-;-1:-1:-1;;;;;8625:18:0;;;8593:7;8625:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8459:201;20264:33;;;;;;;;;;;;;;;;21693:20;;;;;;;;;;-1:-1:-1;21693:20:0;;;;;;;;21016:25;;;;;;;;;;;;;;;;26951:486;;;;;;;;;;-1:-1:-1;26951:486:0;;;;;:::i;:::-;;:::i;24921:135::-;;;;;;;;;;;;;:::i;20948:30::-;;;;;;;;;;;;;;;;12703:160;;;;;;;;;;-1:-1:-1;12703:160:0;;;;;:::i;:::-;;:::i;21123:31::-;;;;;;;;;;;;;;;;20304:24;;;;;;;;;;;;;;;;37624:826;;;;;;;;;;-1:-1:-1;37624:826:0;;;;;:::i;:::-;;:::i;7613:100::-;7667:13;7700:5;7693:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7613:100;:::o;8668:210::-;8787:4;8809:39;758:10;8832:7;8841:6;8809:8;:39::i;:::-;-1:-1:-1;8866:4:0;8668:210;;;;;:::o;28458:157::-;12506:6;;-1:-1:-1;;;;;12506:6:0;758:10;12506:22;12498:67;;;;-1:-1:-1;;;12498:67:0;;5463:2:1;12498:67:0;;;5445:21:1;;;5482:18;;;5475:30;-1:-1:-1;;;;;;;;;;;5521:18:1;;;5514:62;5593:18;;12498:67:0;;;;;;;;;28565:9:::1;::::0;28537:38:::1;::::0;-1:-1:-1;;;;;28565:9:0;;::::1;::::0;28537:38;::::1;::::0;::::1;::::0;28565:9:::1;::::0;28537:38:::1;28586:9;:21:::0;;-1:-1:-1;;28586:21:0::1;-1:-1:-1::0;;;;;28586:21:0;;;::::1;::::0;;;::::1;::::0;;28458:157::o;25417:255::-;12506:6;;-1:-1:-1;;;;;12506:6:0;758:10;12506:22;12498:67;;;;-1:-1:-1;;;12498:67:0;;5463:2:1;12498:67:0;;;5445:21:1;;;5482:18;;;5475:30;-1:-1:-1;;;;;;;;;;;5521:18:1;;;5514:62;5593:18;;12498:67:0;5261:356:1;12498:67:0;25557:4:::1;25546:7;25525:13;8022:12:::0;;;7934:108;25525:13:::1;:17;::::0;25541:1:::1;25525:17;:::i;:::-;25524:29;;;;:::i;:::-;25523:38;;;;:::i;:::-;25513:6;:48;;25491:145;;;::::0;-1:-1:-1;;;25491:145:0;;6465:2:1;25491:145:0::1;::::0;::::1;6447:21:1::0;6504:2;6484:18;;;6477:30;6543:34;6523:18;;;6516:62;6614:17;6594:18;;;6587:45;6649:19;;25491:145:0::1;6263:411:1::0;25491:145:0::1;25647:17;25657:6;25647:9;:17::i;:::-;25417:255:::0;:::o;8884:454::-;9024:4;9041:36;9051:6;9059:9;9070:6;9041:9;:36::i;:::-;9088:220;9111:6;758:10;9159:138;9215:6;9159:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9159:19:0;;;;;;:11;:19;;;;;;;;758:10;9159:33;;;;;;;;;;:37;:138::i;:::-;9088:8;:220::i;:::-;-1:-1:-1;9326:4:0;8884:454;;;;;:::o;26468:475::-;12506:6;;-1:-1:-1;;;;;12506:6:0;758:10;12506:22;12498:67;;;;-1:-1:-1;;;12498:67:0;;5463:2:1;12498:67:0;;;5445:21:1;;;5482:18;;;5475:30;-1:-1:-1;;;;;;;;;;;5521:18:1;;;5514:62;5593:18;;12498:67:0;5261:356:1;12498:67:0;26645:15:::1;:31:::0;;;26687:15:::1;:31:::0;;;26729:9:::1;:19:::0;;;26759:10:::1;:21:::0;;;26772:8;26741:7;26806:33:::1;26705:13:::0;26663;26806:33:::1;:::i;:::-;:45;;;;:::i;:::-;:58;;;;:::i;:::-;26791:12;:73:::0;;;26899:2:::1;-1:-1:-1::0;26883:18:0::1;26875:60;;;::::0;-1:-1:-1;;;26875:60:0;;7014:2:1;26875:60:0::1;::::0;::::1;6996:21:1::0;7053:2;7033:18;;;7026:30;7092:31;7072:18;;;7065:59;7141:18;;26875:60:0::1;6812:353:1::0;26875:60:0::1;26468:475:::0;;;;:::o;9344:300::-;758:10;9459:4;9553:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;9553:34:0;;;;;;;;;;9459:4;;9481:133;;9531:7;;9553:50;;9592:10;9553:38;:50::i;12593:102::-;12506:6;;-1:-1:-1;;;;;12506:6:0;758:10;12506:22;12498:67;;;;-1:-1:-1;;;12498:67:0;;5463:2:1;12498:67:0;;;5445:21:1;;;5482:18;;;5475:30;-1:-1:-1;;;;;;;;;;;5521:18:1;;;5514:62;5593:18;;12498:67:0;5261:356:1;12498:67:0;12658:29:::1;12684:1;12658:17;:29::i;:::-;12593:102::o:0;36495:555::-;12506:6;;-1:-1:-1;;;;;12506:6:0;758:10;12506:22;12498:67;;;;-1:-1:-1;;;12498:67:0;;5463:2:1;12498:67:0;;;5445:21:1;;;5482:18;;;5475:30;-1:-1:-1;;;;;;;;;;;5521:18:1;;;5514:62;5593:18;;12498:67:0;5261:356:1;12498:67:0;36697:3:::1;36674:19;:26;;36652:127;;;::::0;-1:-1:-1;;;36652:127:0;;7372:2:1;36652:127:0::1;::::0;::::1;7354:21:1::0;7411:2;7391:18;;;7384:30;7450:34;7430:18;;;7423:62;7521:21;7501:18;;;7494:49;7560:19;;36652:127:0::1;7170:415:1::0;36652:127:0::1;36824:4;36812:8;:16;;:33;;;;-1:-1:-1::0;36832:13:0;36812:33:::1;36790:131;;;::::0;-1:-1:-1;;;36790:131:0;;7792:2:1;36790:131:0::1;::::0;::::1;7774:21:1::0;7831:2;7811:18;;;7804:30;7870:34;7850:18;;;7843:62;7941:18;7921;;;7914:46;7977:19;;36790:131:0::1;7590:412:1::0;36790:131:0::1;36932:15;:37:::0;;;;36980:16:::1;:27:::0;37018:13:::1;:24:::0;;-1:-1:-1;;37018:24:0::1;::::0;::::1;;::::0;;;::::1;::::0;;36495:555::o;24792:121::-;12506:6;;24844:4;;-1:-1:-1;;;;;12506:6:0;758:10;12506:22;12498:67;;;;-1:-1:-1;;;12498:67:0;;5463:2:1;12498:67:0;;;5445:21:1;;;5482:18;;;5475:30;-1:-1:-1;;;;;;;;;;;5521:18:1;;;5514:62;5593:18;;12498:67:0;5261:356:1;12498:67:0;-1:-1:-1;24861:14:0::1;:22:::0;;-1:-1:-1;;24861:22:0::1;::::0;;;24792:121;:::o;26185:167::-;12506:6;;-1:-1:-1;;;;;12506:6:0;758:10;12506:22;12498:67;;;;-1:-1:-1;;;12498:67:0;;5463:2:1;12498:67:0;;;5445:21:1;;;5482:18;;;5475:30;-1:-1:-1;;;;;;;;;;;5521:18:1;;;5514:62;5593:18;;12498:67:0;5261:356:1;12498:67:0;-1:-1:-1;;;;;26298:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;26298:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;26185:167::o;24629:155::-;12506:6;;-1:-1:-1;;;;;12506:6:0;758:10;12506:22;12498:67;;;;-1:-1:-1;;;12498:67:0;;5463:2:1;12498:67:0;;;5445:21:1;;;5482:18;;;5475:30;-1:-1:-1;;;;;;;;;;;5521:18:1;;;5514:62;5593:18;;12498:67:0;5261:356:1;12498:67:0;24684:13:::1;:20:::0;;-1:-1:-1;;24715:18:0;;;;;24761:15:::1;24744:14;:32:::0;24629:155::o;26360:100::-;12506:6;;-1:-1:-1;;;;;12506:6:0;758:10;12506:22;12498:67;;;;-1:-1:-1;;;12498:67:0;;5463:2:1;12498:67:0;;;5445:21:1;;;5482:18;;;5475:30;-1:-1:-1;;;;;;;;;;;5521:18:1;;;5514:62;5593:18;;12498:67:0;5261:356:1;12498:67:0;26431:11:::1;:21:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;26431:21:0;;::::1;::::0;;;::::1;::::0;;26360:100::o;7721:104::-;7777:13;7810:7;7803:14;;;;;:::i;27635:304::-;12506:6;;-1:-1:-1;;;;;12506:6:0;758:10;12506:22;12498:67;;;;-1:-1:-1;;;12498:67:0;;5463:2:1;12498:67:0;;;5445:21:1;;;5482:18;;;5475:30;-1:-1:-1;;;;;;;;;;;5521:18:1;;;5514:62;5593:18;;12498:67:0;5261:356:1;12498:67:0;27779:13:::1;-1:-1:-1::0;;;;;27771:21:0::1;:4;-1:-1:-1::0;;;;;27771:21:0::1;;;27749:128;;;::::0;-1:-1:-1;;;27749:128:0;;8209:2:1;27749:128:0::1;::::0;::::1;8191:21:1::0;8248:2;8228:18;;;8221:30;8287:34;8267:18;;;8260:62;8358:27;8338:18;;;8331:55;8403:19;;27749:128:0::1;8007:421:1::0;27749:128:0::1;27890:41;27919:4;27925:5;27890:28;:41::i;:::-;27635:304:::0;;:::o;9650:400::-;9770:4;9792:228;758:10;9842:7;9864:145;9921:15;9864:145;;;;;;;;;;;;;;;;;758:10;9864:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;9864:34:0;;;;;;;;;;;;:38;:145::i;8235:216::-;8357:4;8379:42;758:10;8403:9;8414:6;8379:9;:42::i;28623:161::-;12506:6;;-1:-1:-1;;;;;12506:6:0;758:10;12506:22;12498:67;;;;-1:-1:-1;;;12498:67:0;;5463:2:1;12498:67:0;;;5445:21:1;;;5482:18;;;5475:30;-1:-1:-1;;;;;;;;;;;5521:18:1;;;5514:62;5593:18;;12498:67:0;5261:356:1;12498:67:0;28732:10:::1;::::0;28703:40:::1;::::0;-1:-1:-1;;;;;28732:10:0;;::::1;::::0;28703:40;::::1;::::0;::::1;::::0;28732:10:::1;::::0;28703:40:::1;28754:10;:22:::0;;-1:-1:-1;;28754:22:0::1;-1:-1:-1::0;;;;;28754:22:0;;;::::1;::::0;;;::::1;::::0;;28623:161::o;28141:309::-;12506:6;;-1:-1:-1;;;;;12506:6:0;758:10;12506:22;12498:67;;;;-1:-1:-1;;;12498:67:0;;5463:2:1;12498:67:0;;;5445:21:1;;;5482:18;;;5475:30;-1:-1:-1;;;;;;;;;;;5521:18:1;;;5514:62;5593:18;;12498:67:0;5261:356:1;12498:67:0;28334:15:::1;::::0;28291:59:::1;::::0;-1:-1:-1;;;;;28334:15:0;;::::1;::::0;28291:59;::::1;::::0;::::1;::::0;28334:15:::1;::::0;28291:59:::1;-1:-1:-1::0;;;;;28376:12:0;::::1;:9;:12:::0;;;::::1;::::0;;;;;;;:19:::1;::::0;28393:1;28376:16:::1;:19::i;:::-;-1:-1:-1::0;;;;;28361:12:0;;::::1;:9;:12:::0;;;::::1;::::0;;;;;;:34;-1:-1:-1;28406:15:0::1;:36:::0;;-1:-1:-1;;28406:36:0::1;::::0;;;::::1;::::0;;;::::1;::::0;;28141:309::o;27445:182::-;12506:6;;-1:-1:-1;;;;;12506:6:0;758:10;12506:22;12498:67;;;;-1:-1:-1;;;12498:67:0;;5463:2:1;12498:67:0;;;5445:21:1;;;5482:18;;;5475:30;-1:-1:-1;;;;;;;;;;;5521:18:1;;;5514:62;5593:18;;12498:67:0;5261:356:1;12498:67:0;-1:-1:-1;;;;;27530:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;27530:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;27585:34;;1235:41:1;;;27585:34:0::1;::::0;1208:18:1;27585:34:0::1;;;;;;;27445:182:::0;;:::o;25918:259::-;12506:6;;-1:-1:-1;;;;;12506:6:0;758:10;12506:22;12498:67;;;;-1:-1:-1;;;12498:67:0;;5463:2:1;12498:67:0;;;5445:21:1;;;5482:18;;;5475:30;-1:-1:-1;;;;;;;;;;;5521:18:1;;;5514:62;5593:18;;12498:67:0;5261:356:1;12498:67:0;26061:4:::1;26050:7;26029:13;8022:12:::0;;;7934:108;26029:13:::1;:17;::::0;26045:1:::1;26029:17;:::i;:::-;26028:29;;;;:::i;:::-;26027:38;;;;:::i;:::-;26017:6;:48;;25995:134;;;::::0;-1:-1:-1;;;25995:134:0;;8635:2:1;25995:134:0::1;::::0;::::1;8617:21:1::0;8674:2;8654:18;;;8647:30;8713:34;8693:18;;;8686:62;8784:6;8764:18;;;8757:34;8808:19;;25995:134:0::1;8433:400:1::0;25995:134:0::1;26152:17;:6:::0;26162::::1;26152:17;:::i;:::-;26140:9;:29:::0;-1:-1:-1;25918:259:0:o;25064:345::-;12506:6;;25172:4;;-1:-1:-1;;;;;12506:6:0;758:10;12506:22;12498:67;;;;-1:-1:-1;;;12498:67:0;;5463:2:1;12498:67:0;;;5445:21:1;;;5482:18;;;5475:30;-1:-1:-1;;;;;;;;;;;5521:18:1;;;5514:62;5593:18;;12498:67:0;5261:356:1;12498:67:0;25251:6:::1;25230:13;8022:12:::0;;;7934:108;25230:13:::1;:17;::::0;25246:1:::1;25230:17;:::i;:::-;25229:28;;;;:::i;:::-;25216:9;:41;;25194:144;;;::::0;-1:-1:-1;;;25194:144:0;;9040:2:1;25194:144:0::1;::::0;::::1;9022:21:1::0;9079:2;9059:18;;;9052:30;9118:34;9098:18;;;9091:62;9189:23;9169:18;;;9162:51;9230:19;;25194:144:0::1;8838:417:1::0;25194:144:0::1;-1:-1:-1::0;25349:18:0::1;:30:::0;;;25397:4:::1;12576:1;25064:345:::0;;;:::o;26951:486::-;12506:6;;-1:-1:-1;;;;;12506:6:0;758:10;12506:22;12498:67;;;;-1:-1:-1;;;12498:67:0;;5463:2:1;12498:67:0;;;5445:21:1;;;5482:18;;;5475:30;-1:-1:-1;;;;;;;;;;;5521:18:1;;;5514:62;5593:18;;12498:67:0;5261:356:1;12498:67:0;27129:16:::1;:32:::0;;;27172:16:::1;:32:::0;;;27215:10:::1;:20:::0;;;27246:11:::1;:22:::0;;;27260:8;27228:7;27295:35:::1;27191:13:::0;27148;27295:35:::1;:::i;:::-;:48;;;;:::i;:::-;:62;;;;:::i;:::-;27279:13;:78:::0;;;27393:2:::1;-1:-1:-1::0;27376:19:0::1;27368:61;;;::::0;-1:-1:-1;;;27368:61:0;;9462:2:1;27368:61:0::1;::::0;::::1;9444:21:1::0;9501:2;9481:18;;;9474:30;9540:31;9520:18;;;9513:59;9589:18;;27368:61:0::1;9260:353:1::0;24921:135:0;12506:6;;24981:4;;-1:-1:-1;;;;;12506:6:0;758:10;12506:22;12498:67;;;;-1:-1:-1;;;12498:67:0;;5463:2:1;12498:67:0;;;5445:21:1;;;5482:18;;;5475:30;-1:-1:-1;;;;;;;;;;;5521:18:1;;;5514:62;5593:18;;12498:67:0;5261:356:1;12498:67:0;-1:-1:-1;24998:20:0::1;:28:::0;;-1:-1:-1;;24998:28:0::1;::::0;;;24921:135;:::o;12703:160::-;12506:6;;-1:-1:-1;;;;;12506:6:0;758:10;12506:22;12498:67;;;;-1:-1:-1;;;12498:67:0;;5463:2:1;12498:67:0;;;5445:21:1;;;5482:18;;;5475:30;-1:-1:-1;;;;;;;;;;;5521:18:1;;;5514:62;5593:18;;12498:67:0;5261:356:1;12498:67:0;12810:6:::1;::::0;12789:38:::1;::::0;-1:-1:-1;;;;;12789:38:0;;::::1;::::0;12810:6:::1;::::0;12789:38:::1;::::0;12810:6:::1;::::0;12789:38:::1;12838:6;:17:::0;;-1:-1:-1;;12838:17:0::1;-1:-1:-1::0;;;;;12838:17:0;;;::::1;::::0;;;::::1;::::0;;12703:160::o;37624:826::-;12506:6;;37735:4;;-1:-1:-1;;;;;12506:6:0;758:10;12506:22;12498:67;;;;-1:-1:-1;;;12498:67:0;;5463:2:1;12498:67:0;;;5445:21:1;;;5482:18;;;5475:30;-1:-1:-1;;;;;;;;;;;5521:18:1;;;5514:62;5593:18;;12498:67:0;5261:356:1;12498:67:0;37820:19:::1;;37797:20;;:42;;;;:::i;:::-;37779:15;:60;37757:142;;;::::0;-1:-1:-1;;;37757:142:0;;9820:2:1;37757:142:0::1;::::0;::::1;9802:21:1::0;;;9839:18;;;9832:30;9898:34;9878:18;;;9871:62;9950:18;;37757:142:0::1;9618:356:1::0;37757:142:0::1;37929:4;37918:7;:15;;37910:70;;;::::0;-1:-1:-1;;;37910:70:0;;10181:2:1;37910:70:0::1;::::0;::::1;10163:21:1::0;10220:2;10200:18;;;10193:30;10259:34;10239:18;;;10232:62;10330:12;10310:18;;;10303:40;10360:19;;37910:70:0::1;9979:406:1::0;37910:70:0::1;38014:15;37991:20;:38:::0;38073:29:::1;::::0;-1:-1:-1;;;38073:29:0;;-1:-1:-1;;;;;38088:13:0::1;1730:55:1::0;38073:29:0::1;::::0;::::1;1712:74:1::0;38042:28:0::1;::::0;38073:4:::1;::::0;:14:::1;::::0;1685:18:1;;38073:29:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;38042:60:::0;-1:-1:-1;38115:20:0::1;38138:44;38176:5;38138:33;38042:60:::0;38163:7;38138:24:::1;:33::i;:::-;:37:::0;::::1;:44::i;:::-;38115:67:::0;-1:-1:-1;38199:16:0;;38195:110:::1;;38232:61;38248:13;38271:6;38280:12;38232:15;:61::i;:::-;38317:19;38354:13;38317:51;;38379:4;-1:-1:-1::0;;;;;38379:9:0::1;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;38406:14:0::1;::::0;::::1;::::0;-1:-1:-1;38406:14:0;;-1:-1:-1;38406:14:0::1;-1:-1:-1::0;38438:4:0::1;::::0;37624:826;-1:-1:-1;;;;37624:826:0:o;1537:181::-;1595:7;;1627:5;1631:1;1627;:5;:::i;:::-;1615:17;;1656:1;1651;:6;;1643:46;;;;-1:-1:-1;;;1643:46:0;;10781:2:1;1643:46:0;;;10763:21:1;10820:2;10800:18;;;10793:30;10859:29;10839:18;;;10832:57;10906:18;;1643:46:0;10579:351:1;1643:46:0;1709:1;1537:181;-1:-1:-1;;;1537:181:0:o;11517:380::-;-1:-1:-1;;;;;11653:19:0;;11645:68;;;;-1:-1:-1;;;11645:68:0;;11137:2:1;11645:68:0;;;11119:21:1;11176:2;11156:18;;;11149:30;11215:34;11195:18;;;11188:62;11286:6;11266:18;;;11259:34;11310:19;;11645:68:0;10935:400:1;11645:68:0;-1:-1:-1;;;;;11732:21:0;;11724:68;;;;-1:-1:-1;;;11724:68:0;;11542:2:1;11724:68:0;;;11524:21:1;11581:2;11561:18;;;11554:30;11620:34;11600:18;;;11593:62;11691:4;11671:18;;;11664:32;11713:19;;11724:68:0;11340:398:1;11724:68:0;-1:-1:-1;;;;;11805:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;11857:32;;1943:25:1;;;11857:32:0;;1916:18:1;11857:32:0;;;;;;;;11517:380;;;:::o;25680:230::-;8022:12;;25738:17;:6;25748;25738:17;:::i;:::-;:34;25734:118;;25802:17;:6;25812;25802:17;:::i;:::-;25789:10;:30;25839:1;;;-1:-1:-1;;25834:6:0;;25839:1;;;;25838:2;25834:6;;;25734:118;25885:17;:6;25895;25885:17;:::i;:::-;25862:20;:40;-1:-1:-1;25680:230:0:o;28976:4765::-;-1:-1:-1;;;;;29108:18:0;;29100:68;;;;-1:-1:-1;;;29100:68:0;;11945:2:1;29100:68:0;;;11927:21:1;11984:2;11964:18;;;11957:30;12023:34;12003:18;;;11996:62;-1:-1:-1;;;12074:18:1;;;12067:35;12119:19;;29100:68:0;11743:401:1;29100:68:0;-1:-1:-1;;;;;29187:16:0;;29179:64;;;;-1:-1:-1;;;29179:64:0;;12351:2:1;29179:64:0;;;12333:21:1;12390:2;12370:18;;;12363:30;12429:34;12409:18;;;12402:62;-1:-1:-1;;;12480:18:1;;;12473:33;12523:19;;29179:64:0;12149:399:1;29179:64:0;29260:11;29256:93;;29288:28;29304:4;29310:2;29314:1;29288:15;:28::i;:::-;28976:4765;;;:::o;29256:93::-;29365:14;;;;29361:2282;;;12444:6;;-1:-1:-1;;;;;29418:15:0;;;12444:6;;29418:15;;;;:49;;-1:-1:-1;12444:6:0;;-1:-1:-1;;;;;29454:13:0;;;12444:6;;29454:13;;29418:49;:86;;;;-1:-1:-1;;;;;;29488:16:0;;;;29418:86;:128;;;;-1:-1:-1;;;;;;29525:21:0;;29539:6;29525:21;;29418:128;:158;;;;-1:-1:-1;29568:8:0;;-1:-1:-1;;;29568:8:0;;;;29567:9;29418:158;29396:2236;;;29616:13;;;;;;;29611:223;;-1:-1:-1;;;;;29688:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;29717:23:0;;;;;;:19;:23;;;;;;;;29688:52;29654:160;;;;-1:-1:-1;;;29654:160:0;;12755:2:1;29654:160:0;;;12737:21:1;12794:2;12774:18;;;12767:30;12833:24;12813:18;;;12806:52;12875:18;;29654:160:0;12553:346:1;29654:160:0;29856:20;;;;29852:641;;;12444:6;;-1:-1:-1;;;;;29931:13:0;;;12444:6;;29931:13;;;;:72;;;29987:15;-1:-1:-1;;;;;29973:30:0;:2;-1:-1:-1;;;;;29973:30:0;;;29931:72;:129;;;;;30046:13;-1:-1:-1;;;;;30032:28:0;:2;-1:-1:-1;;;;;30032:28:0;;;29931:129;29901:573;;;30178:9;30149:39;;;;:28;:39;;;;;;30224:12;-1:-1:-1;30111:258:0;;;;-1:-1:-1;;;30111:258:0;;13106:2:1;30111:258:0;;;13088:21:1;13145:2;13125:18;;;13118:30;13184:34;13164:18;;;13157:62;13255:34;13235:18;;;13228:62;13327:11;13306:19;;;13299:40;13356:19;;30111:258:0;12904:477:1;30111:258:0;30425:9;30396:39;;;;:28;:39;;;;;30438:12;30396:54;;29901:573;-1:-1:-1;;;;;30537:31:0;;;;;;:25;:31;;;;;;;;:92;;;;-1:-1:-1;;;;;;30594:35:0;;;;;;:31;:35;;;;;;;;30593:36;30537:92;30511:1106;;;30716:20;;30706:6;:30;;30672:169;;;;-1:-1:-1;;;30672:169:0;;13588:2:1;30672:169:0;;;13570:21:1;13627:2;13607:18;;;13600:30;13666:34;13646:18;;;13639:62;13737:23;13717:18;;;13710:51;13778:19;;30672:169:0;13386:417:1;30672:169:0;30924:9;;-1:-1:-1;;;;;8201:18:0;;8169:7;8201:18;;;;;;;;;;;30898:22;;:6;:22;:::i;:::-;:35;;30864:140;;;;-1:-1:-1;;;30864:140:0;;14010:2:1;30864:140:0;;;13992:21:1;14049:2;14029:18;;;14022:30;14088:21;14068:18;;;14061:49;14127:18;;30864:140:0;13808:343:1;30864:140:0;30511:1106;;;-1:-1:-1;;;;;31056:29:0;;;;;;:25;:29;;;;;;;;:92;;;;-1:-1:-1;;;;;;31111:37:0;;;;;;:31;:37;;;;;;;;31110:38;31056:92;31030:587;;;31235:20;;31225:6;:30;;:35;;;;-1:-1:-1;31259:1:0;;;;31225:35;31191:175;;;;-1:-1:-1;;;31191:175:0;;14358:2:1;31191:175:0;;;14340:21:1;14397:2;14377:18;;;14370:30;14436:34;14416:18;;;14409:62;14507:24;14487:18;;;14480:52;14549:19;;31191:175:0;14156:418:1;31030:587:0;-1:-1:-1;;;;;31397:35:0;;;;;;:31;:35;;;;;;;;31392:225;;31517:9;;-1:-1:-1;;;;;8201:18:0;;8169:7;8201:18;;;;;;;;;;;31491:22;;:6;:22;:::i;:::-;:35;;31457:140;;;;-1:-1:-1;;;31457:140:0;;14010:2:1;31457:140:0;;;13992:21:1;14049:2;14029:18;;;14022:30;14088:21;14068:18;;;14061:49;14127:18;;31457:140:0;13808:343:1;31457:140:0;31704:4;31655:28;8201:18;;;;;;;;;;;31762;;31738:42;;;;;;;31811:35;;-1:-1:-1;31835:11:0;;;;;;;31811:35;:61;;;;-1:-1:-1;31864:8:0;;-1:-1:-1;;;31864:8:0;;;;31863:9;31811:61;:110;;;;-1:-1:-1;;;;;;31890:31:0;;;;;;:25;:31;;;;;;;;31889:32;31811:110;:153;;;;-1:-1:-1;;;;;;31939:25:0;;;;;;:19;:25;;;;;;;;31938:26;31811:153;:194;;;;-1:-1:-1;;;;;;31982:23:0;;;;;;:19;:23;;;;;;;;31981:24;31811:194;31793:326;;;32032:8;:15;;-1:-1:-1;;;;32032:15:0;-1:-1:-1;;;32032:15:0;;;32064:10;:8;:10::i;:::-;32091:8;:16;;-1:-1:-1;;;;32091:16:0;;;31793:326;32150:8;;-1:-1:-1;;;32150:8:0;;;;32149:9;:55;;;;-1:-1:-1;;;;;;32175:29:0;;;;;;:25;:29;;;;;;;;32149:55;:85;;;;-1:-1:-1;32221:13:0;;;;32149:85;:153;;;;;32287:15;;32270:14;;:32;;;;:::i;:::-;32251:15;:51;;32149:153;:196;;;;-1:-1:-1;;;;;;32320:25:0;;;;;;:19;:25;;;;;;;;32319:26;32149:196;32131:282;;;32372:29;:27;:29::i;:::-;;32131:282;32441:8;;-1:-1:-1;;;;;32466:25:0;;32425:12;32466:25;;;:19;:25;;;;;;32441:8;-1:-1:-1;;;32441:8:0;;;;;32440:9;;32466:25;;:52;;-1:-1:-1;;;;;;32495:23:0;;;;;;:19;:23;;;;;;;;32466:52;32462:100;;;-1:-1:-1;32545:5:0;32462:100;32574:12;32605:7;32601:1087;;;-1:-1:-1;;;;;32633:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;32682:1;32666:13;;:17;32633:50;32629:910;;;32711:34;32741:3;32711:25;32722:13;;32711:6;:10;;:25;;;;:::i;:34::-;32704:41;;32814:13;;32794:16;;32787:4;:23;;;;:::i;:::-;32786:41;;;;:::i;:::-;32764:18;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;;32884:13:0;;32870:10;;32863:17;;:4;:17;:::i;:::-;32862:35;;;;:::i;:::-;32846:12;;:51;;;;;;;:::i;:::-;;;;-1:-1:-1;;32956:13:0;;32941:11;;32934:18;;:4;:18;:::i;:::-;32933:36;;;;:::i;:::-;32916:13;;:53;;;;;;;:::i;:::-;;;;-1:-1:-1;;33038:13:0;;33018:16;;33011:23;;:4;:23;:::i;:::-;33010:41;;;;:::i;:::-;32988:18;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;32629:910:0;;-1:-1:-1;32629:910:0;;-1:-1:-1;;;;;33113:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;33163:1;33148:12;;:16;33113:51;33109:430;;;33192:33;33221:3;33192:24;33203:12;;33192:6;:10;;:24;;;;:::i;:33::-;33185:40;;33293:12;;33274:15;;33267:4;:22;;;;:::i;:::-;33266:39;;;;:::i;:::-;33244:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;33361:12:0;;33348:9;;33341:16;;:4;:16;:::i;:::-;33340:33;;;;:::i;:::-;33324:12;;:49;;;;;;;:::i;:::-;;;;-1:-1:-1;;33431:12:0;;33417:10;;33410:17;;:4;:17;:::i;:::-;33409:34;;;;:::i;:::-;33392:13;;:51;;;;;;;:::i;:::-;;;;-1:-1:-1;;33511:12:0;;33492:15;;33485:22;;:4;:22;:::i;:::-;33484:39;;;;:::i;:::-;33462:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;33109:430:0;33559:8;;33555:91;;33588:42;33604:4;33618;33625;33588:15;:42::i;:::-;33662:14;33672:4;33662:14;;:::i;:::-;;;32601:1087;33700:33;33716:4;33722:2;33726:6;33700:15;:33::i;:::-;29089:4652;;;;28976:4765;;;:::o;2241:226::-;2361:7;2397:12;2389:6;;;;2381:29;;;;-1:-1:-1;;;2381:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2421:9:0;2433:5;2437:1;2433;:5;:::i;:::-;2421:17;2241:226;-1:-1:-1;;;;;2241:226:0:o;27947:186::-;-1:-1:-1;;;;;28030:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;28030:39:0;;;;;;;;;;28085:40;;28030:39;;:31;28085:40;;;27947:186;;:::o;1071:250::-;1129:7;1153:6;1149:47;;-1:-1:-1;1183:1:0;1176:8;;1149:47;1208:9;1220:5;1224:1;1220;:5;:::i;:::-;1208:17;-1:-1:-1;1253:1:0;1244:5;1248:1;1208:17;1244:5;:::i;:::-;:10;1236:56;;;;-1:-1:-1;;;1236:56:0;;14911:2:1;1236:56:0;;;14893:21:1;14950:2;14930:18;;;14923:30;14989:34;14969:18;;;14962:62;-1:-1:-1;;;15040:18:1;;;15033:31;15081:19;;1236:56:0;14709:397:1;1957:132:0;2015:7;2042:39;2046:1;2049;2042:39;;;;;;;;;;;;;;;;;:3;:39::i;10056:610::-;-1:-1:-1;;;;;10196:20:0;;10188:70;;;;-1:-1:-1;;;10188:70:0;;11945:2:1;10188:70:0;;;11927:21:1;11984:2;11964:18;;;11957:30;12023:34;12003:18;;;11996:62;-1:-1:-1;;;12074:18:1;;;12067:35;12119:19;;10188:70:0;11743:401:1;10188:70:0;-1:-1:-1;;;;;10277:23:0;;10269:71;;;;-1:-1:-1;;;10269:71:0;;12351:2:1;10269:71:0;;;12333:21:1;12390:2;12370:18;;;12363:30;12429:34;12409:18;;;12402:62;-1:-1:-1;;;12480:18:1;;;12473:33;12523:19;;10269:71:0;12149:399:1;10269:71:0;10433:108;10469:6;10433:108;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10433:17:0;;:9;:17;;;;;;;;;;;;:108;:21;:108::i;:::-;-1:-1:-1;;;;;10413:17:0;;;:9;:17;;;;;;;;;;;:128;;;;10575:20;;;;;;;:32;;10600:6;10575:24;:32::i;:::-;-1:-1:-1;;;;;10552:20:0;;;:9;:20;;;;;;;;;;;;:55;;;;10623:35;1943:25:1;;;10552:20:0;;10623:35;;;;;;1916:18:1;10623:35:0;1797:177:1;34602:1885:0;34685:4;34641:23;8201:18;;;;;;;;;;;34641:50;;34702:25;34798:12;;34764:18;;34730;;:52;;;;:::i;:::-;:80;;;;:::i;:::-;34702:108;-1:-1:-1;34821:12:0;34850:20;;;:46;;-1:-1:-1;34874:22:0;;34850:46;34846:85;;;34913:7;;;34602:1885::o;34846:85::-;34965:18;;:23;;34986:2;34965:23;:::i;:::-;34947:15;:41;34943:115;;;35023:18;;:23;;35044:2;35023:23;:::i;:::-;35005:41;;34943:115;35119:23;35232:1;35199:17;35164:18;;35146:15;:36;;;;:::i;:::-;35145:71;;;;:::i;:::-;:88;;;;:::i;:::-;35119:114;-1:-1:-1;35244:26:0;35273:36;:15;35119:114;35273:19;:36::i;:::-;35244:65;-1:-1:-1;35350:21:0;35384:36;35244:65;35384:16;:36::i;:::-;35433:18;35454:44;:21;35480:17;35454:25;:44::i;:::-;35433:65;;35511:23;35537:81;35590:17;35537:34;35552:18;;35537:10;:14;;:34;;;;:::i;:81::-;35511:107;;35629:17;35649:51;35682:17;35649:28;35664:12;;35649:10;:14;;:28;;;;:::i;:51::-;35629:71;;35713:18;35734:52;35768:17;35734:29;35749:13;;35734:10;:14;;:29;;;;:::i;:52::-;35713:73;-1:-1:-1;35799:23:0;35713:73;35856:9;35825:28;35838:15;35825:10;:28;:::i;:::-;:40;;;;:::i;:::-;:53;;;;:::i;:::-;35912:1;35891:18;:22;;;35924:18;:22;;;35957:12;:16;;;35984:13;:17;;;36036:9;;36028:45;;35799:79;;-1:-1:-1;;;;;;36036:9:0;;36059;;36028:45;35912:1;36028:45;36059:9;36036;36028:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;36014:59:0;;-1:-1:-1;;36092:19:0;;;;;:42;;;36133:1;36115:15;:19;36092:42;36088:278;;;36151:46;36164:15;36181;36151:12;:46::i;:::-;36321:18;;36217:137;;;15523:25:1;;;15579:2;15564:18;;15557:34;;;15607:18;;;15600:34;;;;36217:137:0;;;;;;15511:2:1;36217:137:0;;;36088:278;36400:15;;36392:87;;-1:-1:-1;;;;;36400:15:0;;;;36443:21;;36392:87;;;;36443:21;36400:15;36392:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;34602:1885:0:o;37058:558::-;37149:15;37132:14;:32;37208:29;;-1:-1:-1;;;37208:29:0;;-1:-1:-1;;;;;37223:13:0;1730:55:1;37208:29:0;;;1712:74:1;37115:4:0;;;;37208;;:14;;1685:18:1;;37208:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;37177:60;;37250:20;37273:77;37334:5;37273:42;37298:16;;37273:20;:24;;:42;;;;:::i;:77::-;37250:100;-1:-1:-1;37367:16:0;;37363:110;;37400:61;37416:13;37439:6;37448:12;37400:15;:61::i;:::-;37485:19;37522:13;37485:51;;37547:4;-1:-1:-1;;;;;37547:9:0;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;37574:12:0;;;;-1:-1:-1;37574:12:0;;-1:-1:-1;37574:12:0;37604:4;37597:11;;;;;37058:558;:::o;1726:223::-;1846:7;1881:12;1874:5;1866:28;;;;-1:-1:-1;;;1866:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1905:9:0;1917:5;1921:1;1917;:5;:::i;2097:136::-;2155:7;2182:43;2186:1;2189;2182:43;;;;;;;;;;;;;;;;;:3;:43::i;33749:475::-;33839:16;;;33853:1;33839:16;;;;;;;;33815:21;;33839:16;;;;;;;;;;-1:-1:-1;33839:16:0;33815:40;;33884:4;33866;33871:1;33866:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;33866:23:0;;;-1:-1:-1;;;;;33866:23:0;;;;;33910:15;-1:-1:-1;;;;;33910:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;33900:4;33905:1;33900:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;33900:32:0;;;-1:-1:-1;;;;;33900:32:0;;;;;33945:62;33962:4;33977:15;33995:11;33945:8;:62::i;:::-;34020:196;;;;;-1:-1:-1;;;;;34020:15:0;:66;;;;:196;;34101:11;;34127:1;;34143:4;;34170;;34190:15;;34020:196;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33804:420;33749:475;:::o;34232:362::-;34313:62;34330:4;34345:15;34363:11;34313:8;:62::i;:::-;34388:15;-1:-1:-1;;;;;34388:31:0;;34427:9;34460:4;34480:11;34506:1;34522;34538:7;12444:6;;-1:-1:-1;;;;;12444:6:0;;12379:79;34538:7;34388:198;;;;;;;;;;-1:-1:-1;;;;;17692:15:1;;;34388:198:0;;;17674:34:1;17724:18;;;17717:34;;;;17767:18;;;17760:34;;;;17810:18;;;17803:34;17874:15;;;17853:19;;;17846:44;34560:15:0;17906:19:1;;;17899:35;17585:19;;34388:198:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;34232:362;;:::o;14:597:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;616:154::-;-1:-1:-1;;;;;695:5:1;691:54;684:5;681:65;671:93;;760:1;757;750:12;775:315;843:6;851;904:2;892:9;883:7;879:23;875:32;872:52;;;920:1;917;910:12;872:52;959:9;946:23;978:31;1003:5;978:31;:::i;:::-;1028:5;1080:2;1065:18;;;;1052:32;;-1:-1:-1;;;775:315:1:o;1287:247::-;1346:6;1399:2;1387:9;1378:7;1374:23;1370:32;1367:52;;;1415:1;1412;1405:12;1367:52;1454:9;1441:23;1473:31;1498:5;1473:31;:::i;1979:180::-;2038:6;2091:2;2079:9;2070:7;2066:23;2062:32;2059:52;;;2107:1;2104;2097:12;2059:52;-1:-1:-1;2130:23:1;;1979:180;-1:-1:-1;1979:180:1:o;2164:456::-;2241:6;2249;2257;2310:2;2298:9;2289:7;2285:23;2281:32;2278:52;;;2326:1;2323;2316:12;2278:52;2365:9;2352:23;2384:31;2409:5;2384:31;:::i;:::-;2434:5;-1:-1:-1;2491:2:1;2476:18;;2463:32;2504:33;2463:32;2504:33;:::i;:::-;2164:456;;2556:7;;-1:-1:-1;;;2610:2:1;2595:18;;;;2582:32;;2164:456::o;2856:385::-;2942:6;2950;2958;2966;3019:3;3007:9;2998:7;2994:23;2990:33;2987:53;;;3036:1;3033;3026:12;2987:53;-1:-1:-1;;3059:23:1;;;3129:2;3114:18;;3101:32;;-1:-1:-1;3180:2:1;3165:18;;3152:32;;3231:2;3216:18;3203:32;;-1:-1:-1;2856:385:1;-1:-1:-1;2856:385:1:o;3435:160::-;3500:20;;3556:13;;3549:21;3539:32;;3529:60;;3585:1;3582;3575:12;3600:316;3674:6;3682;3690;3743:2;3731:9;3722:7;3718:23;3714:32;3711:52;;;3759:1;3756;3749:12;3711:52;3795:9;3782:23;3772:33;;3852:2;3841:9;3837:18;3824:32;3814:42;;3875:35;3906:2;3895:9;3891:18;3875:35;:::i;:::-;3865:45;;3600:316;;;;;:::o;3921:315::-;3986:6;3994;4047:2;4035:9;4026:7;4022:23;4018:32;4015:52;;;4063:1;4060;4053:12;4015:52;4102:9;4089:23;4121:31;4146:5;4121:31;:::i;:::-;4171:5;-1:-1:-1;4195:35:1;4226:2;4211:18;;4195:35;:::i;:::-;4185:45;;3921:315;;;;;:::o;4241:180::-;4297:6;4350:2;4338:9;4329:7;4325:23;4321:32;4318:52;;;4366:1;4363;4356:12;4318:52;4389:26;4405:9;4389:26;:::i;4426:388::-;4494:6;4502;4555:2;4543:9;4534:7;4530:23;4526:32;4523:52;;;4571:1;4568;4561:12;4523:52;4610:9;4597:23;4629:31;4654:5;4629:31;:::i;:::-;4679:5;-1:-1:-1;4736:2:1;4721:18;;4708:32;4749:33;4708:32;4749:33;:::i;:::-;4801:7;4791:17;;;4426:388;;;;;:::o;4819:437::-;4898:1;4894:12;;;;4941;;;4962:61;;5016:4;5008:6;5004:17;4994:27;;4962:61;5069:2;5061:6;5058:14;5038:18;5035:38;5032:218;;;-1:-1:-1;;;5103:1:1;5096:88;5207:4;5204:1;5197:15;5235:4;5232:1;5225:15;5032:218;;4819:437;;;:::o;5622:184::-;-1:-1:-1;;;5671:1:1;5664:88;5771:4;5768:1;5761:15;5795:4;5792:1;5785:15;5811:168;5851:7;5917:1;5913;5909:6;5905:14;5902:1;5899:21;5894:1;5887:9;5880:17;5876:45;5873:71;;;5924:18;;:::i;:::-;-1:-1:-1;5964:9:1;;5811:168::o;5984:274::-;6024:1;6050;6040:189;;-1:-1:-1;;;6082:1:1;6075:88;6186:4;6183:1;6176:15;6214:4;6211:1;6204:15;6040:189;-1:-1:-1;6243:9:1;;5984:274::o;6679:128::-;6719:3;6750:1;6746:6;6743:1;6740:13;6737:39;;;6756:18;;:::i;:::-;-1:-1:-1;6792:9:1;;6679:128::o;10390:184::-;10460:6;10513:2;10501:9;10492:7;10488:23;10484:32;10481:52;;;10529:1;10526;10519:12;10481:52;-1:-1:-1;10552:16:1;;10390:184;-1:-1:-1;10390:184:1:o;14579:125::-;14619:4;14647:1;14644;14641:8;14638:34;;;14652:18;;:::i;:::-;-1:-1:-1;14689:9:1;;14579:125::o;15834:184::-;-1:-1:-1;;;15883:1:1;15876:88;15983:4;15980:1;15973:15;16007:4;16004:1;15997:15;16023:251;16093:6;16146:2;16134:9;16125:7;16121:23;16117:32;16114:52;;;16162:1;16159;16152:12;16114:52;16194:9;16188:16;16213:31;16238:5;16213:31;:::i;16279:1026::-;16541:4;16589:3;16578:9;16574:19;16620:6;16609:9;16602:25;16646:2;16684:6;16679:2;16668:9;16664:18;16657:34;16727:3;16722:2;16711:9;16707:18;16700:31;16751:6;16786;16780:13;16817:6;16809;16802:22;16855:3;16844:9;16840:19;16833:26;;16894:2;16886:6;16882:15;16868:29;;16915:1;16925:218;16939:6;16936:1;16933:13;16925:218;;;17004:13;;-1:-1:-1;;;;;17000:62:1;16988:75;;17118:15;;;;17083:12;;;;16961:1;16954:9;16925:218;;;-1:-1:-1;;;;;;;17199:55:1;;;;17194:2;17179:18;;17172:83;-1:-1:-1;;;17286:3:1;17271:19;17264:35;17160:3;16279:1026;-1:-1:-1;;;16279:1026:1:o;17945:306::-;18033:6;18041;18049;18102:2;18090:9;18081:7;18077:23;18073:32;18070:52;;;18118:1;18115;18108:12;18070:52;18147:9;18141:16;18131:26;;18197:2;18186:9;18182:18;18176:25;18166:35;;18241:2;18230:9;18226:18;18220:25;18210:35;;17945:306;;;;;:::o
Swarm Source
ipfs://4489d17e80b40980134d8b49d4a74f5e8f3eb19ea537b409517c0e8beb793fd2
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.