More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 269 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 21553897 | 17 days ago | IN | 0 ETH | 0.00021729 | ||||
Approve | 21553896 | 17 days ago | IN | 0 ETH | 0.00035149 | ||||
Approve | 20904867 | 107 days ago | IN | 0 ETH | 0.00027762 | ||||
Transfer | 20896680 | 109 days ago | IN | 0 ETH | 0.00027301 | ||||
Approve | 20694806 | 137 days ago | IN | 0 ETH | 0.00005787 | ||||
Approve | 19871223 | 252 days ago | IN | 0 ETH | 0.00020892 | ||||
Approve | 19517776 | 301 days ago | IN | 0 ETH | 0.00097986 | ||||
Approve | 19268886 | 336 days ago | IN | 0 ETH | 0.00174667 | ||||
Approve | 17736323 | 551 days ago | IN | 0 ETH | 0.00162421 | ||||
Approve | 17693387 | 557 days ago | IN | 0 ETH | 0.00169026 | ||||
Approve | 17672704 | 560 days ago | IN | 0 ETH | 0.00095583 | ||||
Approve | 17665016 | 561 days ago | IN | 0 ETH | 0.00127881 | ||||
Transfer | 17446311 | 592 days ago | IN | 0 ETH | 0.00122924 | ||||
Transfer | 17346871 | 606 days ago | IN | 0 ETH | 0.00115484 | ||||
Approve | 17254806 | 619 days ago | IN | 0 ETH | 0.00184834 | ||||
Approve | 17250876 | 619 days ago | IN | 0 ETH | 0.00196396 | ||||
Approve | 17250825 | 619 days ago | IN | 0 ETH | 0.0017691 | ||||
Approve | 17216468 | 624 days ago | IN | 0 ETH | 0.00640872 | ||||
Transfer | 17216460 | 624 days ago | IN | 0 ETH | 0.00646203 | ||||
Approve | 17208606 | 625 days ago | IN | 0 ETH | 0.00401522 | ||||
Approve | 17206865 | 625 days ago | IN | 0 ETH | 0.00418401 | ||||
Approve | 17205865 | 626 days ago | IN | 0 ETH | 0.00522978 | ||||
Transfer | 17205232 | 626 days ago | IN | 0 ETH | 0.00673477 | ||||
Transfer | 17205220 | 626 days ago | IN | 0 ETH | 0.00637146 | ||||
Transfer | 17205183 | 626 days ago | IN | 0 ETH | 0.00580921 |
Latest 17 internal transactions
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
16963111 | 660 days ago | 0.16615831 ETH | ||||
16963111 | 660 days ago | 0.16615831 ETH | ||||
16962965 | 660 days ago | 0.17550731 ETH | ||||
16962965 | 660 days ago | 0.17550731 ETH | ||||
16962703 | 660 days ago | 0.17550731 ETH | ||||
16891576 | 670 days ago | 0.14728847 ETH | ||||
16891576 | 670 days ago | 0.25775483 ETH | ||||
16891576 | 670 days ago | 0.03682211 ETH | ||||
16891576 | 670 days ago | 0.44186543 ETH | ||||
16876810 | 672 days ago | 0.21716993 ETH | ||||
16876810 | 672 days ago | 0.38004739 ETH | ||||
16876810 | 672 days ago | 0.05429248 ETH | ||||
16876810 | 672 days ago | 0.63810981 ETH | ||||
16848449 | 676 days ago | 0.22110423 ETH | ||||
16848449 | 676 days ago | 0.3869324 ETH | ||||
16848449 | 676 days ago | 0.05527605 ETH | ||||
16848449 | 676 days ago | 0.66331269 ETH |
Loading...
Loading
Contract Name:
Sinners
Compiler Version
v0.8.17+commit.8df45f5f
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-03-15 */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; return c; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } interface IBEP20 { 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 IBEP20Metadata is IBEP20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } contract BEP20 is Context, IBEP20, IBEP20Metadata { using SafeMath for uint256; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 internal _totalSupply; string private _name = "Sinners"; string private _symbol = "Sinners"; 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, "BEP20: 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, "BEP20: decreased allowance below zero")); return true; } function _transfer(address sender, address recipient, uint256 amount) internal virtual { require(sender != address(0), "BEP20: transfer from the zero address"); require(recipient != address(0), "BEP20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); _balances[sender] = _balances[sender].sub(amount,"BEP20: 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), "BEP20: 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 _approve(address owner, address spender, uint256 amount) internal virtual { require(owner != address(0), "BEP20: approve from the zero address"); require(spender != address(0), "BEP20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {} } abstract 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 { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } 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 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 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 { function createPair(address tokenA, address tokenB) external returns (address pair); } 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 Sinners is BEP20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; address public DEAD = 0x000000000000000000000000000000000000dEaD; address payable public NFTRewardsContract; bool private swapping; bool public tradingEnabled = false; uint256 public sellAmount = 1; uint256 public buyAmount = 1; uint256 private totalSellFees; uint256 private totalBuyFees; address payable public communityWallet; address payable public devWallet; uint256 public maxWallet; uint256 public maxTX; uint256 public swapTokensAtAmount; uint256 public buyCommunityFees; uint256 public sellCommunityFees; uint256 public buyLiquidityFee; uint256 public sellLiquidityFee; uint256 public buyDevFee; uint256 public sellDevFee; uint256 public buyNFTStakingFee; uint256 public sellNFTStakingFee; uint256 public buyBurnFee; uint256 public sellBurnFee; bool public swapAndLiquifyEnabled = true; mapping(address => bool) private _isExcludedFromFees; mapping(address => bool) public automatedMarketMakerPairs; mapping(address => bool) private canTransferBeforeTradingIsEnabled; bool public limitsInEffect = true; uint256 private gasPriceLimit = 7 * 1 gwei; mapping(address => uint256) private _holderLastTransferBlock; mapping(address => uint256) private _holderLastTransferTimestamp; uint256 public launchblock; uint256 public launchtimestamp; uint256 public delay; uint256 public cooldowntimer = 30; event EnableSwapAndLiquify(bool enabled); event SetPreSaleWallet(address wallet); event updateCommunityWallet(address wallet); event updateDevWallet(address wallet); event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress); event TradingEnabled(); event UpdateFees(uint256 sellCommunityFees, uint256 sellLiquidityFee, uint256 buyCommunityFees, uint256 buyLiquidityFee, uint256 buyDevFee, uint256 sellDevFee, uint256 buyNFTStakingFee, uint256 sellNFTStakingFee, uint256 buyBurnFee, uint256 sellBurnFee); event Airdrop(address holder, uint256 amount); event ExcludeFromFees(address indexed account, bool isExcluded); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event SwapAndLiquify(uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity); event SendDividends(uint256 opAmount, bool success); constructor() BEP20("Sinners", "Sinners") { communityWallet = payable(0x763CD127060a2bBdE1e2Ac69b5f461593E0334Ee); devWallet = payable(0x89a55EDf478f4642A37f1D50f1217EEBAEbF7177); address router = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; buyCommunityFees = 1; sellCommunityFees = 1; buyLiquidityFee = 1; sellLiquidityFee = 1; buyDevFee = 1; sellDevFee = 1; buyNFTStakingFee = 0; sellNFTStakingFee = 0; buyBurnFee = 1; sellBurnFee = 1; totalBuyFees = buyCommunityFees.add(buyLiquidityFee).add(buyDevFee).add(buyNFTStakingFee); totalSellFees = sellCommunityFees.add(sellLiquidityFee).add(sellDevFee).add(sellNFTStakingFee); uniswapV2Router = IUniswapV2Router02(router); uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair( address(this), uniswapV2Router.WETH()); _setAutomatedMarketMakerPair(uniswapV2Pair, true); _isExcludedFromFees[address(this)] = true; _isExcludedFromFees[msg.sender] = true; _isExcludedFromFees[communityWallet] = true; _isExcludedFromFees[devWallet] = true; uint256 _totalSupply = (1_000_000_000) * (10**18); _mint(owner(), _totalSupply); // only time internal mint function is ever called is to create supply maxWallet = _totalSupply / 50; // 2% swapTokensAtAmount = _totalSupply / 100; // 1%; canTransferBeforeTradingIsEnabled[owner()] = true; canTransferBeforeTradingIsEnabled[address(this)] = true; } function decimals() public view virtual override returns (uint8) { return 18; } receive() external payable {} function enableTrading(uint256 initialMaxGwei, uint256 initialMaxWallet, uint256 initialMaxTX, uint256 setDelay) external onlyOwner { initialMaxWallet = initialMaxWallet * (10**18); initialMaxTX = initialMaxTX * (10**18); require(!tradingEnabled); require(initialMaxGwei >= 5, "cannot set below 5"); require(initialMaxWallet >= _totalSupply / 1000,"cannot set below 0.1%"); require(initialMaxTX >= _totalSupply / 1000,"cannot set below 0.1%"); require(setDelay <= 60, "max delay is 60 seconds"); maxWallet = initialMaxWallet; maxTX = initialMaxTX; gasPriceLimit = initialMaxGwei * 1 gwei; tradingEnabled = true; launchblock = block.number; launchtimestamp = block.timestamp; delay = setDelay; emit TradingEnabled(); } function setCommunityWallet(address wallet) external onlyOwner { _isExcludedFromFees[wallet] = true; communityWallet = payable(wallet); emit updateCommunityWallet(wallet); } function setDevWallet(address wallet) external onlyOwner { _isExcludedFromFees[wallet] = true; devWallet = payable(wallet); emit updateDevWallet(wallet); } function setNFTRewardsAddress(address NewAddress) public onlyOwner { _isExcludedFromFees[NewAddress] = true; NFTRewardsContract = payable(NewAddress); } function setExcludeFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function setCanTransferBefore(address wallet, bool enable) external onlyOwner { canTransferBeforeTradingIsEnabled[wallet] = enable; } function setLimitsInEffect(bool value) external onlyOwner { limitsInEffect = value; } // set max GWEI function setGasPriceLimit(uint256 GWEI) external onlyOwner { require(GWEI >= 50, "can never be set lower than 50"); gasPriceLimit = GWEI * 1 gwei; } function setcooldowntimer(uint256 value) external onlyOwner { require(value <= 300, "cooldown timer cannot exceed 5 minutes"); cooldowntimer = value; } function setmaxWallet(uint256 value) external onlyOwner { value = value * (10**18); require(value >= _totalSupply / 1000, "max wallet cannot be set to less than 0.1%"); maxWallet = value; } function setmaxTX(uint256 value) external onlyOwner { value = value * (10**18); require(value >= _totalSupply / 1000, "max tx cannot be set to less than 0.1%"); maxTX = value; } function Sweep() external onlyOwner { uint256 amountETH = address(this).balance; payable(msg.sender).transfer(amountETH); } function setSwapTriggerAmount(uint256 amount) public onlyOwner { swapTokensAtAmount = amount * (10**18); require(swapTokensAtAmount >= _totalSupply / 100, "cant set swap trigger below 1%"); require(swapTokensAtAmount <= _totalSupply / 20, "cant set swap trigger above 5%"); } function enableSwapAndLiquify(bool enabled) public onlyOwner { require(swapAndLiquifyEnabled != enabled); swapAndLiquifyEnabled = enabled; emit EnableSwapAndLiquify(enabled); } function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner { _setAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; emit SetAutomatedMarketMakerPair(pair, value); } function transferAdmin(address newOwner) public onlyOwner { _isExcludedFromFees[newOwner] = true; canTransferBeforeTradingIsEnabled[newOwner] = true; transferOwnership(newOwner); } function updateFees(uint256 communityBuy, uint256 communitySell, uint256 liquidityBuy, uint256 liquiditySell, uint256 devBuy, uint256 devSell, uint256 nftBuy, uint256 nftSell, uint256 burnBuy, uint256 burnSell) public onlyOwner { require(burnBuy <= 2 && burnSell <= 2,"burn fees cannot exceed 2%"); buyCommunityFees = communityBuy; sellCommunityFees = communitySell; buyLiquidityFee = liquidityBuy; sellLiquidityFee = liquiditySell; buyDevFee = devBuy; sellDevFee = devSell; buyNFTStakingFee = nftBuy; sellNFTStakingFee = nftSell; buyBurnFee = burnBuy; sellBurnFee = burnSell; totalSellFees = sellCommunityFees.add(sellLiquidityFee).add(sellDevFee).add(sellNFTStakingFee); totalBuyFees = buyCommunityFees.add(buyLiquidityFee).add(buyDevFee).add(buyNFTStakingFee); require(totalBuyFees <= 7 && totalSellFees <= 7, "total fees excluding burn cannot exceed 7%"); emit UpdateFees(sellCommunityFees, sellLiquidityFee, sellDevFee, buyCommunityFees, buyLiquidityFee, buyDevFee, buyNFTStakingFee, sellNFTStakingFee, buyBurnFee, sellBurnFee); } function isExcludedFromFees(address account) public view returns (bool) { return _isExcludedFromFees[account]; } function _transfer(address from, address to, uint256 amount) internal override { require(from != address(0), "IBEP20: transfer from the zero address"); require(to != address(0), "IBEP20: transfer to the zero address"); uint256 communityFees; uint256 liquidityFee; uint256 devFee; uint256 nftFee; uint256 burnFee; if (!canTransferBeforeTradingIsEnabled[from]) { require(tradingEnabled, "Trading has not yet been enabled"); } if (amount == 0) { super._transfer(from, to, 0); return; } else if ( !swapping && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] ) { bool isSelling = automatedMarketMakerPairs[to]; bool isBuying = automatedMarketMakerPairs[from]; if (!isBuying && !isSelling) { super._transfer(from, to, amount); return; } else if (isSelling) { communityFees = sellCommunityFees; liquidityFee = sellLiquidityFee; devFee = sellDevFee; nftFee = sellNFTStakingFee; burnFee = sellBurnFee; if (limitsInEffect) { require(block.timestamp >= _holderLastTransferTimestamp[tx.origin] + cooldowntimer, "cooldown period active"); require(amount <= maxTX,"above max transaction limit"); _holderLastTransferTimestamp[tx.origin] = block.timestamp; } } else if (isBuying) { communityFees = buyCommunityFees; liquidityFee = buyLiquidityFee; devFee = buyDevFee; nftFee = buyNFTStakingFee; burnFee = buyBurnFee; if (limitsInEffect) { require(block.timestamp > launchtimestamp + delay,"you shall not pass"); require(tx.gasprice <= gasPriceLimit,"Gas price exceeds limit."); require(_holderLastTransferBlock[tx.origin] != block.number,"Too many TX in block"); require(amount <= maxTX,"above max transaction limit"); _holderLastTransferBlock[tx.origin] = block.number; _holderLastTransferTimestamp[tx.origin] = block.timestamp; } uint256 contractBalanceRecipient = balanceOf(to); require(contractBalanceRecipient + amount <= maxWallet, "Exceeds maximum wallet token amount." ); } uint256 totalFees = communityFees.add(liquidityFee).add(devFee).add(buyNFTStakingFee); uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if (canSwap && isSelling) { swapping = true; uint256 swapTokens; if (swapAndLiquifyEnabled && liquidityFee > 0 && totalBuyFees > 0) { uint256 totalBuySell = buyAmount + sellAmount; uint256 swapAmountBought = contractTokenBalance * buyAmount / totalBuySell; uint256 swapAmountSold = contractTokenBalance * sellAmount / totalBuySell; uint256 swapBuyTokens = swapAmountBought * liquidityFee / totalBuyFees; uint256 swapSellTokens = swapAmountSold * liquidityFee / totalSellFees; swapTokens = swapSellTokens + swapBuyTokens; swapAndLiquify(swapTokens); } uint256 remainingBalance = swapTokensAtAmount.sub(swapTokens); swapAndSendDividends(remainingBalance); buyAmount = 1; sellAmount = 1; swapping = false; } uint256 fees = amount * totalFees / 100; uint256 burntokens; if (burnFee > 0) { burntokens = amount * burnFee / 100; super._transfer(from, DEAD, burntokens); _totalSupply = _totalSupply.sub(burntokens); } amount = amount.sub(fees + burntokens); if (isSelling) { sellAmount = sellAmount.add(fees); } else { buyAmount = buyAmount.add(fees); } super._transfer(from, address(this), fees); } super._transfer(from, to, amount); } function swapAndLiquify(uint256 tokens) private { uint256 half = tokens.div(2); uint256 otherHalf = tokens.sub(half); uint256 initialBalance = address(this).balance; swapTokensForEth(half); // <- this breaks the ETH -> HATE swap when swap+liquify is triggered uint256 newBalance = address(this).balance.sub(initialBalance); addLiquidity(otherHalf, newBalance); emit SwapAndLiquify(half, newBalance, otherHalf); } function swapTokensForEth(uint256 tokenAmount) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable address(0), block.timestamp ); } function forceSwapAndSendDividends(uint256 tokens) public onlyOwner { tokens = tokens * (10**18); uint256 totalAmount = buyAmount.add(sellAmount); uint256 fromBuy = tokens.mul(buyAmount).div(totalAmount); uint256 fromSell = tokens.mul(sellAmount).div(totalAmount); swapAndSendDividends(tokens); buyAmount = buyAmount.sub(fromBuy); sellAmount = sellAmount.sub(fromSell); } function swapAndSendDividends(uint256 tokens) private { if (tokens == 0) { return; } swapTokensForEth(tokens); bool success = true; bool successOp1 = true; bool successOp2 = true; uint256 _completeFees; uint256 feePortions; uint256 communityPayout; uint256 devPayout; uint256 nftPayout; _completeFees = sellCommunityFees.add(sellDevFee + sellNFTStakingFee) + buyCommunityFees.add(buyDevFee + buyNFTStakingFee); if (_completeFees > 0) { feePortions = address(this).balance.div(_completeFees); communityPayout = buyCommunityFees.add(sellCommunityFees) * feePortions; devPayout = buyDevFee.add(sellDevFee) * feePortions; nftPayout = buyNFTStakingFee.add(sellNFTStakingFee) * feePortions; } if (communityPayout > 0) { (success, ) = address(communityWallet).call{value: communityPayout}(""); } if (devPayout > 0) { (successOp1, ) = address(devWallet).call{value: devPayout}(""); } if (nftPayout > 0) { (successOp2, ) = address(NFTRewardsContract).call{value: nftPayout}(""); } emit SendDividends( communityPayout + devPayout + nftPayout, success && successOp1 && successOp2 ); } function airdropToWallets( address[] memory airdropWallets, uint256[] memory amount ) external onlyOwner { require(airdropWallets.length == amount.length, "Arrays must be the same length"); require(airdropWallets.length <= 200, "Wallets list length must be <= 200"); for (uint256 i = 0; i < airdropWallets.length; i++) { address wallet = airdropWallets[i]; uint256 airdropAmount = amount[i] * (10**18); super._transfer(msg.sender, wallet, airdropAmount); } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"holder","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Airdrop","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"EnableSwapAndLiquify","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":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"opAmount","type":"uint256"},{"indexed":false,"internalType":"bool","name":"success","type":"bool"}],"name":"SendDividends","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":"address","name":"wallet","type":"address"}],"name":"SetPreSaleWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[],"name":"TradingEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"sellCommunityFees","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sellLiquidityFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"buyCommunityFees","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"buyLiquidityFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"buyDevFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sellDevFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"buyNFTStakingFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sellNFTStakingFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"buyBurnFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sellBurnFee","type":"uint256"}],"name":"UpdateFees","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"wallet","type":"address"}],"name":"updateCommunityWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"wallet","type":"address"}],"name":"updateDevWallet","type":"event"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"NFTRewardsContract","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Sweep","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"airdropWallets","type":"address[]"},{"internalType":"uint256[]","name":"amount","type":"uint256[]"}],"name":"airdropToWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyAmount","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":"buyCommunityFees","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":"buyNFTStakingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"communityWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cooldowntimer","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":"delay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"enableSwapAndLiquify","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"initialMaxGwei","type":"uint256"},{"internalType":"uint256","name":"initialMaxWallet","type":"uint256"},{"internalType":"uint256","name":"initialMaxTX","type":"uint256"},{"internalType":"uint256","name":"setDelay","type":"uint256"}],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"forceSwapAndSendDividends","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchblock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchtimestamp","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":"maxTX","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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellCommunityFees","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":"sellNFTStakingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"setCanTransferBefore","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"setCommunityWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"setDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setExcludeFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"GWEI","type":"uint256"}],"name":"setGasPriceLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"setLimitsInEffect","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"NewAddress","type":"address"}],"name":"setNFTRewardsAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setSwapTriggerAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"setcooldowntimer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"setmaxTX","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"setmaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","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":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"communityBuy","type":"uint256"},{"internalType":"uint256","name":"communitySell","type":"uint256"},{"internalType":"uint256","name":"liquidityBuy","type":"uint256"},{"internalType":"uint256","name":"liquiditySell","type":"uint256"},{"internalType":"uint256","name":"devBuy","type":"uint256"},{"internalType":"uint256","name":"devSell","type":"uint256"},{"internalType":"uint256","name":"nftBuy","type":"uint256"},{"internalType":"uint256","name":"nftSell","type":"uint256"},{"internalType":"uint256","name":"burnBuy","type":"uint256"},{"internalType":"uint256","name":"burnSell","type":"uint256"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c0604052600760809081526653696e6e65727360c81b60a05260039062000028908262000788565b5060408051808201909152600781526653696e6e65727360c81b602082015260049062000056908262000788565b50600880546001600160a01b03191661dead1790556009805460ff60a81b191690556001600a819055600b819055601d805460ff1990811683179091556021805490911690911790556401a13b8600602255601e602855348015620000ba57600080fd5b5060408051808201825260078082526653696e6e65727360c81b6020808401829052845180860190955291845290830152906003620000fa838262000788565b50600462000109828262000788565b50505060006200011e6200051b60201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600e805473763cd127060a2bbde1e2ac69b5f461593e0334ee6001600160a01b031991821617909155600f80547389a55edf478f4642a37f1d50f1217eebaebf71779216919091179055600160138190556014819055601581905560168190556017819055601881905560006019819055601a819055601b829055601c829055737a250d5630b4cf539739df2c5dacb4c659f2488d9162000236919062000222908181806200051f602090811b62001c5217901c565b6200051f60201b62001c521790919060201c565b600d8190555062000268601a5462000222601854620002226016546014546200051f60201b62001c521790919060201c565b600c55600680546001600160a01b0319166001600160a01b0383169081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015620002c5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002eb919062000854565b6001600160a01b031663c9c6539630600660009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200034e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000374919062000854565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620003c2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e8919062000854565b600780546001600160a01b0319166001600160a01b03929092169182179055620004149060016200058f565b306000908152601e60205260408082208054600160ff1991821681179092553384528284208054821683179055600e546001600160a01b0390811685528385208054831684179055600f5416845291909220805490911690911790556b033b2e3c9fd0803ce80000006200049b620004946005546001600160a01b031690565b82620005e3565b620004a86032826200087f565b601055620004b86064826200087f565b601255600160206000620004d46005546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff1995861617905530815291805290208054909116600117905550620008c49050565b3390565b6000806200052e8385620008a2565b905083811015620005865760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064015b60405180910390fd5b90505b92915050565b6001600160a01b0382166000818152601f6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b0382166200063b5760405162461bcd60e51b815260206004820152601f60248201527f42455032303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016200057d565b62000657816002546200051f60201b62001c521790919060201c565b6002556001600160a01b038216600090815260208181526040909120546200068a91839062001c526200051f821b17901c565b6001600160a01b038316600081815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200070f57607f821691505b6020821081036200073057634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620006df57600081815260208120601f850160051c810160208610156200075f5750805b601f850160051c820191505b8181101562000780578281556001016200076b565b505050505050565b81516001600160401b03811115620007a457620007a4620006e4565b620007bc81620007b58454620006fa565b8462000736565b602080601f831160018114620007f45760008415620007db5750858301515b600019600386901b1c1916600185901b17855562000780565b600085815260208120601f198616915b82811015620008255788860151825594840194600190910190840162000804565b5085821015620008445787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156200086757600080fd5b81516001600160a01b03811681146200058657600080fd5b6000826200089d57634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156200058957634e487b7160e01b600052601160045260246000fd5b6133bb80620008d46000396000f3fe6080604052600436106103bc5760003560e01c806375829def116101f2578063b62496f51161010d578063e2f45605116100a0578063f2fde38b1161006f578063f2fde38b14610ae1578063f637434214610b01578063f8b45b0514610b17578063fc6b151c14610b2d57600080fd5b8063e2f4560514610a89578063e71dc3f514610a9f578063ebae7c1c14610ab5578063f11a24d314610acb57600080fd5b8063d68082ec116100dc578063d68082ec146109f7578063d786c5c814610a0d578063dd62ed3e14610a23578063e14a93d614610a6957600080fd5b8063b62496f514610967578063b74e3b1114610997578063c7574839146109b7578063d5e37251146109d757600080fd5b806395d89b4111610185578063a457c2d711610154578063a457c2d7146108fb578063a9059cbb1461091b578063adb873bd1461093b578063b49429881461095157600080fd5b806395d89b411461089a5780639a7a23d6146108af5780639c3b4fdc146108cf578063a0d82dc5146108e557600080fd5b80638c3c82b2116101c15780638c3c82b2146108265780638da5cb5b1461083c5780638ea5220f1461085a57806394109af51461087a57600080fd5b806375829def146107a65780637fdde05c146107c6578063837ae2d0146107e657806385d6bb811461080657600080fd5b80633f407b84116102e257806366236b4a116102755780637088fb7f116102445780637088fb7f1461073057806370a0823114610745578063715018a61461077b57806373b18e8c1461079057600080fd5b806366236b4a146106ba578063679ca6e9146106da57806369b2217f146106fa5780636a42b8f81461071a57600080fd5b80634ada218b116102b15780634ada218b1461062a5780634c469a711461064b5780634fbee193146106615780635eee4bae1461069a57600080fd5b80633f407b84146105c057806349bd5a5e146105d65780634a62bb65146105f65780634a74bb021461061057600080fd5b806318160ddd1161035a5780632307b441116103295780632307b4411461054457806323b872dd14610564578063313ce5671461058457806339509351146105a057600080fd5b806318160ddd146104d95780631d7b1fb4146104f85780631f53ac021461050e5780631fa705311461052e57600080fd5b806308dfe8a51161039657806308dfe8a5146104495780630923160214610469578063095ea7b3146104895780631694505e146104b957600080fd5b806303fd2a45146103c857806305ca5f081461040557806306fdde031461042757600080fd5b366103c357005b600080fd5b3480156103d457600080fd5b506008546103e8906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561041157600080fd5b50610425610420366004612d6d565b610b4d565b005b34801561043357600080fd5b5061043c610c1e565b6040516103fc9190612d86565b34801561045557600080fd5b50610425610464366004612dfe565b610cb0565b34801561047557600080fd5b50610425610484366004612d6d565b610d39565b34801561049557600080fd5b506104a96104a4366004612e33565b610dc8565b60405190151581526020016103fc565b3480156104c557600080fd5b506006546103e8906001600160a01b031681565b3480156104e557600080fd5b506002545b6040519081526020016103fc565b34801561050457600080fd5b506104ea60285481565b34801561051a57600080fd5b50610425610529366004612e5f565b610ddf565b34801561053a57600080fd5b506104ea600b5481565b34801561055057600080fd5b5061042561055f366004612f52565b610e76565b34801561057057600080fd5b506104a961057f366004613014565b610fce565b34801561059057600080fd5b50604051601281526020016103fc565b3480156105ac57600080fd5b506104a96105bb366004612e33565b611037565b3480156105cc57600080fd5b506104ea600a5481565b3480156105e257600080fd5b506007546103e8906001600160a01b031681565b34801561060257600080fd5b506021546104a99060ff1681565b34801561061c57600080fd5b50601d546104a99060ff1681565b34801561063657600080fd5b506009546104a990600160a81b900460ff1681565b34801561065757600080fd5b506104ea60195481565b34801561066d57600080fd5b506104a961067c366004612e5f565b6001600160a01b03166000908152601e602052604090205460ff1690565b3480156106a657600080fd5b506104256106b5366004612d6d565b61106d565b3480156106c657600080fd5b506104256106d5366004612d6d565b61116f565b3480156106e657600080fd5b506104256106f5366004613055565b611220565b34801561070657600080fd5b506009546103e8906001600160a01b031681565b34801561072657600080fd5b506104ea60275481565b34801561073c57600080fd5b5061042561125d565b34801561075157600080fd5b506104ea610760366004612e5f565b6001600160a01b031660009081526020819052604090205490565b34801561078757600080fd5b506104256112ba565b34801561079c57600080fd5b506104ea60145481565b3480156107b257600080fd5b506104256107c1366004612e5f565b61132e565b3480156107d257600080fd5b506104256107e1366004612dfe565b61139a565b3480156107f257600080fd5b50610425610801366004613070565b6113ee565b34801561081257600080fd5b50610425610821366004612e5f565b6115f7565b34801561083257600080fd5b506104ea60265481565b34801561084857600080fd5b506005546001600160a01b03166103e8565b34801561086657600080fd5b50600f546103e8906001600160a01b031681565b34801561088657600080fd5b50610425610895366004612e5f565b611687565b3480156108a657600080fd5b5061043c6116e8565b3480156108bb57600080fd5b506104256108ca366004612dfe565b6116f7565b3480156108db57600080fd5b506104ea60175481565b3480156108f157600080fd5b506104ea60185481565b34801561090757600080fd5b506104a9610916366004612e33565b61172b565b34801561092757600080fd5b506104a9610936366004612e33565b61177a565b34801561094757600080fd5b506104ea601c5481565b34801561095d57600080fd5b506104ea60255481565b34801561097357600080fd5b506104a9610982366004612e5f565b601f6020526000908152604090205460ff1681565b3480156109a357600080fd5b506104256109b2366004612d6d565b611787565b3480156109c357600080fd5b50600e546103e8906001600160a01b031681565b3480156109e357600080fd5b506104256109f2366004613055565b611817565b348015610a0357600080fd5b506104ea60135481565b348015610a1957600080fd5b506104ea601a5481565b348015610a2f57600080fd5b506104ea610a3e3660046130d8565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b348015610a7557600080fd5b50610425610a84366004613111565b611899565b348015610a9557600080fd5b506104ea60125481565b348015610aab57600080fd5b506104ea601b5481565b348015610ac157600080fd5b506104ea60115481565b348015610ad757600080fd5b506104ea60155481565b348015610aed57600080fd5b50610425610afc366004612e5f565b611ab2565b348015610b0d57600080fd5b506104ea60165481565b348015610b2357600080fd5b506104ea60105481565b348015610b3957600080fd5b50610425610b48366004612d6d565b611b9d565b6005546001600160a01b03163314610b805760405162461bcd60e51b8152600401610b7790613143565b60405180910390fd5b610b9281670de0b6b3a764000061318e565b90506000610bad600a54600b54611c5290919063ffffffff16565b90506000610bd082610bca600b5486611cb890919063ffffffff16565b90611d3a565b90506000610bed83610bca600a5487611cb890919063ffffffff16565b9050610bf884611d7c565b600b54610c059083611feb565b600b55600a54610c159082611feb565b600a5550505050565b606060038054610c2d906131a5565b80601f0160208091040260200160405190810160405280929190818152602001828054610c59906131a5565b8015610ca65780601f10610c7b57610100808354040283529160200191610ca6565b820191906000526020600020905b815481529060010190602001808311610c8957829003601f168201915b5050505050905090565b6005546001600160a01b03163314610cda5760405162461bcd60e51b8152600401610b7790613143565b6001600160a01b0382166000818152601e6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314610d635760405162461bcd60e51b8152600401610b7790613143565b6032811015610db45760405162461bcd60e51b815260206004820152601e60248201527f63616e206e6576657220626520736574206c6f776572207468616e20353000006044820152606401610b77565b610dc281633b9aca0061318e565b60225550565b6000610dd533848461202d565b5060015b92915050565b6005546001600160a01b03163314610e095760405162461bcd60e51b8152600401610b7790613143565b6001600160a01b0381166000818152601e6020908152604091829020805460ff19166001179055600f80546001600160a01b0319168417905590519182527f1816467f4e41d8dd27500ca11dc471852ca93f9b624c4d8d4430b8c4fa6424fa91015b60405180910390a150565b6005546001600160a01b03163314610ea05760405162461bcd60e51b8152600401610b7790613143565b8051825114610ef15760405162461bcd60e51b815260206004820152601e60248201527f417272617973206d757374206265207468652073616d65206c656e67746800006044820152606401610b77565b60c882511115610f4e5760405162461bcd60e51b815260206004820152602260248201527f57616c6c657473206c697374206c656e677468206d757374206265203c3d2032604482015261030360f41b6064820152608401610b77565b60005b8251811015610fc9576000838281518110610f6e57610f6e6131df565b602002602001015190506000838381518110610f8c57610f8c6131df565b6020026020010151670de0b6b3a7640000610fa7919061318e565b9050610fb4338383612152565b50508080610fc1906131f5565b915050610f51565b505050565b6000610fdb8484846122d5565b61102d843361102885604051806060016040528060288152602001613313602891396001600160a01b038a1660009081526001602090815260408083203384529091529020549190612a1f565b61202d565b5060019392505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610dd59185906110289086611c52565b6005546001600160a01b031633146110975760405162461bcd60e51b8152600401610b7790613143565b6110a981670de0b6b3a764000061318e565b6012556002546110bb9060649061320e565b601254101561110c5760405162461bcd60e51b815260206004820152601e60248201527f63616e7420736574207377617020747269676765722062656c6f7720312500006044820152606401610b77565b601460025461111b919061320e565b601254111561116c5760405162461bcd60e51b815260206004820152601e60248201527f63616e7420736574207377617020747269676765722061626f766520352500006044820152606401610b77565b50565b6005546001600160a01b031633146111995760405162461bcd60e51b8152600401610b7790613143565b6111ab81670de0b6b3a764000061318e565b90506103e86002546111bd919061320e565b81101561121b5760405162461bcd60e51b815260206004820152602660248201527f6d61782074782063616e6e6f742062652073657420746f206c657373207468616044820152656e20302e312560d01b6064820152608401610b77565b601155565b6005546001600160a01b0316331461124a5760405162461bcd60e51b8152600401610b7790613143565b6021805460ff1916911515919091179055565b6005546001600160a01b031633146112875760405162461bcd60e51b8152600401610b7790613143565b6040514790339082156108fc029083906000818181858888f193505050501580156112b6573d6000803e3d6000fd5b5050565b6005546001600160a01b031633146112e45760405162461bcd60e51b8152600401610b7790613143565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b031633146113585760405162461bcd60e51b8152600401610b7790613143565b6001600160a01b0381166000908152601e602090815260408083208054600160ff19918216811790925592805292208054909116909117905561116c81611ab2565b6005546001600160a01b031633146113c45760405162461bcd60e51b8152600401610b7790613143565b6001600160a01b039190911660009081526020805260409020805460ff1916911515919091179055565b6005546001600160a01b031633146114185760405162461bcd60e51b8152600401610b7790613143565b6002821115801561142a575060028111155b6114765760405162461bcd60e51b815260206004820152601a60248201527f6275726e20666565732063616e6e6f74206578636565642032250000000000006044820152606401610b77565b60138a9055601489905560158890556016879055601786905560188590556019849055601a839055601b829055601c8190556114be836114b887818d8c611c52565b90611c52565b600c819055506114e76019546114b86017546114b8601554601354611c5290919063ffffffff16565b600d8190556007108015906114ff57506007600c5411155b61155e5760405162461bcd60e51b815260206004820152602a60248201527f746f74616c2066656573206578636c7564696e67206275726e2063616e6e6f746044820152692065786365656420372560b01b6064820152608401610b77565b601454601654601854601354601554601754601954601a54601b54601c54604080519a8b5260208b0199909952978901969096526060880194909452608087019290925260a086015260c085015260e08401526101008301526101208201527f07cec4532bdb36ce729ae72905c09f7bfbf8682c2cc2f1999f745188d9975122906101400160405180910390a150505050505050505050565b6005546001600160a01b031633146116215760405162461bcd60e51b8152600401610b7790613143565b6001600160a01b0381166000818152601e6020908152604091829020805460ff19166001179055600e80546001600160a01b0319168417905590519182527fa6ce120ae4c6ca1889b2dd49c24a1f24b4d92b19c556bdaaaad29bcb8e018ea49101610e6b565b6005546001600160a01b031633146116b15760405162461bcd60e51b8152600401610b7790613143565b6001600160a01b03166000818152601e60205260409020805460ff19166001179055600980546001600160a01b0319169091179055565b606060048054610c2d906131a5565b6005546001600160a01b031633146117215760405162461bcd60e51b8152600401610b7790613143565b6112b68282612a59565b6000610dd5338461102885604051806060016040528060258152602001613361602591393360009081526001602090815260408083206001600160a01b038d1684529091529020549190612a1f565b6000610dd53384846122d5565b6005546001600160a01b031633146117b15760405162461bcd60e51b8152600401610b7790613143565b61012c8111156118125760405162461bcd60e51b815260206004820152602660248201527f636f6f6c646f776e2074696d65722063616e6e6f74206578636565642035206d604482015265696e7574657360d01b6064820152608401610b77565b602855565b6005546001600160a01b031633146118415760405162461bcd60e51b8152600401610b7790613143565b601d5481151560ff90911615150361185857600080fd5b601d805460ff19168215159081179091556040519081527fff5917043f8453af413305b2dbd1ed9748a37df481beb71ba4b9b212a07b9bef90602001610e6b565b6005546001600160a01b031633146118c35760405162461bcd60e51b8152600401610b7790613143565b6118d583670de0b6b3a764000061318e565b92506118e982670de0b6b3a764000061318e565b600954909250600160a81b900460ff161561190357600080fd5b60058410156119495760405162461bcd60e51b815260206004820152601260248201527163616e6e6f74207365742062656c6f77203560701b6044820152606401610b77565b6103e8600254611959919061320e565b8310156119a05760405162461bcd60e51b815260206004820152601560248201527463616e6e6f74207365742062656c6f7720302e312560581b6044820152606401610b77565b6103e86002546119b0919061320e565b8210156119f75760405162461bcd60e51b815260206004820152601560248201527463616e6e6f74207365742062656c6f7720302e312560581b6044820152606401610b77565b603c811115611a485760405162461bcd60e51b815260206004820152601760248201527f6d61782064656c6179206973203630207365636f6e64730000000000000000006044820152606401610b77565b60108390556011829055611a6084633b9aca0061318e565b6022556009805460ff60a81b1916600160a81b179055436025554260265560278190556040517f799663458a5ef2936f7fa0c99b3336c69c25890f82974f04e811e5bb359186c790600090a150505050565b6005546001600160a01b03163314611adc5760405162461bcd60e51b8152600401610b7790613143565b6001600160a01b038116611b415760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b77565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314611bc75760405162461bcd60e51b8152600401610b7790613143565b611bd981670de0b6b3a764000061318e565b90506103e8600254611beb919061320e565b811015611c4d5760405162461bcd60e51b815260206004820152602a60248201527f6d61782077616c6c65742063616e6e6f742062652073657420746f206c657373604482015269207468616e20302e312560b01b6064820152608401610b77565b601055565b600080611c5f8385613230565b905083811015611cb15760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610b77565b9392505050565b600082600003611cca57506000610dd9565b6000611cd6838561318e565b905082611ce3858361320e565b14611cb15760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610b77565b6000611cb183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612aad565b80600003611d875750565b611d9081612adb565b601954601754600191829182916000918291829182918291611dbe91611db591613230565b60135490611c52565b611dda601a54601854611dd19190613230565b60145490611c52565b611de49190613230565b94508415611e6557611df64786611d3a565b935083611e10601454601354611c5290919063ffffffff16565b611e1a919061318e565b925083611e34601854601754611c5290919063ffffffff16565b611e3e919061318e565b915083611e58601a54601954611c5290919063ffffffff16565b611e62919061318e565b90505b8215611ec357600e546040516001600160a01b03909116908490600081818185875af1925050503d8060008114611eb8576040519150601f19603f3d011682016040523d82523d6000602084013e611ebd565b606091505b50909850505b8115611f2157600f546040516001600160a01b03909116908390600081818185875af1925050503d8060008114611f16576040519150601f19603f3d011682016040523d82523d6000602084013e611f1b565b606091505b50909750505b8015611f7f576009546040516001600160a01b03909116908290600081818185875af1925050503d8060008114611f74576040519150601f19603f3d011682016040523d82523d6000602084013e611f79565b606091505b50909650505b7f31ea026303a62d39c4ad14716f9621f1afe3242309c2ed761d4e241ae4bf2ea981611fab8486613230565b611fb59190613230565b898015611fbf5750885b8015611fc85750875b6040805192835290151560208301520160405180910390a1505050505050505050565b6000611cb183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612a1f565b6001600160a01b03831661208f5760405162461bcd60e51b8152602060048201526024808201527f42455032303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b77565b6001600160a01b0382166120f05760405162461bcd60e51b815260206004820152602260248201527f42455032303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b77565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166121b65760405162461bcd60e51b815260206004820152602560248201527f42455032303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b77565b6001600160a01b0382166122185760405162461bcd60e51b815260206004820152602360248201527f42455032303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b77565b6122558160405180606001604052806026815260200161333b602691396001600160a01b0386166000908152602081905260409020549190612a1f565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546122849082611c52565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101612145565b6001600160a01b03831661233a5760405162461bcd60e51b815260206004820152602660248201527f4942455032303a207472616e736665722066726f6d20746865207a65726f206160448201526564647265737360d01b6064820152608401610b77565b6001600160a01b03821661239c5760405162461bcd60e51b8152602060048201526024808201527f4942455032303a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610b77565b6001600160a01b0383166000908152602080526040812054819081908190819060ff1661241c57600954600160a81b900460ff1661241c5760405162461bcd60e51b815260206004820181905260248201527f54726164696e6720686173206e6f7420796574206265656e20656e61626c65646044820152606401610b77565b8560000361243a5761243088886000612152565b5050505050505050565b600954600160a01b900460ff1615801561246d57506001600160a01b0388166000908152601e602052604090205460ff16155b801561249257506001600160a01b0387166000908152601e602052604090205460ff16155b15612a14576001600160a01b038088166000908152601f602052604080822054928b16825290205460ff9182169116801580156124cd575081155b156124e9576124dd8a8a8a612152565b50505050505050505050565b81156125e557601454601654601854601a54601c54602154949b509299509097509550935060ff16156125e057602854326000908152602460205260409020546125339190613230565b42101561257b5760405162461bcd60e51b8152602060048201526016602482015275636f6f6c646f776e20706572696f642061637469766560501b6044820152606401610b77565b6011548811156125cd5760405162461bcd60e51b815260206004820152601b60248201527f61626f7665206d6178207472616e73616374696f6e206c696d697400000000006044820152606401610b77565b3260009081526024602052604090204290555b612801565b801561280157601354601554601754601954601b54602154949b509299509097509550935060ff161561277f576027546026546126229190613230565b42116126655760405162461bcd60e51b8152602060048201526012602482015271796f75207368616c6c206e6f74207061737360701b6044820152606401610b77565b6022543a11156126b75760405162461bcd60e51b815260206004820152601860248201527f4761732070726963652065786365656473206c696d69742e00000000000000006044820152606401610b77565b3260009081526023602052604090205443900361270d5760405162461bcd60e51b8152602060048201526014602482015273546f6f206d616e7920545820696e20626c6f636b60601b6044820152606401610b77565b60115488111561275f5760405162461bcd60e51b815260206004820152601b60248201527f61626f7665206d6178207472616e73616374696f6e206c696d697400000000006044820152606401610b77565b326000908152602360209081526040808320439055602490915290204290555b6001600160a01b0389166000908152602081905260409020546010546127a58a83613230565b11156127ff5760405162461bcd60e51b8152602060048201526024808201527f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f6044820152633ab73a1760e11b6064820152608401610b77565b505b601954600090612817906114b888818c8c611c52565b30600090815260208190526040902054601254919250908110801590819061283c5750845b15612954576009805460ff60a01b1916600160a01b179055601d5460009060ff168015612869575060008a115b801561287757506000600d54115b1561291f576000600a54600b5461288e9190613230565b9050600081600b54866128a1919061318e565b6128ab919061320e565b9050600082600a54876128be919061318e565b6128c8919061320e565b90506000600d548e846128db919061318e565b6128e5919061320e565b90506000600c548f846128f8919061318e565b612902919061320e565b905061290e8282613230565b955061291986612c35565b50505050505b60125460009061292f9083611feb565b905061293a81611d7c565b50506001600b819055600a556009805460ff60a01b191690555b60006064612962858e61318e565b61296c919061320e565b9050600087156129bf576064612982898f61318e565b61298c919061320e565b90506129ae8f600860009054906101000a90046001600160a01b031683612152565b6002546129bb9082611feb565b6002555b6129d36129cc8284613230565b8e90611feb565b9c5086156129f057600a546129e89083611c52565b600a55612a01565b600b546129fd9083611c52565b600b555b612a0c8f3084612152565b505050505050505b612430888888612152565b60008184841115612a435760405162461bcd60e51b8152600401610b779190612d86565b506000612a508486613243565b95945050505050565b6001600160a01b0382166000818152601f6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b60008183612ace5760405162461bcd60e51b8152600401610b779190612d86565b506000612a50848661320e565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612b1057612b106131df565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612b69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b8d9190613256565b81600181518110612ba057612ba06131df565b6001600160a01b039283166020918202929092010152600654612bc6913091168461202d565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790612bff908590600090869030904290600401613273565b600060405180830381600087803b158015612c1957600080fd5b505af1158015612c2d573d6000803e3d6000fd5b505050505050565b6000612c42826002611d3a565b90506000612c508383611feb565b905047612c5c83612adb565b6000612c684783611feb565b9050612c748382612cbc565b60408051858152602081018390529081018490527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15050505050565b600654612cd49030906001600160a01b03168461202d565b60065460405163f305d71960e01b8152306004820152602481018490526000604482018190526064820181905260848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015612d41573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612d6691906132e4565b5050505050565b600060208284031215612d7f57600080fd5b5035919050565b600060208083528351808285015260005b81811015612db357858101830151858201604001528201612d97565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461116c57600080fd5b80358015158114612df957600080fd5b919050565b60008060408385031215612e1157600080fd5b8235612e1c81612dd4565b9150612e2a60208401612de9565b90509250929050565b60008060408385031215612e4657600080fd5b8235612e5181612dd4565b946020939093013593505050565b600060208284031215612e7157600080fd5b8135611cb181612dd4565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612ebb57612ebb612e7c565b604052919050565b600067ffffffffffffffff821115612edd57612edd612e7c565b5060051b60200190565b600082601f830112612ef857600080fd5b81356020612f0d612f0883612ec3565b612e92565b82815260059290921b84018101918181019086841115612f2c57600080fd5b8286015b84811015612f475780358352918301918301612f30565b509695505050505050565b60008060408385031215612f6557600080fd5b823567ffffffffffffffff80821115612f7d57600080fd5b818501915085601f830112612f9157600080fd5b81356020612fa1612f0883612ec3565b82815260059290921b84018101918181019089841115612fc057600080fd5b948201945b83861015612fe7578535612fd881612dd4565b82529482019490820190612fc5565b96505086013592505080821115612ffd57600080fd5b5061300a85828601612ee7565b9150509250929050565b60008060006060848603121561302957600080fd5b833561303481612dd4565b9250602084013561304481612dd4565b929592945050506040919091013590565b60006020828403121561306757600080fd5b611cb182612de9565b6000806000806000806000806000806101408b8d03121561309057600080fd5b505088359a60208a01359a5060408a013599606081013599506080810135985060a0810135975060c0810135965060e081013595506101008101359450610120013592509050565b600080604083850312156130eb57600080fd5b82356130f681612dd4565b9150602083013561310681612dd4565b809150509250929050565b6000806000806080858703121561312757600080fd5b5050823594602084013594506040840135936060013592509050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610dd957610dd9613178565b600181811c908216806131b957607f821691505b6020821081036131d957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b60006001820161320757613207613178565b5060010190565b60008261322b57634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610dd957610dd9613178565b81810381811115610dd957610dd9613178565b60006020828403121561326857600080fd5b8151611cb181612dd4565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156132c35784516001600160a01b03168352938301939183019160010161329e565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156132f957600080fd5b835192506020840151915060408401519050925092509256fe42455032303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636542455032303a207472616e7366657220616d6f756e7420657863656564732062616c616e636542455032303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212207484ebb96a7febbbe4ae231cd64d10e67804b4533c6ddc48f8e40b78000f4a9a64736f6c63430008110033
Deployed Bytecode
0x6080604052600436106103bc5760003560e01c806375829def116101f2578063b62496f51161010d578063e2f45605116100a0578063f2fde38b1161006f578063f2fde38b14610ae1578063f637434214610b01578063f8b45b0514610b17578063fc6b151c14610b2d57600080fd5b8063e2f4560514610a89578063e71dc3f514610a9f578063ebae7c1c14610ab5578063f11a24d314610acb57600080fd5b8063d68082ec116100dc578063d68082ec146109f7578063d786c5c814610a0d578063dd62ed3e14610a23578063e14a93d614610a6957600080fd5b8063b62496f514610967578063b74e3b1114610997578063c7574839146109b7578063d5e37251146109d757600080fd5b806395d89b4111610185578063a457c2d711610154578063a457c2d7146108fb578063a9059cbb1461091b578063adb873bd1461093b578063b49429881461095157600080fd5b806395d89b411461089a5780639a7a23d6146108af5780639c3b4fdc146108cf578063a0d82dc5146108e557600080fd5b80638c3c82b2116101c15780638c3c82b2146108265780638da5cb5b1461083c5780638ea5220f1461085a57806394109af51461087a57600080fd5b806375829def146107a65780637fdde05c146107c6578063837ae2d0146107e657806385d6bb811461080657600080fd5b80633f407b84116102e257806366236b4a116102755780637088fb7f116102445780637088fb7f1461073057806370a0823114610745578063715018a61461077b57806373b18e8c1461079057600080fd5b806366236b4a146106ba578063679ca6e9146106da57806369b2217f146106fa5780636a42b8f81461071a57600080fd5b80634ada218b116102b15780634ada218b1461062a5780634c469a711461064b5780634fbee193146106615780635eee4bae1461069a57600080fd5b80633f407b84146105c057806349bd5a5e146105d65780634a62bb65146105f65780634a74bb021461061057600080fd5b806318160ddd1161035a5780632307b441116103295780632307b4411461054457806323b872dd14610564578063313ce5671461058457806339509351146105a057600080fd5b806318160ddd146104d95780631d7b1fb4146104f85780631f53ac021461050e5780631fa705311461052e57600080fd5b806308dfe8a51161039657806308dfe8a5146104495780630923160214610469578063095ea7b3146104895780631694505e146104b957600080fd5b806303fd2a45146103c857806305ca5f081461040557806306fdde031461042757600080fd5b366103c357005b600080fd5b3480156103d457600080fd5b506008546103e8906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561041157600080fd5b50610425610420366004612d6d565b610b4d565b005b34801561043357600080fd5b5061043c610c1e565b6040516103fc9190612d86565b34801561045557600080fd5b50610425610464366004612dfe565b610cb0565b34801561047557600080fd5b50610425610484366004612d6d565b610d39565b34801561049557600080fd5b506104a96104a4366004612e33565b610dc8565b60405190151581526020016103fc565b3480156104c557600080fd5b506006546103e8906001600160a01b031681565b3480156104e557600080fd5b506002545b6040519081526020016103fc565b34801561050457600080fd5b506104ea60285481565b34801561051a57600080fd5b50610425610529366004612e5f565b610ddf565b34801561053a57600080fd5b506104ea600b5481565b34801561055057600080fd5b5061042561055f366004612f52565b610e76565b34801561057057600080fd5b506104a961057f366004613014565b610fce565b34801561059057600080fd5b50604051601281526020016103fc565b3480156105ac57600080fd5b506104a96105bb366004612e33565b611037565b3480156105cc57600080fd5b506104ea600a5481565b3480156105e257600080fd5b506007546103e8906001600160a01b031681565b34801561060257600080fd5b506021546104a99060ff1681565b34801561061c57600080fd5b50601d546104a99060ff1681565b34801561063657600080fd5b506009546104a990600160a81b900460ff1681565b34801561065757600080fd5b506104ea60195481565b34801561066d57600080fd5b506104a961067c366004612e5f565b6001600160a01b03166000908152601e602052604090205460ff1690565b3480156106a657600080fd5b506104256106b5366004612d6d565b61106d565b3480156106c657600080fd5b506104256106d5366004612d6d565b61116f565b3480156106e657600080fd5b506104256106f5366004613055565b611220565b34801561070657600080fd5b506009546103e8906001600160a01b031681565b34801561072657600080fd5b506104ea60275481565b34801561073c57600080fd5b5061042561125d565b34801561075157600080fd5b506104ea610760366004612e5f565b6001600160a01b031660009081526020819052604090205490565b34801561078757600080fd5b506104256112ba565b34801561079c57600080fd5b506104ea60145481565b3480156107b257600080fd5b506104256107c1366004612e5f565b61132e565b3480156107d257600080fd5b506104256107e1366004612dfe565b61139a565b3480156107f257600080fd5b50610425610801366004613070565b6113ee565b34801561081257600080fd5b50610425610821366004612e5f565b6115f7565b34801561083257600080fd5b506104ea60265481565b34801561084857600080fd5b506005546001600160a01b03166103e8565b34801561086657600080fd5b50600f546103e8906001600160a01b031681565b34801561088657600080fd5b50610425610895366004612e5f565b611687565b3480156108a657600080fd5b5061043c6116e8565b3480156108bb57600080fd5b506104256108ca366004612dfe565b6116f7565b3480156108db57600080fd5b506104ea60175481565b3480156108f157600080fd5b506104ea60185481565b34801561090757600080fd5b506104a9610916366004612e33565b61172b565b34801561092757600080fd5b506104a9610936366004612e33565b61177a565b34801561094757600080fd5b506104ea601c5481565b34801561095d57600080fd5b506104ea60255481565b34801561097357600080fd5b506104a9610982366004612e5f565b601f6020526000908152604090205460ff1681565b3480156109a357600080fd5b506104256109b2366004612d6d565b611787565b3480156109c357600080fd5b50600e546103e8906001600160a01b031681565b3480156109e357600080fd5b506104256109f2366004613055565b611817565b348015610a0357600080fd5b506104ea60135481565b348015610a1957600080fd5b506104ea601a5481565b348015610a2f57600080fd5b506104ea610a3e3660046130d8565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b348015610a7557600080fd5b50610425610a84366004613111565b611899565b348015610a9557600080fd5b506104ea60125481565b348015610aab57600080fd5b506104ea601b5481565b348015610ac157600080fd5b506104ea60115481565b348015610ad757600080fd5b506104ea60155481565b348015610aed57600080fd5b50610425610afc366004612e5f565b611ab2565b348015610b0d57600080fd5b506104ea60165481565b348015610b2357600080fd5b506104ea60105481565b348015610b3957600080fd5b50610425610b48366004612d6d565b611b9d565b6005546001600160a01b03163314610b805760405162461bcd60e51b8152600401610b7790613143565b60405180910390fd5b610b9281670de0b6b3a764000061318e565b90506000610bad600a54600b54611c5290919063ffffffff16565b90506000610bd082610bca600b5486611cb890919063ffffffff16565b90611d3a565b90506000610bed83610bca600a5487611cb890919063ffffffff16565b9050610bf884611d7c565b600b54610c059083611feb565b600b55600a54610c159082611feb565b600a5550505050565b606060038054610c2d906131a5565b80601f0160208091040260200160405190810160405280929190818152602001828054610c59906131a5565b8015610ca65780601f10610c7b57610100808354040283529160200191610ca6565b820191906000526020600020905b815481529060010190602001808311610c8957829003601f168201915b5050505050905090565b6005546001600160a01b03163314610cda5760405162461bcd60e51b8152600401610b7790613143565b6001600160a01b0382166000818152601e6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314610d635760405162461bcd60e51b8152600401610b7790613143565b6032811015610db45760405162461bcd60e51b815260206004820152601e60248201527f63616e206e6576657220626520736574206c6f776572207468616e20353000006044820152606401610b77565b610dc281633b9aca0061318e565b60225550565b6000610dd533848461202d565b5060015b92915050565b6005546001600160a01b03163314610e095760405162461bcd60e51b8152600401610b7790613143565b6001600160a01b0381166000818152601e6020908152604091829020805460ff19166001179055600f80546001600160a01b0319168417905590519182527f1816467f4e41d8dd27500ca11dc471852ca93f9b624c4d8d4430b8c4fa6424fa91015b60405180910390a150565b6005546001600160a01b03163314610ea05760405162461bcd60e51b8152600401610b7790613143565b8051825114610ef15760405162461bcd60e51b815260206004820152601e60248201527f417272617973206d757374206265207468652073616d65206c656e67746800006044820152606401610b77565b60c882511115610f4e5760405162461bcd60e51b815260206004820152602260248201527f57616c6c657473206c697374206c656e677468206d757374206265203c3d2032604482015261030360f41b6064820152608401610b77565b60005b8251811015610fc9576000838281518110610f6e57610f6e6131df565b602002602001015190506000838381518110610f8c57610f8c6131df565b6020026020010151670de0b6b3a7640000610fa7919061318e565b9050610fb4338383612152565b50508080610fc1906131f5565b915050610f51565b505050565b6000610fdb8484846122d5565b61102d843361102885604051806060016040528060288152602001613313602891396001600160a01b038a1660009081526001602090815260408083203384529091529020549190612a1f565b61202d565b5060019392505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610dd59185906110289086611c52565b6005546001600160a01b031633146110975760405162461bcd60e51b8152600401610b7790613143565b6110a981670de0b6b3a764000061318e565b6012556002546110bb9060649061320e565b601254101561110c5760405162461bcd60e51b815260206004820152601e60248201527f63616e7420736574207377617020747269676765722062656c6f7720312500006044820152606401610b77565b601460025461111b919061320e565b601254111561116c5760405162461bcd60e51b815260206004820152601e60248201527f63616e7420736574207377617020747269676765722061626f766520352500006044820152606401610b77565b50565b6005546001600160a01b031633146111995760405162461bcd60e51b8152600401610b7790613143565b6111ab81670de0b6b3a764000061318e565b90506103e86002546111bd919061320e565b81101561121b5760405162461bcd60e51b815260206004820152602660248201527f6d61782074782063616e6e6f742062652073657420746f206c657373207468616044820152656e20302e312560d01b6064820152608401610b77565b601155565b6005546001600160a01b0316331461124a5760405162461bcd60e51b8152600401610b7790613143565b6021805460ff1916911515919091179055565b6005546001600160a01b031633146112875760405162461bcd60e51b8152600401610b7790613143565b6040514790339082156108fc029083906000818181858888f193505050501580156112b6573d6000803e3d6000fd5b5050565b6005546001600160a01b031633146112e45760405162461bcd60e51b8152600401610b7790613143565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b031633146113585760405162461bcd60e51b8152600401610b7790613143565b6001600160a01b0381166000908152601e602090815260408083208054600160ff19918216811790925592805292208054909116909117905561116c81611ab2565b6005546001600160a01b031633146113c45760405162461bcd60e51b8152600401610b7790613143565b6001600160a01b039190911660009081526020805260409020805460ff1916911515919091179055565b6005546001600160a01b031633146114185760405162461bcd60e51b8152600401610b7790613143565b6002821115801561142a575060028111155b6114765760405162461bcd60e51b815260206004820152601a60248201527f6275726e20666565732063616e6e6f74206578636565642032250000000000006044820152606401610b77565b60138a9055601489905560158890556016879055601786905560188590556019849055601a839055601b829055601c8190556114be836114b887818d8c611c52565b90611c52565b600c819055506114e76019546114b86017546114b8601554601354611c5290919063ffffffff16565b600d8190556007108015906114ff57506007600c5411155b61155e5760405162461bcd60e51b815260206004820152602a60248201527f746f74616c2066656573206578636c7564696e67206275726e2063616e6e6f746044820152692065786365656420372560b01b6064820152608401610b77565b601454601654601854601354601554601754601954601a54601b54601c54604080519a8b5260208b0199909952978901969096526060880194909452608087019290925260a086015260c085015260e08401526101008301526101208201527f07cec4532bdb36ce729ae72905c09f7bfbf8682c2cc2f1999f745188d9975122906101400160405180910390a150505050505050505050565b6005546001600160a01b031633146116215760405162461bcd60e51b8152600401610b7790613143565b6001600160a01b0381166000818152601e6020908152604091829020805460ff19166001179055600e80546001600160a01b0319168417905590519182527fa6ce120ae4c6ca1889b2dd49c24a1f24b4d92b19c556bdaaaad29bcb8e018ea49101610e6b565b6005546001600160a01b031633146116b15760405162461bcd60e51b8152600401610b7790613143565b6001600160a01b03166000818152601e60205260409020805460ff19166001179055600980546001600160a01b0319169091179055565b606060048054610c2d906131a5565b6005546001600160a01b031633146117215760405162461bcd60e51b8152600401610b7790613143565b6112b68282612a59565b6000610dd5338461102885604051806060016040528060258152602001613361602591393360009081526001602090815260408083206001600160a01b038d1684529091529020549190612a1f565b6000610dd53384846122d5565b6005546001600160a01b031633146117b15760405162461bcd60e51b8152600401610b7790613143565b61012c8111156118125760405162461bcd60e51b815260206004820152602660248201527f636f6f6c646f776e2074696d65722063616e6e6f74206578636565642035206d604482015265696e7574657360d01b6064820152608401610b77565b602855565b6005546001600160a01b031633146118415760405162461bcd60e51b8152600401610b7790613143565b601d5481151560ff90911615150361185857600080fd5b601d805460ff19168215159081179091556040519081527fff5917043f8453af413305b2dbd1ed9748a37df481beb71ba4b9b212a07b9bef90602001610e6b565b6005546001600160a01b031633146118c35760405162461bcd60e51b8152600401610b7790613143565b6118d583670de0b6b3a764000061318e565b92506118e982670de0b6b3a764000061318e565b600954909250600160a81b900460ff161561190357600080fd5b60058410156119495760405162461bcd60e51b815260206004820152601260248201527163616e6e6f74207365742062656c6f77203560701b6044820152606401610b77565b6103e8600254611959919061320e565b8310156119a05760405162461bcd60e51b815260206004820152601560248201527463616e6e6f74207365742062656c6f7720302e312560581b6044820152606401610b77565b6103e86002546119b0919061320e565b8210156119f75760405162461bcd60e51b815260206004820152601560248201527463616e6e6f74207365742062656c6f7720302e312560581b6044820152606401610b77565b603c811115611a485760405162461bcd60e51b815260206004820152601760248201527f6d61782064656c6179206973203630207365636f6e64730000000000000000006044820152606401610b77565b60108390556011829055611a6084633b9aca0061318e565b6022556009805460ff60a81b1916600160a81b179055436025554260265560278190556040517f799663458a5ef2936f7fa0c99b3336c69c25890f82974f04e811e5bb359186c790600090a150505050565b6005546001600160a01b03163314611adc5760405162461bcd60e51b8152600401610b7790613143565b6001600160a01b038116611b415760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b77565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314611bc75760405162461bcd60e51b8152600401610b7790613143565b611bd981670de0b6b3a764000061318e565b90506103e8600254611beb919061320e565b811015611c4d5760405162461bcd60e51b815260206004820152602a60248201527f6d61782077616c6c65742063616e6e6f742062652073657420746f206c657373604482015269207468616e20302e312560b01b6064820152608401610b77565b601055565b600080611c5f8385613230565b905083811015611cb15760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610b77565b9392505050565b600082600003611cca57506000610dd9565b6000611cd6838561318e565b905082611ce3858361320e565b14611cb15760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610b77565b6000611cb183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612aad565b80600003611d875750565b611d9081612adb565b601954601754600191829182916000918291829182918291611dbe91611db591613230565b60135490611c52565b611dda601a54601854611dd19190613230565b60145490611c52565b611de49190613230565b94508415611e6557611df64786611d3a565b935083611e10601454601354611c5290919063ffffffff16565b611e1a919061318e565b925083611e34601854601754611c5290919063ffffffff16565b611e3e919061318e565b915083611e58601a54601954611c5290919063ffffffff16565b611e62919061318e565b90505b8215611ec357600e546040516001600160a01b03909116908490600081818185875af1925050503d8060008114611eb8576040519150601f19603f3d011682016040523d82523d6000602084013e611ebd565b606091505b50909850505b8115611f2157600f546040516001600160a01b03909116908390600081818185875af1925050503d8060008114611f16576040519150601f19603f3d011682016040523d82523d6000602084013e611f1b565b606091505b50909750505b8015611f7f576009546040516001600160a01b03909116908290600081818185875af1925050503d8060008114611f74576040519150601f19603f3d011682016040523d82523d6000602084013e611f79565b606091505b50909650505b7f31ea026303a62d39c4ad14716f9621f1afe3242309c2ed761d4e241ae4bf2ea981611fab8486613230565b611fb59190613230565b898015611fbf5750885b8015611fc85750875b6040805192835290151560208301520160405180910390a1505050505050505050565b6000611cb183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612a1f565b6001600160a01b03831661208f5760405162461bcd60e51b8152602060048201526024808201527f42455032303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b77565b6001600160a01b0382166120f05760405162461bcd60e51b815260206004820152602260248201527f42455032303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b77565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166121b65760405162461bcd60e51b815260206004820152602560248201527f42455032303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b77565b6001600160a01b0382166122185760405162461bcd60e51b815260206004820152602360248201527f42455032303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b77565b6122558160405180606001604052806026815260200161333b602691396001600160a01b0386166000908152602081905260409020549190612a1f565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546122849082611c52565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101612145565b6001600160a01b03831661233a5760405162461bcd60e51b815260206004820152602660248201527f4942455032303a207472616e736665722066726f6d20746865207a65726f206160448201526564647265737360d01b6064820152608401610b77565b6001600160a01b03821661239c5760405162461bcd60e51b8152602060048201526024808201527f4942455032303a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610b77565b6001600160a01b0383166000908152602080526040812054819081908190819060ff1661241c57600954600160a81b900460ff1661241c5760405162461bcd60e51b815260206004820181905260248201527f54726164696e6720686173206e6f7420796574206265656e20656e61626c65646044820152606401610b77565b8560000361243a5761243088886000612152565b5050505050505050565b600954600160a01b900460ff1615801561246d57506001600160a01b0388166000908152601e602052604090205460ff16155b801561249257506001600160a01b0387166000908152601e602052604090205460ff16155b15612a14576001600160a01b038088166000908152601f602052604080822054928b16825290205460ff9182169116801580156124cd575081155b156124e9576124dd8a8a8a612152565b50505050505050505050565b81156125e557601454601654601854601a54601c54602154949b509299509097509550935060ff16156125e057602854326000908152602460205260409020546125339190613230565b42101561257b5760405162461bcd60e51b8152602060048201526016602482015275636f6f6c646f776e20706572696f642061637469766560501b6044820152606401610b77565b6011548811156125cd5760405162461bcd60e51b815260206004820152601b60248201527f61626f7665206d6178207472616e73616374696f6e206c696d697400000000006044820152606401610b77565b3260009081526024602052604090204290555b612801565b801561280157601354601554601754601954601b54602154949b509299509097509550935060ff161561277f576027546026546126229190613230565b42116126655760405162461bcd60e51b8152602060048201526012602482015271796f75207368616c6c206e6f74207061737360701b6044820152606401610b77565b6022543a11156126b75760405162461bcd60e51b815260206004820152601860248201527f4761732070726963652065786365656473206c696d69742e00000000000000006044820152606401610b77565b3260009081526023602052604090205443900361270d5760405162461bcd60e51b8152602060048201526014602482015273546f6f206d616e7920545820696e20626c6f636b60601b6044820152606401610b77565b60115488111561275f5760405162461bcd60e51b815260206004820152601b60248201527f61626f7665206d6178207472616e73616374696f6e206c696d697400000000006044820152606401610b77565b326000908152602360209081526040808320439055602490915290204290555b6001600160a01b0389166000908152602081905260409020546010546127a58a83613230565b11156127ff5760405162461bcd60e51b8152602060048201526024808201527f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f6044820152633ab73a1760e11b6064820152608401610b77565b505b601954600090612817906114b888818c8c611c52565b30600090815260208190526040902054601254919250908110801590819061283c5750845b15612954576009805460ff60a01b1916600160a01b179055601d5460009060ff168015612869575060008a115b801561287757506000600d54115b1561291f576000600a54600b5461288e9190613230565b9050600081600b54866128a1919061318e565b6128ab919061320e565b9050600082600a54876128be919061318e565b6128c8919061320e565b90506000600d548e846128db919061318e565b6128e5919061320e565b90506000600c548f846128f8919061318e565b612902919061320e565b905061290e8282613230565b955061291986612c35565b50505050505b60125460009061292f9083611feb565b905061293a81611d7c565b50506001600b819055600a556009805460ff60a01b191690555b60006064612962858e61318e565b61296c919061320e565b9050600087156129bf576064612982898f61318e565b61298c919061320e565b90506129ae8f600860009054906101000a90046001600160a01b031683612152565b6002546129bb9082611feb565b6002555b6129d36129cc8284613230565b8e90611feb565b9c5086156129f057600a546129e89083611c52565b600a55612a01565b600b546129fd9083611c52565b600b555b612a0c8f3084612152565b505050505050505b612430888888612152565b60008184841115612a435760405162461bcd60e51b8152600401610b779190612d86565b506000612a508486613243565b95945050505050565b6001600160a01b0382166000818152601f6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b60008183612ace5760405162461bcd60e51b8152600401610b779190612d86565b506000612a50848661320e565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612b1057612b106131df565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612b69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b8d9190613256565b81600181518110612ba057612ba06131df565b6001600160a01b039283166020918202929092010152600654612bc6913091168461202d565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790612bff908590600090869030904290600401613273565b600060405180830381600087803b158015612c1957600080fd5b505af1158015612c2d573d6000803e3d6000fd5b505050505050565b6000612c42826002611d3a565b90506000612c508383611feb565b905047612c5c83612adb565b6000612c684783611feb565b9050612c748382612cbc565b60408051858152602081018390529081018490527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15050505050565b600654612cd49030906001600160a01b03168461202d565b60065460405163f305d71960e01b8152306004820152602481018490526000604482018190526064820181905260848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015612d41573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612d6691906132e4565b5050505050565b600060208284031215612d7f57600080fd5b5035919050565b600060208083528351808285015260005b81811015612db357858101830151858201604001528201612d97565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461116c57600080fd5b80358015158114612df957600080fd5b919050565b60008060408385031215612e1157600080fd5b8235612e1c81612dd4565b9150612e2a60208401612de9565b90509250929050565b60008060408385031215612e4657600080fd5b8235612e5181612dd4565b946020939093013593505050565b600060208284031215612e7157600080fd5b8135611cb181612dd4565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612ebb57612ebb612e7c565b604052919050565b600067ffffffffffffffff821115612edd57612edd612e7c565b5060051b60200190565b600082601f830112612ef857600080fd5b81356020612f0d612f0883612ec3565b612e92565b82815260059290921b84018101918181019086841115612f2c57600080fd5b8286015b84811015612f475780358352918301918301612f30565b509695505050505050565b60008060408385031215612f6557600080fd5b823567ffffffffffffffff80821115612f7d57600080fd5b818501915085601f830112612f9157600080fd5b81356020612fa1612f0883612ec3565b82815260059290921b84018101918181019089841115612fc057600080fd5b948201945b83861015612fe7578535612fd881612dd4565b82529482019490820190612fc5565b96505086013592505080821115612ffd57600080fd5b5061300a85828601612ee7565b9150509250929050565b60008060006060848603121561302957600080fd5b833561303481612dd4565b9250602084013561304481612dd4565b929592945050506040919091013590565b60006020828403121561306757600080fd5b611cb182612de9565b6000806000806000806000806000806101408b8d03121561309057600080fd5b505088359a60208a01359a5060408a013599606081013599506080810135985060a0810135975060c0810135965060e081013595506101008101359450610120013592509050565b600080604083850312156130eb57600080fd5b82356130f681612dd4565b9150602083013561310681612dd4565b809150509250929050565b6000806000806080858703121561312757600080fd5b5050823594602084013594506040840135936060013592509050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610dd957610dd9613178565b600181811c908216806131b957607f821691505b6020821081036131d957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b60006001820161320757613207613178565b5060010190565b60008261322b57634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610dd957610dd9613178565b81810381811115610dd957610dd9613178565b60006020828403121561326857600080fd5b8151611cb181612dd4565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156132c35784516001600160a01b03168352938301939183019160010161329e565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156132f957600080fd5b835192506020840151915060408401519050925092509256fe42455032303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636542455032303a207472616e7366657220616d6f756e7420657863656564732062616c616e636542455032303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212207484ebb96a7febbbe4ae231cd64d10e67804b4533c6ddc48f8e40b78000f4a9a64736f6c63430008110033
Deployed Bytecode Sourcemap
15318:18544:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15480:64;;;;;;;;;;-1:-1:-1;15480:64:0;;;;-1:-1:-1;;;;;15480:64:0;;;;;;-1:-1:-1;;;;;178:32:1;;;160:51;;148:2;133:18;15480:64:0;;;;;;;;31359:443;;;;;;;;;;-1:-1:-1;31359:443:0;;;;;:::i;:::-;;:::i;:::-;;3201:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;21223:181::-;;;;;;;;;;-1:-1:-1;21223:181:0;;;;;:::i;:::-;;:::i;21695:171::-;;;;;;;;;;-1:-1:-1;21695:171:0;;;;;:::i;:::-;;:::i;4115:169::-;;;;;;;;;;-1:-1:-1;4115:169:0;;;;;:::i;:::-;;:::i;:::-;;;2066:14:1;;2059:22;2041:41;;2029:2;2014:18;4115:169:0;1901:187:1;15395:41:0;;;;;;;;;;-1:-1:-1;15395:41:0;;;;-1:-1:-1;;;;;15395:41:0;;;3522:108;;;;;;;;;;-1:-1:-1;3610:12:0;;3522:108;;;2474:25:1;;;2462:2;2447:18;3522:108:0;2328:177:1;16932:33:0;;;;;;;;;;;;;;;;20841:187;;;;;;;;;;-1:-1:-1;20841:187:0;;;;;:::i;:::-;;:::i;15706:28::-;;;;;;;;;;;;;;;;33298:561;;;;;;;;;;-1:-1:-1;33298:561:0;;;;;:::i;:::-;;:::i;4292:345::-;;;;;;;;;;-1:-1:-1;4292:345:0;;;;;:::i;:::-;;:::i;19593:93::-;;;;;;;;;;-1:-1:-1;19593:93:0;;19676:2;5852:36:1;;5840:2;5825:18;19593:93:0;5710:184:1;4645:218:0;;;;;;;;;;-1:-1:-1;4645:218:0;;;;;:::i;:::-;;:::i;15670:29::-;;;;;;;;;;;;;;;;15445:28;;;;;;;;;;-1:-1:-1;15445:28:0;;;;-1:-1:-1;;;;;15445:28:0;;;16606:33;;;;;;;;;;-1:-1:-1;16606:33:0;;;;;;;;16359:40;;;;;;;;;;-1:-1:-1;16359:40:0;;;;;;;;15627:34;;;;;;;;;;-1:-1:-1;15627:34:0;;;;-1:-1:-1;;;15627:34:0;;;;;;16215:31;;;;;;;;;;;;;;;;25029:126;;;;;;;;;;-1:-1:-1;25029:126:0;;;;;:::i;:::-;-1:-1:-1;;;;;25119:28:0;25095:4;25119:28;;;:19;:28;;;;;;;;;25029:126;22666:307;;;;;;;;;;-1:-1:-1;22666:307:0;;;;;:::i;:::-;;:::i;22295:209::-;;;;;;;;;;-1:-1:-1;22295:209:0;;;;;:::i;:::-;;:::i;21567:99::-;;;;;;;;;;-1:-1:-1;21567:99:0;;;;;:::i;:::-;;:::i;15551:41::-;;;;;;;;;;-1:-1:-1;15551:41:0;;;;-1:-1:-1;;;;;15551:41:0;;;16905:20;;;;;;;;;;;;;;;;22512:146;;;;;;;;;;;;;:::i;3638:127::-;;;;;;;;;;-1:-1:-1;3638:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;3739:18:0;3712:7;3739:18;;;;;;;;;;;;3638:127;7093:148;;;;;;;;;;;;;:::i;16038:32::-;;;;;;;;;;;;;;;;23541:212;;;;;;;;;;-1:-1:-1;23541:212:0;;;;;:::i;:::-;;:::i;21412:147::-;;;;;;;;;;-1:-1:-1;21412:147:0;;;;;:::i;:::-;;:::i;23761:1260::-;;;;;;;;;;-1:-1:-1;23761:1260:0;;;;;:::i;:::-;;:::i;20628:205::-;;;;;;;;;;-1:-1:-1;20628:205:0;;;;;:::i;:::-;;:::i;16868:30::-;;;;;;;;;;;;;;;;6879:79;;;;;;;;;;-1:-1:-1;6944:6:0;;-1:-1:-1;;;;;6944:6:0;6879:79;;15861:32;;;;;;;;;;-1:-1:-1;15861:32:0;;;;-1:-1:-1;;;;;15861:32:0;;;21036:175;;;;;;;;;;-1:-1:-1;21036:175:0;;;;;:::i;:::-;;:::i;3309:104::-;;;;;;;;;;;;;:::i;23197:140::-;;;;;;;;;;-1:-1:-1;23197:140:0;;;;;:::i;:::-;;:::i;16152:24::-;;;;;;;;;;;;;;;;16183:25;;;;;;;;;;;;;;;;4871:286;;;;;;;;;;-1:-1:-1;4871:286:0;;;;;:::i;:::-;;:::i;3773:175::-;;;;;;;;;;-1:-1:-1;3773:175:0;;;;;:::i;:::-;;:::i;16324:26::-;;;;;;;;;;;;;;;;16835;;;;;;;;;;;;;;;;16467:57;;;;;;;;;;-1:-1:-1;16467:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;21878:174;;;;;;;;;;-1:-1:-1;21878:174:0;;;;;:::i;:::-;;:::i;15816:38::-;;;;;;;;;;-1:-1:-1;15816:38:0;;;;-1:-1:-1;;;;;15816:38:0;;;22981:208;;;;;;;;;;-1:-1:-1;22981:208:0;;;;;:::i;:::-;;:::i;16000:31::-;;;;;;;;;;;;;;;;16253:32;;;;;;;;;;;;;;;;3956:151;;;;;;;;;;-1:-1:-1;3956:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;4072:18:0;;;4045:7;4072:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3956:151;19731:885;;;;;;;;;;-1:-1:-1;19731:885:0;;;;;:::i;:::-;;:::i;15960:33::-;;;;;;;;;;;;;;;;16292:25;;;;;;;;;;;;;;;;15933:20;;;;;;;;;;;;;;;;16077:30;;;;;;;;;;;;;;;;7249:244;;;;;;;;;;-1:-1:-1;7249:244:0;;;;;:::i;:::-;;:::i;16114:31::-;;;;;;;;;;;;;;;;15902:24;;;;;;;;;;;;;;;;22066:221;;;;;;;;;;-1:-1:-1;22066:221:0;;;;;:::i;:::-;;:::i;31359:443::-;7006:6;;-1:-1:-1;;;;;7006:6:0;113:10;7006:22;6998:67;;;;-1:-1:-1;;;6998:67:0;;;;;;;:::i;:::-;;;;;;;;;31447:17:::1;:6:::0;31457::::1;31447:17;:::i;:::-;31438:26;;31475:19;31497:25;31511:10;;31497:9;;:13;;:25;;;;:::i;:::-;31475:47;;31533:15;31551:38;31577:11;31551:21;31562:9;;31551:6;:10;;:21;;;;:::i;:::-;:25:::0;::::1;:38::i;:::-;31533:56;;31600:16;31619:39;31646:11;31619:22;31630:10;;31619:6;:10;;:22;;;;:::i;:39::-;31600:58;;31671:28;31692:6;31671:20;:28::i;:::-;31724:9;::::0;:22:::1;::::0;31738:7;31724:13:::1;:22::i;:::-;31712:9;:34:::0;31770:10:::1;::::0;:24:::1;::::0;31785:8;31770:14:::1;:24::i;:::-;31757:10;:37:::0;-1:-1:-1;;;;31359:443:0:o;3201:100::-;3255:13;3288:5;3281:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3201:100;:::o;21223:181::-;7006:6;;-1:-1:-1;;;;;7006:6:0;113:10;7006:22;6998:67;;;;-1:-1:-1;;;6998:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21307:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;21307:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;21362:34;;2041:41:1;;;21362:34:0::1;::::0;2014:18:1;21362:34:0::1;;;;;;;21223:181:::0;;:::o;21695:171::-;7006:6;;-1:-1:-1;;;;;7006:6:0;113:10;7006:22;6998:67;;;;-1:-1:-1;;;6998:67:0;;;;;;;:::i;:::-;21781:2:::1;21773:4;:10;;21765:53;;;::::0;-1:-1:-1;;;21765:53:0;;9148:2:1;21765:53:0::1;::::0;::::1;9130:21:1::0;9187:2;9167:18;;;9160:30;9226:32;9206:18;;;9199:60;9276:18;;21765:53:0::1;8946:354:1::0;21765:53:0::1;21845:13;:4:::0;21852:6:::1;21845:13;:::i;:::-;21829;:29:::0;-1:-1:-1;21695:171:0:o;4115:169::-;4198:4;4215:39;113:10;4238:7;4247:6;4215:8;:39::i;:::-;-1:-1:-1;4272:4:0;4115:169;;;;;:::o;20841:187::-;7006:6;;-1:-1:-1;;;;;7006:6:0;113:10;7006:22;6998:67;;;;-1:-1:-1;;;6998:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20909:27:0;::::1;;::::0;;;:19:::1;:27;::::0;;;;;;;;:34;;-1:-1:-1;;20909:34:0::1;20939:4;20909:34;::::0;;20954:9:::1;:27:::0;;-1:-1:-1;;;;;;20954:27:0::1;::::0;::::1;::::0;;20997:23;;160:51:1;;;20997:23:0::1;::::0;133:18:1;20997:23:0::1;;;;;;;;20841:187:::0;:::o;33298:561::-;7006:6;;-1:-1:-1;;;;;7006:6:0;113:10;7006:22;6998:67;;;;-1:-1:-1;;;6998:67:0;;;;;;;:::i;:::-;33470:6:::1;:13;33445:14;:21;:38;33437:81;;;::::0;-1:-1:-1;;;33437:81:0;;9507:2:1;33437:81:0::1;::::0;::::1;9489:21:1::0;9546:2;9526:18;;;9519:30;9585:32;9565:18;;;9558:60;9635:18;;33437:81:0::1;9305:354:1::0;33437:81:0::1;33562:3;33537:14;:21;:28;;33529:75;;;::::0;-1:-1:-1;;;33529:75:0;;9866:2:1;33529:75:0::1;::::0;::::1;9848:21:1::0;9905:2;9885:18;;;9878:30;9944:34;9924:18;;;9917:62;-1:-1:-1;;;9995:18:1;;;9988:32;10037:19;;33529:75:0::1;9664:398:1::0;33529:75:0::1;33620:9;33615:237;33639:14;:21;33635:1;:25;33615:237;;;33682:14;33699;33714:1;33699:17;;;;;;;;:::i;:::-;;;;;;;33682:34;;33731:21;33755:6;33762:1;33755:9;;;;;;;;:::i;:::-;;;;;;;33768:6;33755:20;;;;:::i;:::-;33731:44;;33790:50;33806:10;33818:6;33826:13;33790:15;:50::i;:::-;33667:185;;33662:3;;;;;:::i;:::-;;;;33615:237;;;;33298:561:::0;;:::o;4292:345::-;4405:4;4422:36;4432:6;4440:9;4451:6;4422:9;:36::i;:::-;4469:138;4478:6;113:10;4500:106;4538:6;4500:106;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4500:19:0;;;;;;:11;:19;;;;;;;;113:10;4500:33;;;;;;;;;;:37;:106::i;:::-;4469:8;:138::i;:::-;-1:-1:-1;4625:4:0;4292:345;;;;;:::o;4645:218::-;113:10;4733:4;4782:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;4782:34:0;;;;;;;;;;4733:4;;4750:83;;4773:7;;4782:50;;4821:10;4782:38;:50::i;22666:307::-;7006:6;;-1:-1:-1;;;;;7006:6:0;113:10;7006:22;6998:67;;;;-1:-1:-1;;;6998:67:0;;;;;;;:::i;:::-;22761:17:::1;:6:::0;22771::::1;22761:17;:::i;:::-;22740:18;:38:::0;22819:12:::1;::::0;:18:::1;::::0;22834:3:::1;::::0;22819:18:::1;:::i;:::-;22797;;:40;;22789:83;;;::::0;-1:-1:-1;;;22789:83:0;;10763:2:1;22789:83:0::1;::::0;::::1;10745:21:1::0;10802:2;10782:18;;;10775:30;10841:32;10821:18;;;10814:60;10891:18;;22789:83:0::1;10561:354:1::0;22789:83:0::1;22928:2;22913:12;;:17;;;;:::i;:::-;22891:18;;:39;;22883:82;;;::::0;-1:-1:-1;;;22883:82:0;;11122:2:1;22883:82:0::1;::::0;::::1;11104:21:1::0;11161:2;11141:18;;;11134:30;11200:32;11180:18;;;11173:60;11250:18;;22883:82:0::1;10920:354:1::0;22883:82:0::1;22666:307:::0;:::o;22295:209::-;7006:6;;-1:-1:-1;;;;;7006:6:0;113:10;7006:22;6998:67;;;;-1:-1:-1;;;6998:67:0;;;;;;;:::i;:::-;22366:16:::1;:5:::0;22375:6:::1;22366:16;:::i;:::-;22358:24;;22425:4;22410:12;;:19;;;;:::i;:::-;22401:5;:28;;22393:79;;;::::0;-1:-1:-1;;;22393:79:0;;11481:2:1;22393:79:0::1;::::0;::::1;11463:21:1::0;11520:2;11500:18;;;11493:30;11559:34;11539:18;;;11532:62;-1:-1:-1;;;11610:18:1;;;11603:36;11656:19;;22393:79:0::1;11279:402:1::0;22393:79:0::1;22483:5;:13:::0;22295:209::o;21567:99::-;7006:6;;-1:-1:-1;;;;;7006:6:0;113:10;7006:22;6998:67;;;;-1:-1:-1;;;6998:67:0;;;;;;;:::i;:::-;21636:14:::1;:22:::0;;-1:-1:-1;;21636:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;21567:99::o;22512:146::-;7006:6;;-1:-1:-1;;;;;7006:6:0;113:10;7006:22;6998:67;;;;-1:-1:-1;;;6998:67:0;;;;;;;:::i;:::-;22611:39:::1;::::0;22579:21:::1;::::0;22619:10:::1;::::0;22611:39;::::1;;;::::0;22579:21;;22559:17:::1;22611:39:::0;22559:17;22611:39;22579:21;22619:10;22611:39;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;22548:110;22512:146::o:0;7093:148::-;7006:6;;-1:-1:-1;;;;;7006:6:0;113:10;7006:22;6998:67;;;;-1:-1:-1;;;6998:67:0;;;;;;;:::i;:::-;7184:6:::1;::::0;7163:40:::1;::::0;7200:1:::1;::::0;-1:-1:-1;;;;;7184:6:0::1;::::0;7163:40:::1;::::0;7200:1;;7163:40:::1;7214:6;:19:::0;;-1:-1:-1;;;;;;7214:19:0::1;::::0;;7093:148::o;23541:212::-;7006:6;;-1:-1:-1;;;;;7006:6:0;113:10;7006:22;6998:67;;;;-1:-1:-1;;;6998:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23610:29:0;::::1;;::::0;;;:19:::1;:29;::::0;;;;;;;:36;;23642:4:::1;-1:-1:-1::0;;23610:36:0;;::::1;::::0;::::1;::::0;;;23657:43;;;;;:50;;;;::::1;::::0;;::::1;::::0;;23718:27:::1;23610:29:::0;23718:17:::1;:27::i;21412:147::-:0;7006:6;;-1:-1:-1;;;;;7006:6:0;113:10;7006:22;6998:67;;;;-1:-1:-1;;;6998:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21501:41:0;;;::::1;;::::0;;;:33:::1;:41:::0;;;;;:50;;-1:-1:-1;;21501:50:0::1;::::0;::::1;;::::0;;;::::1;::::0;;21412:147::o;23761:1260::-;7006:6;;-1:-1:-1;;;;;7006:6:0;113:10;7006:22;6998:67;;;;-1:-1:-1;;;6998:67:0;;;;;;;:::i;:::-;24071:1:::1;24060:7;:12;;:29;;;;;24088:1;24076:8;:13;;24060:29;24052:67;;;::::0;-1:-1:-1;;;24052:67:0;;11888:2:1;24052:67:0::1;::::0;::::1;11870:21:1::0;11927:2;11907:18;;;11900:30;11966:28;11946:18;;;11939:56;12012:18;;24052:67:0::1;11686:350:1::0;24052:67:0::1;24132:16;:31:::0;;;24174:17:::1;:33:::0;;;24218:15:::1;:30:::0;;;24259:16:::1;:32:::0;;;24302:9:::1;:18:::0;;;24331:10:::1;:20:::0;;;24362:16:::1;:25:::0;;;24398:17:::1;:27:::0;;;24436:10:::1;:20:::0;;;24467:11:::1;:22:::0;;;24518:78:::1;24418:7:::0;24518:55:::1;24344:7:::0;24518:55;24194:13;24278;24518:21:::1;:39::i;:::-;:43:::0;::::1;:55::i;:78::-;24502:13;:94;;;;24622:74;24679:16;;24622:52;24664:9;;24622:37;24643:15;;24622:16;;:20;;:37;;;;:::i;:74::-;24607:12;:89:::0;;;24733:1:::1;-1:-1:-1::0;24717:17:0;::::1;::::0;:39:::1;;;24755:1;24738:13;;:18;;24717:39;24709:94;;;::::0;-1:-1:-1;;;24709:94:0;;12243:2:1;24709:94:0::1;::::0;::::1;12225:21:1::0;12282:2;12262:18;;;12255:30;12321:34;12301:18;;;12294:62;-1:-1:-1;;;12372:18:1;;;12365:40;12422:19;;24709:94:0::1;12041:406:1::0;24709:94:0::1;24832:17;::::0;24851:16:::1;::::0;24869:10:::1;::::0;24881:16:::1;::::0;24924:15:::1;::::0;24941:9:::1;::::0;24952:16:::1;::::0;24970:17:::1;::::0;24989:10:::1;::::0;25001:11:::1;::::0;24821:192:::1;::::0;;12851:25:1;;;12907:2;12892:18;;12885:34;;;;12935:18;;;12928:34;;;;12993:2;12978:18;;12971:34;;;;13036:3;13021:19;;13014:35;;;;13080:3;13065:19;;13058:35;13124:3;13109:19;;13102:35;13168:3;13153:19;;13146:35;13212:3;13197:19;;13190:35;13256:3;13241:19;;13234:35;24821:192:0::1;::::0;12838:3:1;12823:19;24821:192:0::1;;;;;;;23761:1260:::0;;;;;;;;;;:::o;20628:205::-;7006:6;;-1:-1:-1;;;;;7006:6:0;113:10;7006:22;6998:67;;;;-1:-1:-1;;;6998:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20702:27:0;::::1;;::::0;;;:19:::1;:27;::::0;;;;;;;;:34;;-1:-1:-1;;20702:34:0::1;20732:4;20702:34;::::0;;20747:15:::1;:33:::0;;-1:-1:-1;;;;;;20747:33:0::1;::::0;::::1;::::0;;20796:29;;160:51:1;;;20796:29:0::1;::::0;133:18:1;20796:29:0::1;14:203:1::0;21036:175:0;7006:6;;-1:-1:-1;;;;;7006:6:0;113:10;7006:22;6998:67;;;;-1:-1:-1;;;6998:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21114:31:0::1;;::::0;;;:19:::1;:31;::::0;;;;:38;;-1:-1:-1;;21114:38:0::1;21148:4;21114:38;::::0;;21163:18:::1;:40:::0;;-1:-1:-1;;;;;;21163:40:0::1;::::0;;::::1;::::0;;21036:175::o;3309:104::-;3365:13;3398:7;3391:14;;;;;:::i;23197:140::-;7006:6;;-1:-1:-1;;;;;7006:6:0;113:10;7006:22;6998:67;;;;-1:-1:-1;;;6998:67:0;;;;;;;:::i;:::-;23288:41:::1;23317:4;23323:5;23288:28;:41::i;4871:286::-:0;4964:4;4981:146;113:10;5004:7;5013:113;5052:15;5013:113;;;;;;;;;;;;;;;;;113:10;5013:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;5013:34:0;;;;;;;;;;;;:38;:113::i;3773:175::-;3859:4;3876:42;113:10;3900:9;3911:6;3876:9;:42::i;21878:174::-;7006:6;;-1:-1:-1;;;;;7006:6:0;113:10;7006:22;6998:67;;;;-1:-1:-1;;;6998:67:0;;;;;;;:::i;:::-;21966:3:::1;21957:5;:12;;21949:63;;;::::0;-1:-1:-1;;;21949:63:0;;13482:2:1;21949:63:0::1;::::0;::::1;13464:21:1::0;13521:2;13501:18;;;13494:30;13560:34;13540:18;;;13533:62;-1:-1:-1;;;13611:18:1;;;13604:36;13657:19;;21949:63:0::1;13280:402:1::0;21949:63:0::1;22023:13;:21:::0;21878:174::o;22981:208::-;7006:6;;-1:-1:-1;;;;;7006:6:0;113:10;7006:22;6998:67;;;;-1:-1:-1;;;6998:67:0;;;;;;;:::i;:::-;23061:21:::1;::::0;:32;::::1;;:21;::::0;;::::1;:32;;::::0;23053:41:::1;;;::::0;::::1;;23105:21;:31:::0;;-1:-1:-1;;23105:31:0::1;::::0;::::1;;::::0;;::::1;::::0;;;23152:29:::1;::::0;2041:41:1;;;23152:29:0::1;::::0;2029:2:1;2014:18;23152:29:0::1;1901:187:1::0;19731:885:0;7006:6;;-1:-1:-1;;;;;7006:6:0;113:10;7006:22;6998:67;;;;-1:-1:-1;;;6998:67:0;;;;;;;:::i;:::-;19921:27:::1;:16:::0;19941:6:::1;19921:27;:::i;:::-;19902:46:::0;-1:-1:-1;19974:23:0::1;:12:::0;19990:6:::1;19974:23;:::i;:::-;20017:14;::::0;19959:38;;-1:-1:-1;;;;20017:14:0;::::1;;;20016:15;20008:24;;;::::0;::::1;;20069:1;20051:14;:19;;20043:50;;;::::0;-1:-1:-1;;;20043:50:0;;13889:2:1;20043:50:0::1;::::0;::::1;13871:21:1::0;13928:2;13908:18;;;13901:30;-1:-1:-1;;;13947:18:1;;;13940:48;14005:18;;20043:50:0::1;13687:342:1::0;20043:50:0::1;20147:4;20132:12;;:19;;;;:::i;:::-;20112:16;:39;;20104:72;;;::::0;-1:-1:-1;;;20104:72:0;;14236:2:1;20104:72:0::1;::::0;::::1;14218:21:1::0;14275:2;14255:18;;;14248:30;-1:-1:-1;;;14294:18:1;;;14287:51;14355:18;;20104:72:0::1;14034:345:1::0;20104:72:0::1;20226:4;20211:12;;:19;;;;:::i;:::-;20195:12;:35;;20187:68;;;::::0;-1:-1:-1;;;20187:68:0;;14236:2:1;20187:68:0::1;::::0;::::1;14218:21:1::0;14275:2;14255:18;;;14248:30;-1:-1:-1;;;14294:18:1;;;14287:51;14355:18;;20187:68:0::1;14034:345:1::0;20187:68:0::1;20286:2;20274:8;:14;;20266:50;;;::::0;-1:-1:-1;;;20266:50:0;;14586:2:1;20266:50:0::1;::::0;::::1;14568:21:1::0;14625:2;14605:18;;;14598:30;14664:25;14644:18;;;14637:53;14707:18;;20266:50:0::1;14384:347:1::0;20266:50:0::1;20327:9;:28:::0;;;20366:5:::1;:20:::0;;;20413:23:::1;:14:::0;20430:6:::1;20413:23;:::i;:::-;20397:13;:39:::0;20447:14:::1;:21:::0;;-1:-1:-1;;;;20447:21:0::1;-1:-1:-1::0;;;20447:21:0::1;::::0;;20493:12:::1;20479:11;:26:::0;20534:15:::1;20516;:33:::0;20560:5:::1;:16:::0;;;20592::::1;::::0;::::1;::::0;20447:21;;20592:16:::1;19731:885:::0;;;;:::o;7249:244::-;7006:6;;-1:-1:-1;;;;;7006:6:0;113:10;7006:22;6998:67;;;;-1:-1:-1;;;6998:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7338:22:0;::::1;7330:73;;;::::0;-1:-1:-1;;;7330:73:0;;14938:2:1;7330:73:0::1;::::0;::::1;14920:21:1::0;14977:2;14957:18;;;14950:30;15016:34;14996:18;;;14989:62;-1:-1:-1;;;15067:18:1;;;15060:36;15113:19;;7330:73:0::1;14736:402:1::0;7330:73:0::1;7440:6;::::0;7419:38:::1;::::0;-1:-1:-1;;;;;7419:38:0;;::::1;::::0;7440:6:::1;::::0;7419:38:::1;::::0;7440:6:::1;::::0;7419:38:::1;7468:6;:17:::0;;-1:-1:-1;;;;;;7468:17:0::1;-1:-1:-1::0;;;;;7468:17:0;;;::::1;::::0;;;::::1;::::0;;7249:244::o;22066:221::-;7006:6;;-1:-1:-1;;;;;7006:6:0;113:10;7006:22;6998:67;;;;-1:-1:-1;;;6998:67:0;;;;;;;:::i;:::-;22141:16:::1;:5:::0;22150:6:::1;22141:16;:::i;:::-;22133:24;;22200:4;22185:12;;:19;;;;:::i;:::-;22176:5;:28;;22168:83;;;::::0;-1:-1:-1;;;22168:83:0;;15345:2:1;22168:83:0::1;::::0;::::1;15327:21:1::0;15384:2;15364:18;;;15357:30;15423:34;15403:18;;;15396:62;-1:-1:-1;;;15474:18:1;;;15467:40;15524:19;;22168:83:0::1;15143:406:1::0;22168:83:0::1;22262:9;:17:::0;22066:221::o;409:179::-;467:7;;499:5;503:1;499;:5;:::i;:::-;487:17;;528:1;523;:6;;515:46;;;;-1:-1:-1;;;515:46:0;;15886:2:1;515:46:0;;;15868:21:1;15925:2;15905:18;;;15898:30;15964:29;15944:18;;;15937:57;16011:18;;515:46:0;15684:351:1;515:46:0;579:1;409:179;-1:-1:-1;;;409:179:0:o;938:248::-;996:7;1020:1;1025;1020:6;1016:47;;-1:-1:-1;1050:1:0;1043:8;;1016:47;1075:9;1087:5;1091:1;1087;:5;:::i;:::-;1075:17;-1:-1:-1;1120:1:0;1111:5;1115:1;1075:17;1111:5;:::i;:::-;:10;1103:56;;;;-1:-1:-1;;;1103:56:0;;16242:2:1;1103:56:0;;;16224:21:1;16281:2;16261:18;;;16254:30;16320:34;16300:18;;;16293:62;-1:-1:-1;;;16371:18:1;;;16364:31;16412:19;;1103:56:0;16040:397:1;1194:132:0;1252:7;1279:39;1283:1;1286;1279:39;;;;;;;;;;;;;;;;;:3;:39::i;31810:1480::-;31879:6;31889:1;31879:11;31875:50;;31810:1480;:::o;31875:50::-;31935:24;31952:6;31935:16;:24::i;:::-;32361:16;;32349:9;;31987:4;;;;;;31972:12;;;;;;;;;;32328:50;;32349:28;;;:::i;:::-;32328:16;;;:20;:50::i;:::-;32246:53;32281:17;;32268:10;;:30;;;;:::i;:::-;32246:17;;;:21;:53::i;:::-;:132;;;;:::i;:::-;32230:148;-1:-1:-1;32395:17:0;;32391:336;;32443:40;:21;32469:13;32443:25;:40::i;:::-;32429:54;;32558:11;32516:39;32537:17;;32516:16;;:20;;:39;;;;:::i;:::-;:53;;;;:::i;:::-;32498:71;;32624:11;32596:25;32610:10;;32596:9;;:13;;:25;;;;:::i;:::-;:39;;;;:::i;:::-;32584:51;;32704:11;32662:39;32683:17;;32662:16;;:20;;:39;;;;:::i;:::-;:53;;;;:::i;:::-;32650:65;;32391:336;32761:19;;32757:123;;32819:15;;32811:57;;-1:-1:-1;;;;;32819:15:0;;;;32848;;32811:57;;;;32848:15;32819;32811:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;32797:71:0;;-1:-1:-1;;32757:123:0;32904:13;;32900:108;;32959:9;;32951:45;;-1:-1:-1;;;;;32959:9:0;;;;32982;;32951:45;;;;32982:9;32959;32951:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;32934:62:0;;-1:-1:-1;;32900:108:0;33024:13;;33020:117;;33079:18;;33071:54;;-1:-1:-1;;;;;33079:18:0;;;;33111:9;;33071:54;;;;33111:9;33079:18;33071:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;33054:71:0;;-1:-1:-1;;33020:117:0;33154:128;33212:9;33182:27;33200:9;33182:15;:27;:::i;:::-;:39;;;;:::i;:::-;33236:7;:21;;;;;33247:10;33236:21;:35;;;;;33261:10;33236:35;33154:128;;;16820:25:1;;;16888:14;;16881:22;16876:2;16861:18;;16854:50;16793:18;33154:128:0;;;;;;;31864:1426;;;;;;;;31810:1480;:::o;596:136::-;654:7;681:43;685:1;688;681:43;;;;;;;;;;;;;;;;;:3;:43::i;6097:346::-;-1:-1:-1;;;;;6199:19:0;;6191:68;;;;-1:-1:-1;;;6191:68:0;;17117:2:1;6191:68:0;;;17099:21:1;17156:2;17136:18;;;17129:30;17195:34;17175:18;;;17168:62;-1:-1:-1;;;17246:18:1;;;17239:34;17290:19;;6191:68:0;16915:400:1;6191:68:0;-1:-1:-1;;;;;6278:21:0;;6270:68;;;;-1:-1:-1;;;6270:68:0;;17522:2:1;6270:68:0;;;17504:21:1;17561:2;17541:18;;;17534:30;17600:34;17580:18;;;17573:62;-1:-1:-1;;;17651:18:1;;;17644:32;17693:19;;6270:68:0;17320:398:1;6270:68:0;-1:-1:-1;;;;;6351:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;6403:32;;2474:25:1;;;6403:32:0;;2447:18:1;6403:32:0;;;;;;;;6097:346;;;:::o;5165:538::-;-1:-1:-1;;;;;5271:20:0;;5263:70;;;;-1:-1:-1;;;5263:70:0;;17925:2:1;5263:70:0;;;17907:21:1;17964:2;17944:18;;;17937:30;18003:34;17983:18;;;17976:62;-1:-1:-1;;;18054:18:1;;;18047:35;18099:19;;5263:70:0;17723:401:1;5263:70:0;-1:-1:-1;;;;;5352:23:0;;5344:71;;;;-1:-1:-1;;;5344:71:0;;18331:2:1;5344:71:0;;;18313:21:1;18370:2;18350:18;;;18343:30;18409:34;18389:18;;;18382:62;-1:-1:-1;;;18460:18:1;;;18453:33;18503:19;;5344:71:0;18129:399:1;5344:71:0;5508:70;5530:6;5508:70;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5508:17:0;;:9;:17;;;;;;;;;;;;:70;:21;:70::i;:::-;-1:-1:-1;;;;;5488:17:0;;;:9;:17;;;;;;;;;;;:90;;;;5612:20;;;;;;;:32;;5637:6;5612:24;:32::i;:::-;-1:-1:-1;;;;;5589:20:0;;;:9;:20;;;;;;;;;;;;:55;;;;5660:35;2474:25:1;;;5589:20:0;;5660:35;;;;;;2447:18:1;5660:35:0;2328:177:1;25163:4667:0;-1:-1:-1;;;;;25263:18:0;;25255:69;;;;-1:-1:-1;;;25255:69:0;;18735:2:1;25255:69:0;;;18717:21:1;18774:2;18754:18;;;18747:30;18813:34;18793:18;;;18786:62;-1:-1:-1;;;18864:18:1;;;18857:36;18910:19;;25255:69:0;18533:402:1;25255:69:0;-1:-1:-1;;;;;25343:16:0;;25335:65;;;;-1:-1:-1;;;25335:65:0;;19142:2:1;25335:65:0;;;19124:21:1;19181:2;19161:18;;;19154:30;19220:34;19200:18;;;19193:62;-1:-1:-1;;;19271:18:1;;;19264:34;19315:19;;25335:65:0;18940:400:1;25335:65:0;-1:-1:-1;;;;;25559:39:0;;25413:21;25559:39;;;:33;:39;;;;;;25413:21;;;;;;;;25559:39;;25554:142;;25623:14;;-1:-1:-1;;;25623:14:0;;;;25615:59;;;;-1:-1:-1;;;25615:59:0;;19547:2:1;25615:59:0;;;19529:21:1;;;19566:18;;;19559:30;19625:34;19605:18;;;19598:62;19677:18;;25615:59:0;19345:356:1;25615:59:0;25712:6;25722:1;25712:11;25708:4059;;25740:28;25756:4;25762:2;25766:1;25740:15;:28::i;:::-;25783:7;;;;;25163:4667;;;:::o;25708:4059::-;25846:8;;-1:-1:-1;;;25846:8:0;;;;25845:9;:39;;;;-1:-1:-1;;;;;;25859:25:0;;;;;;:19;:25;;;;;;;;25858:26;25845:39;:67;;;;-1:-1:-1;;;;;;25889:23:0;;;;;;:19;:23;;;;;;;;25888:24;25845:67;25827:3940;;;-1:-1:-1;;;;;25956:29:0;;;25939:14;25956:29;;;:25;:29;;;;;;;26016:31;;;;;;;;25956:29;;;;;26016:31;26068:9;;:23;;;;;26082:9;26081:10;26068:23;26064:1803;;;26112:33;26128:4;26134:2;26138:6;26112:15;:33::i;:::-;26164:7;;;;;;;25163:4667;;;:::o;26064:1803::-;26209:9;26205:1662;;;26255:17;;26306:16;;26350:10;;26388:17;;26434:11;;26470:14;;26255:17;;-1:-1:-1;26306:16:0;;-1:-1:-1;26350:10:0;;-1:-1:-1;26388:17:0;-1:-1:-1;26434:11:0;-1:-1:-1;26470:14:0;;26466:342;;;26574:13;;26561:9;26532:39;;;;:28;:39;;;;;;:55;;26574:13;26532:55;:::i;:::-;26513:15;:74;;26505:134;;;;-1:-1:-1;;;26505:134:0;;19908:2:1;26505:134:0;;;19890:21:1;19947:2;19927:18;;;19920:30;-1:-1:-1;;;19966:18:1;;;19959:52;20028:18;;26505:134:0;19706:346:1;26505:134:0;26676:5;;26666:6;:15;;26658:54;;;;-1:-1:-1;;;26658:54:0;;20259:2:1;26658:54:0;;;20241:21:1;20298:2;20278:18;;;20271:30;20337:29;20317:18;;;20310:57;20384:18;;26658:54:0;20057:351:1;26658:54:0;26760:9;26731:39;;;;:28;:39;;;;;26773:15;26731:57;;26466:342;26205:1662;;;26861:8;26857:1010;;;26906:16;;26956:15;;26999:9;;27036:16;;27081:10;;27116:14;;26906:16;;-1:-1:-1;26956:15:0;;-1:-1:-1;26999:9:0;;-1:-1:-1;27036:16:0;-1:-1:-1;27081:10:0;-1:-1:-1;27116:14:0;;27112:531;;;27195:5;;27177:15;;:23;;;;:::i;:::-;27159:15;:41;27151:71;;;;-1:-1:-1;;;27151:71:0;;20615:2:1;27151:71:0;;;20597:21:1;20654:2;20634:18;;;20627:30;-1:-1:-1;;;20673:18:1;;;20666:48;20731:18;;27151:71:0;20413:342:1;27151:71:0;27264:13;;27249:11;:28;;27241:64;;;;-1:-1:-1;;;27241:64:0;;20962:2:1;27241:64:0;;;20944:21:1;21001:2;20981:18;;;20974:30;21040:26;21020:18;;;21013:54;21084:18;;27241:64:0;20760:348:1;27241:64:0;27357:9;27332:35;;;;:24;:35;;;;;;27371:12;27332:51;;27324:83;;;;-1:-1:-1;;;27324:83:0;;21315:2:1;27324:83:0;;;21297:21:1;21354:2;21334:18;;;21327:30;-1:-1:-1;;;21373:18:1;;;21366:50;21433:18;;27324:83:0;21113:344:1;27324:83:0;27444:5;;27434:6;:15;;27426:54;;;;-1:-1:-1;;;27426:54:0;;20259:2:1;27426:54:0;;;20241:21:1;20298:2;20278:18;;;20271:30;20337:29;20317:18;;;20310:57;20384:18;;27426:54:0;20057:351:1;27426:54:0;27526:9;27501:35;;;;:24;:35;;;;;;;;27539:12;27501:50;;27570:28;:39;;;;;27612:15;27570:57;;27112:531;-1:-1:-1;;;;;3739:18:0;;27671:32;3739:18;;;;;;;;;;;27779:9;;27742:33;27769:6;3739:18;27742:33;:::i;:::-;:46;;27734:117;;;;-1:-1:-1;;;27734:117:0;;21664:2:1;27734:117:0;;;21646:21:1;21703:2;21683:18;;;21676:30;21742:34;21722:18;;;21715:62;-1:-1:-1;;;21793:18:1;;;21786:34;21837:19;;27734:117:0;21462:400:1;27734:117:0;26871:996;26857:1010;27951:16;;27883:17;;27903:65;;:43;27939:6;27903:43;:13;27921:12;27903:17;:31::i;:65::-;28034:4;27985:28;3739:18;;;;;;;;;;;28096;;27883:85;;-1:-1:-1;3739:18:0;28072:42;;;;;;;28135:20;;;28146:9;28135:20;28131:1025;;;28176:8;:15;;-1:-1:-1;;;;28176:15:0;-1:-1:-1;;;28176:15:0;;;28255:21;;28176:15;;;28255:21;:41;;;;;28295:1;28280:12;:16;28255:41;:61;;;;;28315:1;28300:12;;:16;28255:61;28251:651;;;28341:20;28376:10;;28364:9;;:22;;;;:::i;:::-;28341:45;;28409:24;28471:12;28459:9;;28436:20;:32;;;;:::i;:::-;:47;;;;:::i;:::-;28409:74;;28506:22;28567:12;28554:10;;28531:20;:33;;;;:::i;:::-;:48;;;;:::i;:::-;28506:73;;28602:21;28660:12;;28645;28626:16;:31;;;;:::i;:::-;:46;;;;:::i;:::-;28602:70;;28695:22;28752:13;;28737:12;28720:14;:29;;;;:::i;:::-;:45;;;;:::i;:::-;28695:70;-1:-1:-1;28801:30:0;28818:13;28695:70;28801:30;:::i;:::-;28788:43;;28856:26;28871:10;28856:14;:26::i;:::-;28318:584;;;;;28251:651;28949:18;;28922:24;;28949:34;;28972:10;28949:22;:34::i;:::-;28922:61;;29002:38;29023:16;29002:20;:38::i;:::-;-1:-1:-1;;29071:1:0;29059:9;:13;;;29091:10;:14;29124:8;:16;;-1:-1:-1;;;;29124:16:0;;;28131:1025;29172:12;29208:3;29187:18;29196:9;29187:6;:18;:::i;:::-;:24;;;;:::i;:::-;29172:39;-1:-1:-1;29226:18:0;29265:11;;29261:197;;29325:3;29306:16;29315:7;29306:6;:16;:::i;:::-;:22;;;;:::i;:::-;29293:35;;29343:39;29359:4;29365;;;;;;;;;-1:-1:-1;;;;;29365:4:0;29371:10;29343:15;:39::i;:::-;29412:12;;:28;;29429:10;29412:16;:28::i;:::-;29397:12;:43;29261:197;29483:29;29494:17;29501:10;29494:4;:17;:::i;:::-;29483:6;;:10;:29::i;:::-;29474:38;;29533:9;29529:155;;;29576:10;;:20;;29591:4;29576:14;:20::i;:::-;29563:10;:33;29529:155;;;29649:9;;:19;;29663:4;29649:13;:19::i;:::-;29637:9;:31;29529:155;29700:42;29716:4;29730;29737;29700:15;:42::i;:::-;25924:3843;;;;;;;25827:3940;29779:33;29795:4;29801:2;29805:6;29779:15;:33::i;740:190::-;826:7;862:12;854:6;;;;846:29;;;;-1:-1:-1;;;846:29:0;;;;;;;;:::i;:::-;-1:-1:-1;886:9:0;898:5;902:1;898;:5;:::i;:::-;886:17;740:190;-1:-1:-1;;;;;740:190:0:o;23345:188::-;-1:-1:-1;;;;;23428:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;23428:39:0;;;;;;;;;;23485:40;;23428:39;;:31;23485:40;;;23345:188;;:::o;1334:189::-;1420:7;1455:12;1448:5;1440:28;;;;-1:-1:-1;;;1440:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1479:9:0;1491:5;1495:1;1491;:5;:::i;30328:499::-;30418:16;;;30432:1;30418:16;;;;;;;;30394:21;;30418:16;;;;;;;;;;-1:-1:-1;30418:16:0;30394:40;;30463:4;30445;30450:1;30445:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;30445:23:0;;;:7;;;;;;;;;;:23;;;;30489:15;;:22;;;-1:-1:-1;;;30489:22:0;;;;:15;;;;;:20;;:22;;;;;30445:7;;30489:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30479:4;30484:1;30479:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;30479:32:0;;;:7;;;;;;;;;:32;30554:15;;30522:62;;30539:4;;30554:15;30572:11;30522:8;:62::i;:::-;30595:15;;:224;;-1:-1:-1;;;30595:224:0;;-1:-1:-1;;;;;30595:15:0;;;;:66;;:224;;30676:11;;30595:15;;30746:4;;30773;;30793:15;;30595:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30383:444;30328:499;:::o;29840:480::-;29899:12;29914:13;:6;29925:1;29914:10;:13::i;:::-;29899:28;-1:-1:-1;29938:17:0;29958:16;:6;29899:28;29958:10;:16::i;:::-;29938:36;-1:-1:-1;30010:21:0;30042:22;30059:4;30042:16;:22::i;:::-;30145:18;30166:41;:21;30192:14;30166:25;:41::i;:::-;30145:62;;30218:35;30231:9;30242:10;30218:12;:35::i;:::-;30269:43;;;23443:25:1;;;23499:2;23484:18;;23477:34;;;23527:18;;;23520:34;;;30269:43:0;;23431:2:1;23416:18;30269:43:0;;;;;;;29888:432;;;;29840:480;:::o;30835:516::-;31015:15;;30983:62;;31000:4;;-1:-1:-1;;;;;31015:15:0;31033:11;30983:8;:62::i;:::-;31088:15;;:255;;-1:-1:-1;;;31088:255:0;;31160:4;31088:255;;;23906:34:1;23956:18;;;23949:34;;;31088:15:0;23999:18:1;;;23992:34;;;24042:18;;;24035:34;;;24085:19;;;24078:44;31317:15:0;24138:19:1;;;24131:35;-1:-1:-1;;;;;31088:15:0;;;;:31;;31127:9;;23840:19:1;;31088:255:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;30835:516;;:::o;222:180:1:-;281:6;334:2;322:9;313:7;309:23;305:32;302:52;;;350:1;347;340:12;302:52;-1:-1:-1;373:23:1;;222:180;-1:-1:-1;222:180:1:o;407:548::-;519:4;548:2;577;566:9;559:21;609:6;603:13;652:6;647:2;636:9;632:18;625:34;677:1;687:140;701:6;698:1;695:13;687:140;;;796:14;;;792:23;;786:30;762:17;;;781:2;758:26;751:66;716:10;;687:140;;;691:3;876:1;871:2;862:6;851:9;847:22;843:31;836:42;946:2;939;935:7;930:2;922:6;918:15;914:29;903:9;899:45;895:54;887:62;;;;407:548;;;;:::o;960:131::-;-1:-1:-1;;;;;1035:31:1;;1025:42;;1015:70;;1081:1;1078;1071:12;1096:160;1161:20;;1217:13;;1210:21;1200:32;;1190:60;;1246:1;1243;1236:12;1190:60;1096:160;;;:::o;1261:315::-;1326:6;1334;1387:2;1375:9;1366:7;1362:23;1358:32;1355:52;;;1403:1;1400;1393:12;1355:52;1442:9;1429:23;1461:31;1486:5;1461:31;:::i;:::-;1511:5;-1:-1:-1;1535:35:1;1566:2;1551:18;;1535:35;:::i;:::-;1525:45;;1261:315;;;;;:::o;1581:::-;1649:6;1657;1710:2;1698:9;1689:7;1685:23;1681:32;1678:52;;;1726:1;1723;1716:12;1678:52;1765:9;1752:23;1784:31;1809:5;1784:31;:::i;:::-;1834:5;1886:2;1871:18;;;;1858:32;;-1:-1:-1;;;1581:315:1:o;2510:247::-;2569:6;2622:2;2610:9;2601:7;2597:23;2593:32;2590:52;;;2638:1;2635;2628:12;2590:52;2677:9;2664:23;2696:31;2721:5;2696:31;:::i;2762:127::-;2823:10;2818:3;2814:20;2811:1;2804:31;2854:4;2851:1;2844:15;2878:4;2875:1;2868:15;2894:275;2965:2;2959:9;3030:2;3011:13;;-1:-1:-1;;3007:27:1;2995:40;;3065:18;3050:34;;3086:22;;;3047:62;3044:88;;;3112:18;;:::i;:::-;3148:2;3141:22;2894:275;;-1:-1:-1;2894:275:1:o;3174:183::-;3234:4;3267:18;3259:6;3256:30;3253:56;;;3289:18;;:::i;:::-;-1:-1:-1;3334:1:1;3330:14;3346:4;3326:25;;3174:183::o;3362:662::-;3416:5;3469:3;3462:4;3454:6;3450:17;3446:27;3436:55;;3487:1;3484;3477:12;3436:55;3523:6;3510:20;3549:4;3573:60;3589:43;3629:2;3589:43;:::i;:::-;3573:60;:::i;:::-;3667:15;;;3753:1;3749:10;;;;3737:23;;3733:32;;;3698:12;;;;3777:15;;;3774:35;;;3805:1;3802;3795:12;3774:35;3841:2;3833:6;3829:15;3853:142;3869:6;3864:3;3861:15;3853:142;;;3935:17;;3923:30;;3973:12;;;;3886;;3853:142;;;-1:-1:-1;4013:5:1;3362:662;-1:-1:-1;;;;;;3362:662:1:o;4029:1215::-;4147:6;4155;4208:2;4196:9;4187:7;4183:23;4179:32;4176:52;;;4224:1;4221;4214:12;4176:52;4264:9;4251:23;4293:18;4334:2;4326:6;4323:14;4320:34;;;4350:1;4347;4340:12;4320:34;4388:6;4377:9;4373:22;4363:32;;4433:7;4426:4;4422:2;4418:13;4414:27;4404:55;;4455:1;4452;4445:12;4404:55;4491:2;4478:16;4513:4;4537:60;4553:43;4593:2;4553:43;:::i;4537:60::-;4631:15;;;4713:1;4709:10;;;;4701:19;;4697:28;;;4662:12;;;;4737:19;;;4734:39;;;4769:1;4766;4759:12;4734:39;4793:11;;;;4813:217;4829:6;4824:3;4821:15;4813:217;;;4909:3;4896:17;4926:31;4951:5;4926:31;:::i;:::-;4970:18;;4846:12;;;;5008;;;;4813:217;;;5049:5;-1:-1:-1;;5092:18:1;;5079:32;;-1:-1:-1;;5123:16:1;;;5120:36;;;5152:1;5149;5142:12;5120:36;;5175:63;5230:7;5219:8;5208:9;5204:24;5175:63;:::i;:::-;5165:73;;;4029:1215;;;;;:::o;5249:456::-;5326:6;5334;5342;5395:2;5383:9;5374:7;5370:23;5366:32;5363:52;;;5411:1;5408;5401:12;5363:52;5450:9;5437:23;5469:31;5494:5;5469:31;:::i;:::-;5519:5;-1:-1:-1;5576:2:1;5561:18;;5548:32;5589:33;5548:32;5589:33;:::i;:::-;5249:456;;5641:7;;-1:-1:-1;;;5695:2:1;5680:18;;;;5667:32;;5249:456::o;5899:180::-;5955:6;6008:2;5996:9;5987:7;5983:23;5979:32;5976:52;;;6024:1;6021;6014:12;5976:52;6047:26;6063:9;6047:26;:::i;6308:799::-;6448:6;6456;6464;6472;6480;6488;6496;6504;6512;6520;6573:3;6561:9;6552:7;6548:23;6544:33;6541:53;;;6590:1;6587;6580:12;6541:53;-1:-1:-1;;6613:23:1;;;6683:2;6668:18;;6655:32;;-1:-1:-1;6734:2:1;6719:18;;6706:32;;6785:2;6770:18;;6757:32;;-1:-1:-1;6836:3:1;6821:19;;6808:33;;-1:-1:-1;6888:3:1;6873:19;;6860:33;;-1:-1:-1;6940:3:1;6925:19;;6912:33;;-1:-1:-1;6992:3:1;6977:19;;6964:33;;-1:-1:-1;7044:3:1;7029:19;;7016:33;;-1:-1:-1;7096:3:1;7081:19;7068:33;;-1:-1:-1;6308:799:1;-1:-1:-1;6308:799:1:o;7112:388::-;7180:6;7188;7241:2;7229:9;7220:7;7216:23;7212:32;7209:52;;;7257:1;7254;7247:12;7209:52;7296:9;7283:23;7315:31;7340:5;7315:31;:::i;:::-;7365:5;-1:-1:-1;7422:2:1;7407:18;;7394:32;7435:33;7394:32;7435:33;:::i;:::-;7487:7;7477:17;;;7112:388;;;;;:::o;7505:385::-;7591:6;7599;7607;7615;7668:3;7656:9;7647:7;7643:23;7639:33;7636:53;;;7685:1;7682;7675:12;7636:53;-1:-1:-1;;7708:23:1;;;7778:2;7763:18;;7750:32;;-1:-1:-1;7829:2:1;7814:18;;7801:32;;7880:2;7865:18;7852:32;;-1:-1:-1;7505:385:1;-1:-1:-1;7505:385:1:o;7895:356::-;8097:2;8079:21;;;8116:18;;;8109:30;8175:34;8170:2;8155:18;;8148:62;8242:2;8227:18;;7895:356::o;8256:127::-;8317:10;8312:3;8308:20;8305:1;8298:31;8348:4;8345:1;8338:15;8372:4;8369:1;8362:15;8388:168;8461:9;;;8492;;8509:15;;;8503:22;;8489:37;8479:71;;8530:18;;:::i;8561:380::-;8640:1;8636:12;;;;8683;;;8704:61;;8758:4;8750:6;8746:17;8736:27;;8704:61;8811:2;8803:6;8800:14;8780:18;8777:38;8774:161;;8857:10;8852:3;8848:20;8845:1;8838:31;8892:4;8889:1;8882:15;8920:4;8917:1;8910:15;8774:161;;8561:380;;;:::o;10067:127::-;10128:10;10123:3;10119:20;10116:1;10109:31;10159:4;10156:1;10149:15;10183:4;10180:1;10173:15;10199:135;10238:3;10259:17;;;10256:43;;10279:18;;:::i;:::-;-1:-1:-1;10326:1:1;10315:13;;10199:135::o;10339:217::-;10379:1;10405;10395:132;;10449:10;10444:3;10440:20;10437:1;10430:31;10484:4;10481:1;10474:15;10512:4;10509:1;10502:15;10395:132;-1:-1:-1;10541:9:1;;10339:217::o;15554:125::-;15619:9;;;15640:10;;;15637:36;;;15653:18;;:::i;21867:128::-;21934:9;;;21955:11;;;21952:37;;;21969:18;;:::i;22000:251::-;22070:6;22123:2;22111:9;22102:7;22098:23;22094:32;22091:52;;;22139:1;22136;22129:12;22091:52;22171:9;22165:16;22190:31;22215:5;22190:31;:::i;22256:980::-;22518:4;22566:3;22555:9;22551:19;22597:6;22586:9;22579:25;22623:2;22661:6;22656:2;22645:9;22641:18;22634:34;22704:3;22699:2;22688:9;22684:18;22677:31;22728:6;22763;22757:13;22794:6;22786;22779:22;22832:3;22821:9;22817:19;22810:26;;22871:2;22863:6;22859:15;22845:29;;22892:1;22902:195;22916:6;22913:1;22910:13;22902:195;;;22981:13;;-1:-1:-1;;;;;22977:39:1;22965:52;;23072:15;;;;23037:12;;;;23013:1;22931:9;22902:195;;;-1:-1:-1;;;;;;;23153:32:1;;;;23148:2;23133:18;;23126:60;-1:-1:-1;;;23217:3:1;23202:19;23195:35;23114:3;22256:980;-1:-1:-1;;;22256:980:1:o;24177:306::-;24265:6;24273;24281;24334:2;24322:9;24313:7;24309:23;24305:32;24302:52;;;24350:1;24347;24340:12;24302:52;24379:9;24373:16;24363:26;;24429:2;24418:9;24414:18;24408:25;24398:35;;24473:2;24462:9;24458:18;24452:25;24442:35;;24177:306;;;;;:::o
Swarm Source
ipfs://7484ebb96a7febbbe4ae231cd64d10e67804b4533c6ddc48f8e40b78000f4a9a
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | Ether (ETH) | 100.00% | $3,318.49 | 0.000000000000000002 | <$0.000001 |
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.