ETH Price: $2,392.00 (+0.61%)

Contract

0x416B9E1Ef9E80028d7c849D9b708B9BF39200008
 

Overview

ETH Balance

0.000013455777525592 ETH

Eth Value

$0.03 (@ $2,392.00/ETH)

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve196510632024-04-14 3:21:35318 days ago1713064895IN
0x416B9E1E...F39200008
0 ETH0.0005690612.29417472
Set Max Wallet L...141874432022-02-11 22:14:021110 days ago1644617642IN
0x416B9E1E...F39200008
0 ETH0.0021331674.10680718
Approve141873652022-02-11 22:01:331110 days ago1644616893IN
0x416B9E1E...F39200008
0 ETH0.00372279.91432684
Approve141872282022-02-11 21:34:561110 days ago1644615296IN
0x416B9E1E...F39200008
0 ETH0.00483736103.86189175
Approve141872282022-02-11 21:34:561110 days ago1644615296IN
0x416B9E1E...F39200008
0 ETH0.00483952103.90816223
Approve141871962022-02-11 21:26:341110 days ago1644614794IN
0x416B9E1E...F39200008
0 ETH0.0040017385.92028765
Approve141871942022-02-11 21:25:541110 days ago1644614754IN
0x416B9E1E...F39200008
0 ETH0.0039833785.52601673
Approve141871912022-02-11 21:25:051110 days ago1644614705IN
0x416B9E1E...F39200008
0 ETH0.0040340286.6134733
Approve141871862022-02-11 21:23:541110 days ago1644614634IN
0x416B9E1E...F39200008
0 ETH0.0037083979.62196549
Set Max Wallet L...141871592022-02-11 21:19:381110 days ago1644614378IN
0x416B9E1E...F39200008
0 ETH0.00328375114.03118216
Approve141871592022-02-11 21:19:381110 days ago1644614378IN
0x416B9E1E...F39200008
0 ETH0.00533428114.53118216
Approve141871472022-02-11 21:15:371110 days ago1644614137IN
0x416B9E1E...F39200008
0 ETH0.0036958579.35268779
Approve141871382022-02-11 21:13:241110 days ago1644614004IN
0x416B9E1E...F39200008
0 ETH0.0039108283.96823327
Approve141871292022-02-11 21:11:481110 days ago1644613908IN
0x416B9E1E...F39200008
0 ETH0.0040954587.93240403
Approve141871262022-02-11 21:11:161110 days ago1644613876IN
0x416B9E1E...F39200008
0 ETH0.0041135388.32061044
Approve141871202022-02-11 21:10:221110 days ago1644613822IN
0x416B9E1E...F39200008
0 ETH0.0044873396.34648164
Set Max Tx Limit141871162022-02-11 21:09:361110 days ago1644613776IN
0x416B9E1E...F39200008
0 ETH0.00312592108.79977725
Approve141871142022-02-11 21:09:061110 days ago1644613746IN
0x416B9E1E...F39200008
0 ETH0.00547314117.51245052
Approve141871122022-02-11 21:08:451110 days ago1644613725IN
0x416B9E1E...F39200008
0 ETH0.0046321599.76428267
Approve141871122022-02-11 21:08:451110 days ago1644613725IN
0x416B9E1E...F39200008
0 ETH0.0046321599.76428267
Approve141871122022-02-11 21:08:451110 days ago1644613725IN
0x416B9E1E...F39200008
0 ETH0.0046321599.76428267
Approve141871122022-02-11 21:08:451110 days ago1644613725IN
0x416B9E1E...F39200008
0 ETH0.0046321599.76428267
Approve141871122022-02-11 21:08:451110 days ago1644613725IN
0x416B9E1E...F39200008
0 ETH0.0046321599.76428267
Approve141871122022-02-11 21:08:451110 days ago1644613725IN
0x416B9E1E...F39200008
0 ETH0.0046321599.76428267
Approve141871122022-02-11 21:08:451110 days ago1644613725IN
0x416B9E1E...F39200008
0 ETH0.0046321599.76428267
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
141994352022-02-13 18:37:241108 days ago1644777444
0x416B9E1E...F39200008
0.00001345 ETH
141994352022-02-13 18:37:241108 days ago1644777444
0x416B9E1E...F39200008
0.00340425 ETH
141994352022-02-13 18:37:241108 days ago1644777444
0x416B9E1E...F39200008
0.02362195 ETH
141994352022-02-13 18:37:241108 days ago1644777444
0x416B9E1E...F39200008
0.02701126 ETH
141916132022-02-12 13:45:011110 days ago1644673501
0x416B9E1E...F39200008
0.00001494 ETH
141916132022-02-12 13:45:011110 days ago1644673501
0x416B9E1E...F39200008
0.00367946 ETH
141916132022-02-12 13:45:011110 days ago1644673501
0x416B9E1E...F39200008
0.02404519 ETH
141916132022-02-12 13:45:011110 days ago1644673501
0x416B9E1E...F39200008
0.02770814 ETH
141884892022-02-12 2:05:481110 days ago1644631548
0x416B9E1E...F39200008
0.0000165 ETH
141884892022-02-12 2:05:481110 days ago1644631548
0x416B9E1E...F39200008
0.00393678 ETH
141884892022-02-12 2:05:481110 days ago1644631548
0x416B9E1E...F39200008
0.02464354 ETH
141884892022-02-12 2:05:481110 days ago1644631548
0x416B9E1E...F39200008
0.02856216 ETH
141884892022-02-12 2:05:481110 days ago1644631548
0x416B9E1E...F39200008
0.00001816 ETH
141884892022-02-12 2:05:481110 days ago1644631548
0x416B9E1E...F39200008
0.00418988 ETH
141884892022-02-12 2:05:481110 days ago1644631548
0x416B9E1E...F39200008
0.02534953 ETH
141884892022-02-12 2:05:481110 days ago1644631548
0x416B9E1E...F39200008
0.02951946 ETH
141882272022-02-12 1:05:541110 days ago1644627954
0x416B9E1E...F39200008
0.00001994 ETH
141882272022-02-12 1:05:541110 days ago1644627954
0x416B9E1E...F39200008
0.00443724 ETH
141882272022-02-12 1:05:541110 days ago1644627954
0x416B9E1E...F39200008
0.02612386 ETH
141882272022-02-12 1:05:541110 days ago1644627954
0x416B9E1E...F39200008
0.030539 ETH
141881072022-02-12 0:38:231110 days ago1644626303
0x416B9E1E...F39200008
0.0000221 ETH
141881072022-02-12 0:38:231110 days ago1644626303
0x416B9E1E...F39200008
0.00466819 ETH
141881072022-02-12 0:38:231110 days ago1644626303
0x416B9E1E...F39200008
0.02691993 ETH
141881072022-02-12 0:38:231110 days ago1644626303
0x416B9E1E...F39200008
0.03156117 ETH
141880052022-02-12 0:14:231110 days ago1644624863
0x416B9E1E...F39200008
0.00002695 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ShibaDogeTama

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-02-11
*/

/*

 * Telegram :
 * Website : 

*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.6.12;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}


contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor () public {
        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);
    }

} 

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;
    }

}

interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}


interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    using SafeMath for uint256;

    mapping(address => uint256) private _balances;

    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) public {
        _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 9;
    }
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }
    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }
    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance");
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(account, address(0), amount);
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

contract ShibaDogeTama is ERC20, Ownable {
    using SafeMath for uint256;

    IUniswapV2Router02 public constant uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

    uint256 public buyLiquidityFee = 3;
    uint256 public sellLiquidityFee = 3;

    uint256 public buyTxFee = 9;
    uint256 private defaultBuyTxFee = 9;
    uint256 public sellTxFee = 9;

    uint256 public defaultSellLiquidityFee = 2;
    uint256 public defaultSellTxFee = 10;

    uint256 public hourSellLiquidityFee = 10;
    uint256 public hourSellTxFee = 14;

    uint256 public tokensForLiquidity;
    uint256 public tokensForTax;

    uint256 public _tTotal = 420069000000 * 10**9;                       
    uint256 public swapAtAmount = _tTotal.mul(50).div(10000);      
    uint256 public maxTxLimit = _tTotal;                           
    uint256 public maxWalletLimit = _tTotal;                        

    address private dev;
    address private liquidity;

    address public uniswapV2Pair;

    uint256 public launchBlock;

    bool private swapping;
    bool public isLaunched;
    bool private cooldownEnabled = false;
    bool private useBuyMap = true;
    bool private nftGiveAwayActive = true;
    bool private blacklistAllowed = true; //blacklist will be disabled forever after launch
    uint256 private deadblocks;
    uint256 public minSpendForNft = 5 * 10**17;

    // exclude from fees
    mapping (address => bool) public isExcludedFromFees;

    // exclude from max transaction amount
    mapping (address => bool) public isExcludedFromTxLimit;

    // exclude from max wallet limit
    mapping (address => bool) public isExcludedFromWalletLimit;

    // if the account is blacklisted from transacting
    mapping (address => bool) public isBlacklisted;

    // buy map for timed sell tax
    mapping (address => uint256) public _buyMap;

    // mapping for cooldown
    mapping (address => uint) public cooldown;

    // mapping to add free nft mint for buyers more than 1 eth
    mapping (address => bool) public nftGiveAways;

    constructor() public ERC20("ShibaDogeTama", "TAMA") {
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        _approve(address(this), address(uniswapV2Router), type(uint256).max);


        // exclude from fees, wallet limit and transaction limit
        excludeFromAllLimits(owner(), true);
        excludeFromAllLimits(address(this), true);
        excludeFromWalletLimit(uniswapV2Pair, true);

        dev = payable(0xA8D4C801E5194eEA821089E93110d79F9Fb19718);
        liquidity = payable(msg.sender);

        /*
            _mint is an internal function in ERC20.sol that is only called here,
            and CANNOT be called ever again
        */
        _mint(owner(), _tTotal);
    }

    function excludeFromFees(address account, bool value) public onlyOwner() {
        require(isExcludedFromFees[account] != value, "Fees: Already set to this value");
        isExcludedFromFees[account] = value;
    }

    function excludeFromTxLimit(address account, bool value) public onlyOwner() {
        require(isExcludedFromTxLimit[account] != value, "TxLimit: Already set to this value");
        isExcludedFromTxLimit[account] = value;
    }

    function excludeFromWalletLimit(address account, bool value) public onlyOwner() {
        require(isExcludedFromWalletLimit[account] != value, "WalletLimit: Already set to this value");
        isExcludedFromWalletLimit[account] = value;
    }

    function excludeFromAllLimits(address account, bool value) public onlyOwner() {
        excludeFromFees(account, value);
        excludeFromTxLimit(account, value);
        excludeFromWalletLimit(account, value);
    }

    function setBuyFee(uint256 liquidityFee, uint256 txFee) external onlyOwner() {
	require(liquidityFee.add(txFee) <= 12, "Total buy fee can not be more than 12");
        buyLiquidityFee = liquidityFee;
        defaultBuyTxFee = txFee;
        buyTxFee = txFee;
    }

    function setSellFee(uint256 liquidityFee, uint256 txFee) external onlyOwner() {
        require(liquidityFee.add(txFee) <= 12, "Total default fee can not be more than 12");
        sellLiquidityFee = liquidityFee;
        sellTxFee = txFee;

        defaultSellLiquidityFee = liquidityFee;
        defaultSellTxFee = txFee;
    }

    function setHourSellFee(uint256 liquidityFee, uint256 txFee) external onlyOwner() {
        require(liquidityFee.add(txFee) <= 24, "Total default fee can not be more than 25");
        hourSellLiquidityFee = liquidityFee;
        hourSellTxFee = txFee;
    }

    function setCooldownEnabled(bool _enabled) external onlyOwner() {
        cooldownEnabled = _enabled;
    }

   function setUseBuyMap(bool _enabled) external onlyOwner() {
        useBuyMap = _enabled;
    }

    function setMaxTxLimit(uint256 newLimit) external onlyOwner() {
        require(newLimit > 0, "max tx can not be 0");
        maxTxLimit = newLimit * (10**9);
    }

    function setMaxWalletLimit(uint256 newLimit) external onlyOwner() {
        require(newLimit > 0, "max wallet can not be 0");
        maxWalletLimit = newLimit * (10**9);
    }

    function setSwapAtAmount(uint256 amountToSwap) external onlyOwner() {
        swapAtAmount = amountToSwap * (10**9);
    }

    function setDeadBlocks(uint256 _deadblocks) external onlyOwner() {
        require(_deadblocks < 3);
        deadblocks = _deadblocks;
    }

    function updateDevWallet(address newWallet) external onlyOwner() {
        dev = newWallet;
    }

    function updateLiqWallet(address newWallet) external onlyOwner() {
        liquidity = newWallet;
    }

    function disableBlacklist() external onlyOwner() {
        blacklistAllowed = false;
    }

    function addBlacklist(address account) external onlyOwner() {
        require(!isBlacklisted[account], "Blacklist: Already blacklisted");
        require(blacklistAllowed, "Blacklist functionality no longer active");
        require(account != uniswapV2Pair, "Cannot blacklist pair");
        _setBlacklist(account, true);
    }

    function removeBlacklist(address account) external onlyOwner() {
        require(isBlacklisted[account], "Blacklist: Not blacklisted");
        _setBlacklist(account, false);
    }

    function manualswap() external onlyOwner() {
        uint256 totalTokensForFee = tokensForLiquidity + tokensForTax;
        swapBack(totalTokensForFee);
    }
    
    function manualsend() external onlyOwner(){
        uint256 contractETHBalance = address(this).balance;
        payable(address(dev)).transfer(contractETHBalance);
    }
    

    function openTrading(uint256 _deadblocks) external onlyOwner() {
        require(!isLaunched, "Contract is already launched");
        deadblocks = _deadblocks;
        isLaunched = true;
        launchBlock = block.number;
        maxTxLimit = _tTotal.mul(100).div(10000);  
        maxWalletLimit = _tTotal.mul(100).div(10000);
    }

    function _transfer(address from, address to, uint256 amount) internal override {
        require(from != address(0), "transfer from the zero address");
        require(to != address(0), "transfer to the zero address");
        require(amount <= maxTxLimit || isExcludedFromTxLimit[from] || isExcludedFromTxLimit[to], "Tx Amount too large");
        require(balanceOf(to).add(amount) <= maxWalletLimit || isExcludedFromWalletLimit[to], "Transfer will exceed wallet limit");
        require(isLaunched || isExcludedFromFees[from] || isExcludedFromFees[to], "Waiting to go live");
        require(!isBlacklisted[from], "Sender is blacklisted");

        if(amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

        uint256 totalTokensForFee = tokensForLiquidity + tokensForTax;
        bool canSwap = totalTokensForFee >= swapAtAmount;
        buyTxFee = defaultBuyTxFee;
        if(
            from != uniswapV2Pair &&
            canSwap &&
            !swapping
        ) {
            swapping = true;
            swapBack(totalTokensForFee);
            swapping = false;
        } else if(
            from == uniswapV2Pair &&
            to != uniswapV2Pair &&
            block.number < launchBlock + deadblocks &&
            !isExcludedFromFees[to]
        ) {
            buyTxFee = 90;
            _setBlacklist(to, true);
        }

        bool takeFee = !swapping;

        if(isExcludedFromFees[from] || isExcludedFromFees[to]) {
            takeFee = false;
        }

        if(from == uniswapV2Pair && nftGiveAwayActive) {
            address[] memory path = new address[](2);
            path[0] = uniswapV2Router.WETH();
            path[1] = address(this);
            uint ethSpent = uniswapV2Router.getAmountsIn(amount, path)[0];
            //if buyer spends 1 or more eth allow them to mint an nft for free
            if(ethSpent >= minSpendForNft){
                nftGiveAways[to] = true;
            }
        }

        if(takeFee) {
            uint256 fees;
            // on sell
            if (to == uniswapV2Pair) {
                if(useBuyMap){
                    if (_buyMap[from] != 0 &&
                        (_buyMap[from] + (1 hours) >= block.timestamp))  {
                        sellLiquidityFee = hourSellLiquidityFee;
                        sellTxFee = hourSellTxFee;
                        _buyMap[from] = block.timestamp;
                    } else {
                        sellLiquidityFee = defaultSellLiquidityFee;
                        sellTxFee = defaultSellTxFee;
                    }
                } else {
                    sellLiquidityFee = defaultSellLiquidityFee;
                    sellTxFee = defaultSellTxFee;
                }
              
                uint256 sellTotalFees = sellLiquidityFee.add(sellTxFee);
                fees = amount.mul(sellTotalFees).div(100);
                tokensForLiquidity = tokensForLiquidity.add(fees.mul(sellLiquidityFee).div(sellTotalFees));
                tokensForTax = tokensForTax.add(fees.mul(sellTxFee).div(sellTotalFees));
            }
            // on buy & wallet transfers
            else {
                if(cooldownEnabled){
                    require(cooldown[to] < block.timestamp);
                    cooldown[to] = block.timestamp + (30 seconds);
                }
                if (useBuyMap && _buyMap[to] == 0) {
                    _buyMap[to] = block.timestamp;
                }
                uint256 buyTotalFees = buyLiquidityFee.add(buyTxFee);
                fees = amount.mul(buyTotalFees).div(100);
                tokensForLiquidity = tokensForLiquidity.add(fees.mul(buyLiquidityFee).div(buyTotalFees));
                tokensForTax = tokensForTax.add(fees.mul(buyTxFee).div(buyTotalFees));
            }

            if(fees > 0){
                super._transfer(from, address(this), fees);
                amount = amount.sub(fees);
            }
        }

        super._transfer(from, to, amount);
    }

    function swapBack(uint256 totalTokensForFee) private {
        uint256 toSwap = swapAtAmount;

        // Halve the amount of liquidity tokens
        uint256 liquidityTokens = toSwap.mul(tokensForLiquidity).div(totalTokensForFee).div(2);
        uint256 taxTokens = toSwap.sub(liquidityTokens).sub(liquidityTokens);
        uint256 amountToSwapForETH = toSwap.sub(liquidityTokens);

        _swapTokensForETH(amountToSwapForETH);

        uint256 ethBalance = address(this).balance;
        uint256 ethForTax = ethBalance.mul(taxTokens).div(amountToSwapForETH);
        uint256 ethForLiquidity = ethBalance.sub(ethForTax);

        tokensForLiquidity = tokensForLiquidity.sub(liquidityTokens.mul(2));
        tokensForTax = tokensForTax.sub(toSwap.sub(liquidityTokens.mul(2)));

        payable(address(dev)).transfer(ethForTax);
        _addLiquidity(liquidityTokens, ethForLiquidity);
    }

    function _addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {

        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            liquidity,
            block.timestamp
        );
    }

    function _swapTokensForETH(uint256 tokenAmount) private {

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function _setBlacklist(address account, bool value) internal {
        isBlacklisted[account] = value;
    }

    function addToGiveAwayList(address _address) external onlyOwner{
        nftGiveAways[_address] = true;
    }

    function setMinSpendForNft(uint256 _minSpendAmt) external onlyOwner{
       minSpendForNft = _minSpendAmt;
    }

    function getNFTGiveAwayForId(address _address) public view returns (bool) {
        return nftGiveAways[_address];
    }

    function transferForeignToken(address _token, address _to) external onlyOwner returns (bool _sent){
        require(_token != address(this), "Can't withdraw native tokens");
        uint256 _contractBalance = IERC20(_token).balanceOf(address(this));
        _sent = IERC20(_token).transfer(_to, _contractBalance);
    }
    

    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_buyMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_tTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"addToGiveAwayList","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":"account","type":"address"}],"name":"balanceOf","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":"buyTxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"cooldown","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"defaultSellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"defaultSellTxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"excludeFromAllLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"excludeFromTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"excludeFromWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"getNFTGiveAwayForId","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hourSellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hourSellTxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromTxLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isLaunched","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":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTxLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minSpendForNft","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nftGiveAways","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_deadblocks","type":"uint256"}],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidityFee","type":"uint256"},{"internalType":"uint256","name":"txFee","type":"uint256"}],"name":"setBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setCooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_deadblocks","type":"uint256"}],"name":"setDeadBlocks","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidityFee","type":"uint256"},{"internalType":"uint256","name":"txFee","type":"uint256"}],"name":"setHourSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setMaxTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setMaxWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minSpendAmt","type":"uint256"}],"name":"setMinSpendForNft","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidityFee","type":"uint256"},{"internalType":"uint256","name":"txFee","type":"uint256"}],"name":"setSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountToSwap","type":"uint256"}],"name":"setSwapAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setUseBuyMap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAtAmount","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":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"transferForeignToken","outputs":[{"internalType":"bool","name":"_sent","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateLiqWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405260036007556003600855600980556009600a556009600b556002600c55600a600d55600a600e55600e600f556816c5a0e1e10990800060125562000075612710620000616032601254620003f460201b6200222d1790919060201c565b6200045b60201b6200228d1790919060201c565b6013556012546014819055601555601a805460ff60281b1960ff60201b1963ffff000019909216630100000017919091166401000000001716650100000000001790556706f05b59d3b20000601c55348015620000d157600080fd5b50604080518082018252600d81526c5368696261446f676554616d6160981b60208083019182528351808501909452600484526354414d4160e01b908401528151919291620001239160039162000b0c565b5080516200013990600490602084019062000b0c565b50505060006200014e620004a560201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620001ea57600080fd5b505afa158015620001ff573d6000803e3d6000fd5b505050506040513d60208110156200021657600080fd5b5051604080516315ab88c960e31b815290516001600160a01b039092169163c9c65396913091737a250d5630b4cf539739df2c5dacb4c659f2488d9163ad5c4648916004808301926020929190829003018186803b1580156200027857600080fd5b505afa1580156200028d573d6000803e3d6000fd5b505050506040513d6020811015620002a457600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301525160448083019260209291908290030181600087803b158015620002f757600080fd5b505af11580156200030c573d6000803e3d6000fd5b505050506040513d60208110156200032357600080fd5b5051601880546001600160a01b0319166001600160a01b039092169190911790556200036730737a250d5630b4cf539739df2c5dacb4c659f2488d600019620004a9565b6200037d6200037562000599565b6001620005a8565b6200038a306001620005a8565b601854620003a3906001600160a01b031660016200062c565b601680546001600160a01b031990811673a8d4c801e5194eea821089e93110d79f9fb19718179091556017805490911633179055620003ee620003e562000599565b60125462000713565b62000ba8565b600082620004055750600062000455565b828202828482816200041357fe5b0414620004525760405162461bcd60e51b8152600401808060200182810382526021815260200180620041fb6021913960400191505060405180910390fd5b90505b92915050565b60006200045283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200082260201b60201c565b3390565b6001600160a01b038316620004f05760405162461bcd60e51b81526004018080602001828103825260248152602001806200423c6024913960400191505060405180910390fd5b6001600160a01b038216620005375760405162461bcd60e51b8152600401808060200182810382526022815260200180620041b76022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6005546001600160a01b031690565b620005b2620004a5565b6005546001600160a01b0390811691161462000604576040805162461bcd60e51b815260206004820181905260248201526000805160206200421c833981519152604482015290519081900360640190fd5b620006108282620008c9565b6200061c8282620009c5565b6200062882826200062c565b5050565b62000636620004a5565b6005546001600160a01b0390811691161462000688576040805162461bcd60e51b815260206004820181905260248201526000805160206200421c833981519152604482015290519081900360640190fd5b6001600160a01b0382166000908152601f602052604090205460ff1615158115151415620006e85760405162461bcd60e51b8152600401808060200182810382526026815260200180620042606026913960400191505060405180910390fd5b6001600160a01b03919091166000908152601f60205260409020805460ff1916911515919091179055565b6001600160a01b0382166200076f576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6200077d6000838362000aac565b620007998160025462000ab160201b620022cf1790919060201c565b6002556001600160a01b03821660009081526020818152604090912054620007cc918390620022cf62000ab1821b17901c565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60008183620008b25760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015620008765781810151838201526020016200085c565b50505050905090810190601f168015620008a45780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581620008bf57fe5b0495945050505050565b620008d3620004a5565b6005546001600160a01b0390811691161462000925576040805162461bcd60e51b815260206004820181905260248201526000805160206200421c833981519152604482015290519081900360640190fd5b6001600160a01b0382166000908152601d602052604090205460ff16151581151514156200099a576040805162461bcd60e51b815260206004820152601f60248201527f466565733a20416c72656164792073657420746f20746869732076616c756500604482015290519081900360640190fd5b6001600160a01b03919091166000908152601d60205260409020805460ff1916911515919091179055565b620009cf620004a5565b6005546001600160a01b0390811691161462000a21576040805162461bcd60e51b815260206004820181905260248201526000805160206200421c833981519152604482015290519081900360640190fd5b6001600160a01b0382166000908152601e602052604090205460ff161515811515141562000a815760405162461bcd60e51b8152600401808060200182810382526022815260200180620041d96022913960400191505060405180910390fd5b6001600160a01b03919091166000908152601e60205260409020805460ff1916911515919091179055565b505050565b60008282018381101562000452576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1062000b4f57805160ff191683800117855562000b7f565b8280016001018555821562000b7f579182015b8281111562000b7f57825182559160200191906001019062000b62565b5062000b8d92915062000b91565b5090565b5b8082111562000b8d576000815560010162000b92565b6135ff8062000bb86000396000f3fe6080604052600436106103b15760003560e01c80638366e79a116101e7578063cd49513f1161010d578063ea43915e116100a0578063f42ffbb21161006f578063f42ffbb214610cf2578063f637434214610d25578063fb0ecfa414610d3a578063fe575a8714610d6a576103b8565b8063ea43915e14610c6b578063eb91e65114610c80578063ee3b1f6114610cb3578063f11a24d314610cdd576103b8565b8063e16830a8116100dc578063e16830a814610bf1578063e6acd7e514610c2c578063e7510e8314610c41578063e9b786cb14610c56576103b8565b8063cd49513f14610b3c578063d00efb2f14610b77578063d163364914610b8c578063dd62ed3e14610bb6576103b8565b8063a3e6746011610185578063b40f946911610154578063b40f946914610a86578063bf95793d14610ab9578063c024666814610aec578063c3c8cd8014610b27576103b8565b8063a3e67460146109f0578063a9059cbb14610a05578063af465a2714610a3e578063b222e0c214610a53576103b8565b8063904236d1116101c1578063904236d11461096757806395d89b411461097c5780639cfe42da14610991578063a1addd95146109c4576103b8565b80638366e79a14610902578063869175241461093d5780638da5cb5b14610952576103b8565b80634fbee193116102d75780636fc3eaec1161026a57806373dd858c1161023957806373dd858c14610872578063766f9bb2146108a55780637f2feddc146108ba5780638036d590146108ed576103b8565b80636fc3eaec146107eb57806370a0823114610800578063715018a614610833578063728d41c914610848576103b8565b806364f5a5bb116102a657806364f5a5bb1461076757806366a88d96146107915780636ac9a870146107a65780636d7adcad146107d6576103b8565b80634fbee193146106ae5780635932ead1146106e15780635ec6ee761461070d5780636402511e1461073d576103b8565b80631a8145bb1161034f57806330280a711161031e57806330280a711461061e578063307aebc914610659578063313ce5671461066e57806349bd5a5e14610699576103b8565b80631a8145bb1461057e57806323b872dd1461059357806324bd0793146105d65780632d3aecc914610609576103b8565b80630a37a3f31161038b5780630a37a3f3146104c75780631694505e146104f357806318160ddd146105245780631816467f1461054b576103b8565b8063049a25cb146103bd57806306fdde0314610404578063095ea7b31461048e576103b8565b366103b857005b600080fd5b3480156103c957600080fd5b506103f0600480360360208110156103e057600080fd5b50356001600160a01b0316610d9d565b604080519115158252519081900360200190f35b34801561041057600080fd5b50610419610dbb565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561045357818101518382015260200161043b565b50505050905090810190601f1680156104805780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561049a57600080fd5b506103f0600480360360408110156104b157600080fd5b506001600160a01b038135169060200135610e51565b3480156104d357600080fd5b506104f1600480360360208110156104ea57600080fd5b5035610e6f565b005b3480156104ff57600080fd5b50610508610ed9565b604080516001600160a01b039092168252519081900360200190f35b34801561053057600080fd5b50610539610ef1565b60408051918252519081900360200190f35b34801561055757600080fd5b506104f16004803603602081101561056e57600080fd5b50356001600160a01b0316610ef7565b34801561058a57600080fd5b50610539610f71565b34801561059f57600080fd5b506103f0600480360360608110156105b657600080fd5b506001600160a01b03813581169160208101359091169060400135610f77565b3480156105e257600080fd5b506104f1600480360360208110156105f957600080fd5b50356001600160a01b0316610ffe565b34801561061557600080fd5b5061053961107a565b34801561062a57600080fd5b506104f16004803603604081101561064157600080fd5b506001600160a01b0381351690602001351515611080565b34801561066557600080fd5b506103f0611161565b34801561067a57600080fd5b5061068361116f565b6040805160ff9092168252519081900360200190f35b3480156106a557600080fd5b50610508611174565b3480156106ba57600080fd5b506103f0600480360360208110156106d157600080fd5b50356001600160a01b0316611183565b3480156106ed57600080fd5b506104f16004803603602081101561070457600080fd5b50351515611198565b34801561071957600080fd5b506104f16004803603604081101561073057600080fd5b508035906020013561120c565b34801561074957600080fd5b506104f16004803603602081101561076057600080fd5b50356112b8565b34801561077357600080fd5b506104f16004803603602081101561078a57600080fd5b503561131b565b34801561079d57600080fd5b506105396113c9565b3480156107b257600080fd5b506104f1600480360360408110156107c957600080fd5b50803590602001356113cf565b3480156107e257600080fd5b50610539611485565b3480156107f757600080fd5b506104f161148b565b34801561080c57600080fd5b506105396004803603602081101561082357600080fd5b50356001600160a01b0316611521565b34801561083f57600080fd5b506104f161153c565b34801561085457600080fd5b506104f16004803603602081101561086b57600080fd5b50356115de565b34801561087e57600080fd5b506104f16004803603602081101561089557600080fd5b50356001600160a01b0316611696565b3480156108b157600080fd5b50610539611710565b3480156108c657600080fd5b50610539600480360360208110156108dd57600080fd5b50356001600160a01b0316611716565b3480156108f957600080fd5b50610539611728565b34801561090e57600080fd5b506103f06004803603604081101561092557600080fd5b506001600160a01b038135811691602001351661172e565b34801561094957600080fd5b506105396118eb565b34801561095e57600080fd5b506105086118f1565b34801561097357600080fd5b50610539611900565b34801561098857600080fd5b50610419611906565b34801561099d57600080fd5b506104f1600480360360208110156109b457600080fd5b50356001600160a01b0316611967565b3480156109d057600080fd5b506104f1600480360360208110156109e757600080fd5b50351515611adf565b3480156109fc57600080fd5b50610539611b55565b348015610a1157600080fd5b506103f060048036036040811015610a2857600080fd5b506001600160a01b038135169060200135611b5b565b348015610a4a57600080fd5b50610539611b6f565b348015610a5f57600080fd5b5061053960048036036020811015610a7657600080fd5b50356001600160a01b0316611b75565b348015610a9257600080fd5b506103f060048036036020811015610aa957600080fd5b50356001600160a01b0316611b87565b348015610ac557600080fd5b506103f060048036036020811015610adc57600080fd5b50356001600160a01b0316611b9c565b348015610af857600080fd5b506104f160048036036040811015610b0f57600080fd5b506001600160a01b0381351690602001351515611bb1565b348015610b3357600080fd5b506104f1611ca8565b348015610b4857600080fd5b506104f160048036036040811015610b5f57600080fd5b506001600160a01b0381351690602001351515611d10565b348015610b8357600080fd5b50610539611d86565b348015610b9857600080fd5b506104f160048036036020811015610baf57600080fd5b5035611d8c565b348015610bc257600080fd5b5061053960048036036040811015610bd957600080fd5b506001600160a01b0381358116916020013516611e94565b348015610bfd57600080fd5b506104f160048036036040811015610c1457600080fd5b506001600160a01b0381351690602001351515611ebf565b348015610c3857600080fd5b50610539611fa0565b348015610c4d57600080fd5b50610539611fa6565b348015610c6257600080fd5b50610539611fac565b348015610c7757600080fd5b506104f1611fb2565b348015610c8c57600080fd5b506104f160048036036020811015610ca357600080fd5b50356001600160a01b031661201b565b348015610cbf57600080fd5b506104f160048036036020811015610cd657600080fd5b50356120ea565b348015610ce957600080fd5b50610539612147565b348015610cfe57600080fd5b506103f060048036036020811015610d1557600080fd5b50356001600160a01b031661214d565b348015610d3157600080fd5b50610539612162565b348015610d4657600080fd5b506104f160048036036040811015610d5d57600080fd5b5080359060200135612168565b348015610d7657600080fd5b506103f060048036036020811015610d8d57600080fd5b50356001600160a01b0316612219565b6001600160a01b031660009081526023602052604090205460ff1690565b60038054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610e475780601f10610e1c57610100808354040283529160200191610e47565b820191906000526020600020905b815481529060010190602001808311610e2a57829003601f168201915b5050505050905090565b6000610e65610e5e612329565b848461232d565b5060015b92915050565b610e77612329565b6005546001600160a01b03908116911614610ec7576040805162461bcd60e51b815260206004820181905260248201526000805160206134f1833981519152604482015290519081900360640190fd5b60038110610ed457600080fd5b601b55565b737a250d5630b4cf539739df2c5dacb4c659f2488d81565b60025490565b610eff612329565b6005546001600160a01b03908116911614610f4f576040805162461bcd60e51b815260206004820181905260248201526000805160206134f1833981519152604482015290519081900360640190fd5b601680546001600160a01b0319166001600160a01b0392909216919091179055565b60105481565b6000610f84848484612419565b610ff484610f90612329565b610fef856040518060600160405280602881526020016134c9602891396001600160a01b038a16600090815260016020526040812090610fce612329565b6001600160a01b031681526020810191909152604001600020549190612d5c565b61232d565b5060019392505050565b611006612329565b6005546001600160a01b03908116911614611056576040805162461bcd60e51b815260206004820181905260248201526000805160206134f1833981519152604482015290519081900360640190fd5b6001600160a01b03166000908152602360205260409020805460ff19166001179055565b600d5481565b611088612329565b6005546001600160a01b039081169116146110d8576040805162461bcd60e51b815260206004820181905260248201526000805160206134f1833981519152604482015290519081900360640190fd5b6001600160a01b0382166000908152601e602052604090205460ff16151581151514156111365760405162461bcd60e51b81526004018080602001828103825260228152602001806134866022913960400191505060405180910390fd5b6001600160a01b03919091166000908152601e60205260409020805460ff1916911515919091179055565b601a54610100900460ff1681565b600990565b6018546001600160a01b031681565b601d6020526000908152604090205460ff1681565b6111a0612329565b6005546001600160a01b039081169116146111f0576040805162461bcd60e51b815260206004820181905260248201526000805160206134f1833981519152604482015290519081900360640190fd5b601a8054911515620100000262ff000019909216919091179055565b611214612329565b6005546001600160a01b03908116911614611264576040805162461bcd60e51b815260206004820181905260248201526000805160206134f1833981519152604482015290519081900360640190fd5b601861127083836122cf565b11156112ad5760405162461bcd60e51b81526004018080602001828103825260298152602001806135a16029913960400191505060405180910390fd5b600e91909155600f55565b6112c0612329565b6005546001600160a01b03908116911614611310576040805162461bcd60e51b815260206004820181905260248201526000805160206134f1833981519152604482015290519081900360640190fd5b633b9aca0002601355565b611323612329565b6005546001600160a01b03908116911614611373576040805162461bcd60e51b815260206004820181905260248201526000805160206134f1833981519152604482015290519081900360640190fd5b600081116113be576040805162461bcd60e51b815260206004820152601360248201527206d61782074782063616e206e6f74206265203606c1b604482015290519081900360640190fd5b633b9aca0002601455565b60155481565b6113d7612329565b6005546001600160a01b03908116911614611427576040805162461bcd60e51b815260206004820181905260248201526000805160206134f1833981519152604482015290519081900360640190fd5b600c61143383836122cf565b11156114705760405162461bcd60e51b81526004018080602001828103825260298152602001806134386029913960400191505060405180910390fd5b6008829055600b819055600c91909155600d55565b60115481565b611493612329565b6005546001600160a01b039081169116146114e3576040805162461bcd60e51b815260206004820181905260248201526000805160206134f1833981519152604482015290519081900360640190fd5b60165460405147916001600160a01b03169082156108fc029083906000818181858888f1935050505015801561151d573d6000803e3d6000fd5b5050565b6001600160a01b031660009081526020819052604090205490565b611544612329565b6005546001600160a01b03908116911614611594576040805162461bcd60e51b815260206004820181905260248201526000805160206134f1833981519152604482015290519081900360640190fd5b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6115e6612329565b6005546001600160a01b03908116911614611636576040805162461bcd60e51b815260206004820181905260248201526000805160206134f1833981519152604482015290519081900360640190fd5b6000811161168b576040805162461bcd60e51b815260206004820152601760248201527f6d61782077616c6c65742063616e206e6f742062652030000000000000000000604482015290519081900360640190fd5b633b9aca0002601555565b61169e612329565b6005546001600160a01b039081169116146116ee576040805162461bcd60e51b815260206004820181905260248201526000805160206134f1833981519152604482015290519081900360640190fd5b601780546001600160a01b0319166001600160a01b0392909216919091179055565b600f5481565b60216020526000908152604090205481565b60145481565b6000611738612329565b6005546001600160a01b03908116911614611788576040805162461bcd60e51b815260206004820181905260248201526000805160206134f1833981519152604482015290519081900360640190fd5b6001600160a01b0383163014156117e6576040805162461bcd60e51b815260206004820152601c60248201527f43616e2774207769746864726177206e617469766520746f6b656e7300000000604482015290519081900360640190fd5b6000836001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561183557600080fd5b505afa158015611849573d6000803e3d6000fd5b505050506040513d602081101561185f57600080fd5b50516040805163a9059cbb60e01b81526001600160a01b0386811660048301526024820184905291519293509086169163a9059cbb916044808201926020929091908290030181600087803b1580156118b757600080fd5b505af11580156118cb573d6000803e3d6000fd5b505050506040513d60208110156118e157600080fd5b5051949350505050565b60135481565b6005546001600160a01b031690565b600b5481565b60048054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610e475780601f10610e1c57610100808354040283529160200191610e47565b61196f612329565b6005546001600160a01b039081169116146119bf576040805162461bcd60e51b815260206004820181905260248201526000805160206134f1833981519152604482015290519081900360640190fd5b6001600160a01b038116600090815260208052604090205460ff1615611a2c576040805162461bcd60e51b815260206004820152601e60248201527f426c61636b6c6973743a20416c726561647920626c61636b6c69737465640000604482015290519081900360640190fd5b601a5465010000000000900460ff16611a765760405162461bcd60e51b81526004018080602001828103825260288152602001806133ea6028913960400191505060405180910390fd5b6018546001600160a01b0382811691161415611ad1576040805162461bcd60e51b815260206004820152601560248201527421b0b73737ba10313630b1b5b634b9ba103830b4b960591b604482015290519081900360640190fd5b611adc816001612df3565b50565b611ae7612329565b6005546001600160a01b03908116911614611b37576040805162461bcd60e51b815260206004820181905260248201526000805160206134f1833981519152604482015290519081900360640190fd5b601a805491151563010000000263ff00000019909216919091179055565b600e5481565b6000610e65611b68612329565b8484612419565b60125481565b60226020526000908152604090205481565b601f6020526000908152604090205460ff1681565b601e6020526000908152604090205460ff1681565b611bb9612329565b6005546001600160a01b03908116911614611c09576040805162461bcd60e51b815260206004820181905260248201526000805160206134f1833981519152604482015290519081900360640190fd5b6001600160a01b0382166000908152601d602052604090205460ff1615158115151415611c7d576040805162461bcd60e51b815260206004820152601f60248201527f466565733a20416c72656164792073657420746f20746869732076616c756500604482015290519081900360640190fd5b6001600160a01b03919091166000908152601d60205260409020805460ff1916911515919091179055565b611cb0612329565b6005546001600160a01b03908116911614611d00576040805162461bcd60e51b815260206004820181905260248201526000805160206134f1833981519152604482015290519081900360640190fd5b60115460105401611adc81612e1d565b611d18612329565b6005546001600160a01b03908116911614611d68576040805162461bcd60e51b815260206004820181905260248201526000805160206134f1833981519152604482015290519081900360640190fd5b611d728282611bb1565b611d7c8282611080565b61151d8282611ebf565b60195481565b611d94612329565b6005546001600160a01b03908116911614611de4576040805162461bcd60e51b815260206004820181905260248201526000805160206134f1833981519152604482015290519081900360640190fd5b601a54610100900460ff1615611e41576040805162461bcd60e51b815260206004820152601c60248201527f436f6e747261637420697320616c7265616479206c61756e6368656400000000604482015290519081900360640190fd5b601b819055601a805461ff00191661010017905543601955601254611e759061271090611e6f90606461222d565b9061228d565b601455601254611e8e9061271090611e6f90606461222d565b60155550565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b611ec7612329565b6005546001600160a01b03908116911614611f17576040805162461bcd60e51b815260206004820181905260248201526000805160206134f1833981519152604482015290519081900360640190fd5b6001600160a01b0382166000908152601f602052604090205460ff1615158115151415611f755760405162461bcd60e51b815260040180806020018281038252602681526020018061357b6026913960400191505060405180910390fd5b6001600160a01b03919091166000908152601f60205260409020805460ff1916911515919091179055565b600c5481565b601c5481565b60095481565b611fba612329565b6005546001600160a01b0390811691161461200a576040805162461bcd60e51b815260206004820181905260248201526000805160206134f1833981519152604482015290519081900360640190fd5b601a805465ff000000000019169055565b612023612329565b6005546001600160a01b03908116911614612073576040805162461bcd60e51b815260206004820181905260248201526000805160206134f1833981519152604482015290519081900360640190fd5b6001600160a01b038116600090815260208052604090205460ff166120df576040805162461bcd60e51b815260206004820152601a60248201527f426c61636b6c6973743a204e6f7420626c61636b6c6973746564000000000000604482015290519081900360640190fd5b611adc816000612df3565b6120f2612329565b6005546001600160a01b03908116911614612142576040805162461bcd60e51b815260206004820181905260248201526000805160206134f1833981519152604482015290519081900360640190fd5b601c55565b60075481565b60236020526000908152604090205460ff1681565b60085481565b612170612329565b6005546001600160a01b039081169116146121c0576040805162461bcd60e51b815260206004820181905260248201526000805160206134f1833981519152604482015290519081900360640190fd5b600c6121cc83836122cf565b11156122095760405162461bcd60e51b81526004018080602001828103825260258152602001806134616025913960400191505060405180910390fd5b600791909155600a819055600955565b602080526000908152604090205460ff1681565b60008261223c57506000610e69565b8282028284828161224957fe5b04146122865760405162461bcd60e51b81526004018080602001828103825260218152602001806134a86021913960400191505060405180910390fd5b9392505050565b600061228683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612f23565b600082820183811015612286576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b3390565b6001600160a01b0383166123725760405162461bcd60e51b81526004018080602001828103825260248152602001806135576024913960400191505060405180910390fd5b6001600160a01b0382166123b75760405162461bcd60e51b81526004018080602001828103825260228152602001806133c86022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316612474576040805162461bcd60e51b815260206004820152601e60248201527f7472616e736665722066726f6d20746865207a65726f20616464726573730000604482015290519081900360640190fd5b6001600160a01b0382166124cf576040805162461bcd60e51b815260206004820152601c60248201527f7472616e7366657220746f20746865207a65726f206164647265737300000000604482015290519081900360640190fd5b601454811115806124f857506001600160a01b0383166000908152601e602052604090205460ff165b8061251b57506001600160a01b0382166000908152601e602052604090205460ff165b612562576040805162461bcd60e51b8152602060048201526013602482015272547820416d6f756e7420746f6f206c6172676560681b604482015290519081900360640190fd5b6015546125788261257285611521565b906122cf565b11158061259d57506001600160a01b0382166000908152601f602052604090205460ff165b6125d85760405162461bcd60e51b81526004018080602001828103825260218152602001806135116021913960400191505060405180910390fd5b601a54610100900460ff168061260657506001600160a01b0383166000908152601d602052604090205460ff165b8061262957506001600160a01b0382166000908152601d602052604090205460ff165b61266f576040805162461bcd60e51b815260206004820152601260248201527157616974696e6720746f20676f206c69766560701b604482015290519081900360640190fd5b6001600160a01b038316600090815260208052604090205460ff16156126d4576040805162461bcd60e51b815260206004820152601560248201527414d95b99195c881a5cc8189b1858dadb1a5cdd1959605a1b604482015290519081900360640190fd5b806126ea576126e583836000612f88565b612d57565b601154601054601354600a546009556018549190920191821015906001600160a01b0386811691161480159061271d5750805b801561272c5750601a5460ff16155b1561275657601a805460ff1916600117905561274782612e1d565b601a805460ff191690556127cc565b6018546001600160a01b03868116911614801561278157506018546001600160a01b03858116911614155b80156127925750601b546019540143105b80156127b757506001600160a01b0384166000908152601d602052604090205460ff16155b156127cc57605a6009556127cc846001612df3565b601a546001600160a01b0386166000908152601d602052604090205460ff9182161591168061281357506001600160a01b0385166000908152601d602052604090205460ff165b1561281c575060005b6018546001600160a01b0387811691161480156128435750601a54640100000000900460ff165b15612ad8576040805160028082526060808301845292602083019080368337019050509050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156128b557600080fd5b505afa1580156128c9573d6000803e3d6000fd5b505050506040513d60208110156128df57600080fd5b5051815182906000906128ee57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050308160018151811061291c57fe5b6001600160a01b03909216602092830291909101820152604080516307c0329d60e21b81526004810188815260248201928352845160448301528451600094737a250d5630b4cf539739df2c5dacb4c659f2488d94631f00ca74948c948994909360649092019185810191028083838c5b838110156129a557818101518382015260200161298d565b50505050905001935050505060006040518083038186803b1580156129c957600080fd5b505afa1580156129dd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015612a0657600080fd5b8101908080516040519392919084640100000000821115612a2657600080fd5b908301906020820185811115612a3b57600080fd5b8251866020820283011164010000000082111715612a5857600080fd5b82525081516020918201928201910280838360005b83811015612a85578181015183820152602001612a6d565b50505050905001604052505050600081518110612a9e57fe5b60200260200101519050601c548110612ad5576001600160a01b0387166000908152602360205260409020805460ff191660011790555b50505b8015612d48576018546000906001600160a01b0387811691161415612c1c57601a546301000000900460ff1615612b91576001600160a01b03871660009081526021602052604090205415801590612b4e57506001600160a01b03871660009081526021602052604090205442610e1090910110155b15612b7f57600e54600855600f54600b556001600160a01b0387166000908152602160205260409020429055612b8c565b600c54600855600d54600b555b612b9e565b600c54600855600d54600b555b6000612bb7600b546008546122cf90919063ffffffff16565b9050612bc86064611e6f888461222d565b9150612bef612be682611e6f6008548661222d90919063ffffffff16565b601054906122cf565b601055600b54612c1390612c0a908390611e6f90869061222d565b601154906122cf565b60115550612d28565b601a5462010000900460ff1615612c70576001600160a01b0386166000908152602260205260409020544211612c5157600080fd5b6001600160a01b0386166000908152602260205260409020601e420190555b601a546301000000900460ff168015612c9f57506001600160a01b038616600090815260216020526040902054155b15612cc0576001600160a01b03861660009081526021602052604090204290555b6000612cd96009546007546122cf90919063ffffffff16565b9050612cea6064611e6f888461222d565b9150612d08612be682611e6f6007548661222d90919063ffffffff16565b601055600954612d2390612c0a908390611e6f90869061222d565b601155505b8015612d4657612d39873083612f88565b612d4385826130e3565b94505b505b612d53868686612f88565b5050505b505050565b60008184841115612deb5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612db0578181015183820152602001612d98565b50505050905090810190601f168015612ddd5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6001600160a01b039190911660009081526020805260409020805460ff1916911515919091179055565b600060135490506000612e446002611e6f85611e6f6010548761222d90919063ffffffff16565b90506000612e5c82612e5685826130e3565b906130e3565b90506000612e6a84846130e3565b9050612e7581613125565b476000612e8683611e6f848761222d565b90506000612e9483836130e3565b9050612ead612ea487600261222d565b601054906130e3565b601055612ed1612ec8612ec188600261222d565b89906130e3565b601154906130e3565b6011556016546040516001600160a01b039091169083156108fc029084906000818181858888f19350505050158015612f0e573d6000803e3d6000fd5b50612f1986826132f1565b5050505050505050565b60008183612f725760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612db0578181015183820152602001612d98565b506000838581612f7e57fe5b0495945050505050565b6001600160a01b038316612fcd5760405162461bcd60e51b81526004018080602001828103825260258152602001806135326025913960400191505060405180910390fd5b6001600160a01b0382166130125760405162461bcd60e51b81526004018080602001828103825260238152602001806133a56023913960400191505060405180910390fd5b61301d838383612d57565b61305a81604051806060016040528060268152602001613412602691396001600160a01b0386166000908152602081905260409020549190612d5c565b6001600160a01b03808516600090815260208190526040808220939093559084168152205461308990826122cf565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600061228683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612d5c565b6040805160028082526060808301845292602083019080368337019050509050308160008151811061315357fe5b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156131c057600080fd5b505afa1580156131d4573d6000803e3d6000fd5b505050506040513d60208110156131ea57600080fd5b50518151829060019081106131fb57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663791ac9478360008430426040518663ffffffff1660e01b81526004018086815260200185815260200180602001846001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b838110156132b457818101518382015260200161329c565b505050509050019650505050505050600060405180830381600087803b1580156132dd57600080fd5b505af1158015612d53573d6000803e3d6000fd5b6017546040805163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0390921660848301524260a483015251737a250d5630b4cf539739df2c5dacb4c659f2488d9163f305d71991849160c48082019260609290919082900301818588803b15801561337357600080fd5b505af1158015613387573d6000803e3d6000fd5b50505050506040513d606081101561339e57600080fd5b5050505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f2061646472657373426c61636b6c6973742066756e6374696f6e616c697479206e6f206c6f6e6765722061637469766545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365546f74616c2064656661756c74206665652063616e206e6f74206265206d6f7265207468616e203132546f74616c20627579206665652063616e206e6f74206265206d6f7265207468616e20313254784c696d69743a20416c72656164792073657420746f20746869732076616c7565536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725472616e736665722077696c6c206578636565642077616c6c6574206c696d697445524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737357616c6c65744c696d69743a20416c72656164792073657420746f20746869732076616c7565546f74616c2064656661756c74206665652063616e206e6f74206265206d6f7265207468616e203235a264697066735822122082f59994d6d016e8367042316424bec246b677c241672bccf688f3c7d79fd05664736f6c634300060c003345524332303a20617070726f766520746f20746865207a65726f206164647265737354784c696d69743a20416c72656164792073657420746f20746869732076616c7565536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657245524332303a20617070726f76652066726f6d20746865207a65726f206164647265737357616c6c65744c696d69743a20416c72656164792073657420746f20746869732076616c7565

Deployed Bytecode

0x6080604052600436106103b15760003560e01c80638366e79a116101e7578063cd49513f1161010d578063ea43915e116100a0578063f42ffbb21161006f578063f42ffbb214610cf2578063f637434214610d25578063fb0ecfa414610d3a578063fe575a8714610d6a576103b8565b8063ea43915e14610c6b578063eb91e65114610c80578063ee3b1f6114610cb3578063f11a24d314610cdd576103b8565b8063e16830a8116100dc578063e16830a814610bf1578063e6acd7e514610c2c578063e7510e8314610c41578063e9b786cb14610c56576103b8565b8063cd49513f14610b3c578063d00efb2f14610b77578063d163364914610b8c578063dd62ed3e14610bb6576103b8565b8063a3e6746011610185578063b40f946911610154578063b40f946914610a86578063bf95793d14610ab9578063c024666814610aec578063c3c8cd8014610b27576103b8565b8063a3e67460146109f0578063a9059cbb14610a05578063af465a2714610a3e578063b222e0c214610a53576103b8565b8063904236d1116101c1578063904236d11461096757806395d89b411461097c5780639cfe42da14610991578063a1addd95146109c4576103b8565b80638366e79a14610902578063869175241461093d5780638da5cb5b14610952576103b8565b80634fbee193116102d75780636fc3eaec1161026a57806373dd858c1161023957806373dd858c14610872578063766f9bb2146108a55780637f2feddc146108ba5780638036d590146108ed576103b8565b80636fc3eaec146107eb57806370a0823114610800578063715018a614610833578063728d41c914610848576103b8565b806364f5a5bb116102a657806364f5a5bb1461076757806366a88d96146107915780636ac9a870146107a65780636d7adcad146107d6576103b8565b80634fbee193146106ae5780635932ead1146106e15780635ec6ee761461070d5780636402511e1461073d576103b8565b80631a8145bb1161034f57806330280a711161031e57806330280a711461061e578063307aebc914610659578063313ce5671461066e57806349bd5a5e14610699576103b8565b80631a8145bb1461057e57806323b872dd1461059357806324bd0793146105d65780632d3aecc914610609576103b8565b80630a37a3f31161038b5780630a37a3f3146104c75780631694505e146104f357806318160ddd146105245780631816467f1461054b576103b8565b8063049a25cb146103bd57806306fdde0314610404578063095ea7b31461048e576103b8565b366103b857005b600080fd5b3480156103c957600080fd5b506103f0600480360360208110156103e057600080fd5b50356001600160a01b0316610d9d565b604080519115158252519081900360200190f35b34801561041057600080fd5b50610419610dbb565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561045357818101518382015260200161043b565b50505050905090810190601f1680156104805780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561049a57600080fd5b506103f0600480360360408110156104b157600080fd5b506001600160a01b038135169060200135610e51565b3480156104d357600080fd5b506104f1600480360360208110156104ea57600080fd5b5035610e6f565b005b3480156104ff57600080fd5b50610508610ed9565b604080516001600160a01b039092168252519081900360200190f35b34801561053057600080fd5b50610539610ef1565b60408051918252519081900360200190f35b34801561055757600080fd5b506104f16004803603602081101561056e57600080fd5b50356001600160a01b0316610ef7565b34801561058a57600080fd5b50610539610f71565b34801561059f57600080fd5b506103f0600480360360608110156105b657600080fd5b506001600160a01b03813581169160208101359091169060400135610f77565b3480156105e257600080fd5b506104f1600480360360208110156105f957600080fd5b50356001600160a01b0316610ffe565b34801561061557600080fd5b5061053961107a565b34801561062a57600080fd5b506104f16004803603604081101561064157600080fd5b506001600160a01b0381351690602001351515611080565b34801561066557600080fd5b506103f0611161565b34801561067a57600080fd5b5061068361116f565b6040805160ff9092168252519081900360200190f35b3480156106a557600080fd5b50610508611174565b3480156106ba57600080fd5b506103f0600480360360208110156106d157600080fd5b50356001600160a01b0316611183565b3480156106ed57600080fd5b506104f16004803603602081101561070457600080fd5b50351515611198565b34801561071957600080fd5b506104f16004803603604081101561073057600080fd5b508035906020013561120c565b34801561074957600080fd5b506104f16004803603602081101561076057600080fd5b50356112b8565b34801561077357600080fd5b506104f16004803603602081101561078a57600080fd5b503561131b565b34801561079d57600080fd5b506105396113c9565b3480156107b257600080fd5b506104f1600480360360408110156107c957600080fd5b50803590602001356113cf565b3480156107e257600080fd5b50610539611485565b3480156107f757600080fd5b506104f161148b565b34801561080c57600080fd5b506105396004803603602081101561082357600080fd5b50356001600160a01b0316611521565b34801561083f57600080fd5b506104f161153c565b34801561085457600080fd5b506104f16004803603602081101561086b57600080fd5b50356115de565b34801561087e57600080fd5b506104f16004803603602081101561089557600080fd5b50356001600160a01b0316611696565b3480156108b157600080fd5b50610539611710565b3480156108c657600080fd5b50610539600480360360208110156108dd57600080fd5b50356001600160a01b0316611716565b3480156108f957600080fd5b50610539611728565b34801561090e57600080fd5b506103f06004803603604081101561092557600080fd5b506001600160a01b038135811691602001351661172e565b34801561094957600080fd5b506105396118eb565b34801561095e57600080fd5b506105086118f1565b34801561097357600080fd5b50610539611900565b34801561098857600080fd5b50610419611906565b34801561099d57600080fd5b506104f1600480360360208110156109b457600080fd5b50356001600160a01b0316611967565b3480156109d057600080fd5b506104f1600480360360208110156109e757600080fd5b50351515611adf565b3480156109fc57600080fd5b50610539611b55565b348015610a1157600080fd5b506103f060048036036040811015610a2857600080fd5b506001600160a01b038135169060200135611b5b565b348015610a4a57600080fd5b50610539611b6f565b348015610a5f57600080fd5b5061053960048036036020811015610a7657600080fd5b50356001600160a01b0316611b75565b348015610a9257600080fd5b506103f060048036036020811015610aa957600080fd5b50356001600160a01b0316611b87565b348015610ac557600080fd5b506103f060048036036020811015610adc57600080fd5b50356001600160a01b0316611b9c565b348015610af857600080fd5b506104f160048036036040811015610b0f57600080fd5b506001600160a01b0381351690602001351515611bb1565b348015610b3357600080fd5b506104f1611ca8565b348015610b4857600080fd5b506104f160048036036040811015610b5f57600080fd5b506001600160a01b0381351690602001351515611d10565b348015610b8357600080fd5b50610539611d86565b348015610b9857600080fd5b506104f160048036036020811015610baf57600080fd5b5035611d8c565b348015610bc257600080fd5b5061053960048036036040811015610bd957600080fd5b506001600160a01b0381358116916020013516611e94565b348015610bfd57600080fd5b506104f160048036036040811015610c1457600080fd5b506001600160a01b0381351690602001351515611ebf565b348015610c3857600080fd5b50610539611fa0565b348015610c4d57600080fd5b50610539611fa6565b348015610c6257600080fd5b50610539611fac565b348015610c7757600080fd5b506104f1611fb2565b348015610c8c57600080fd5b506104f160048036036020811015610ca357600080fd5b50356001600160a01b031661201b565b348015610cbf57600080fd5b506104f160048036036020811015610cd657600080fd5b50356120ea565b348015610ce957600080fd5b50610539612147565b348015610cfe57600080fd5b506103f060048036036020811015610d1557600080fd5b50356001600160a01b031661214d565b348015610d3157600080fd5b50610539612162565b348015610d4657600080fd5b506104f160048036036040811015610d5d57600080fd5b5080359060200135612168565b348015610d7657600080fd5b506103f060048036036020811015610d8d57600080fd5b50356001600160a01b0316612219565b6001600160a01b031660009081526023602052604090205460ff1690565b60038054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610e475780601f10610e1c57610100808354040283529160200191610e47565b820191906000526020600020905b815481529060010190602001808311610e2a57829003601f168201915b5050505050905090565b6000610e65610e5e612329565b848461232d565b5060015b92915050565b610e77612329565b6005546001600160a01b03908116911614610ec7576040805162461bcd60e51b815260206004820181905260248201526000805160206134f1833981519152604482015290519081900360640190fd5b60038110610ed457600080fd5b601b55565b737a250d5630b4cf539739df2c5dacb4c659f2488d81565b60025490565b610eff612329565b6005546001600160a01b03908116911614610f4f576040805162461bcd60e51b815260206004820181905260248201526000805160206134f1833981519152604482015290519081900360640190fd5b601680546001600160a01b0319166001600160a01b0392909216919091179055565b60105481565b6000610f84848484612419565b610ff484610f90612329565b610fef856040518060600160405280602881526020016134c9602891396001600160a01b038a16600090815260016020526040812090610fce612329565b6001600160a01b031681526020810191909152604001600020549190612d5c565b61232d565b5060019392505050565b611006612329565b6005546001600160a01b03908116911614611056576040805162461bcd60e51b815260206004820181905260248201526000805160206134f1833981519152604482015290519081900360640190fd5b6001600160a01b03166000908152602360205260409020805460ff19166001179055565b600d5481565b611088612329565b6005546001600160a01b039081169116146110d8576040805162461bcd60e51b815260206004820181905260248201526000805160206134f1833981519152604482015290519081900360640190fd5b6001600160a01b0382166000908152601e602052604090205460ff16151581151514156111365760405162461bcd60e51b81526004018080602001828103825260228152602001806134866022913960400191505060405180910390fd5b6001600160a01b03919091166000908152601e60205260409020805460ff1916911515919091179055565b601a54610100900460ff1681565b600990565b6018546001600160a01b031681565b601d6020526000908152604090205460ff1681565b6111a0612329565b6005546001600160a01b039081169116146111f0576040805162461bcd60e51b815260206004820181905260248201526000805160206134f1833981519152604482015290519081900360640190fd5b601a8054911515620100000262ff000019909216919091179055565b611214612329565b6005546001600160a01b03908116911614611264576040805162461bcd60e51b815260206004820181905260248201526000805160206134f1833981519152604482015290519081900360640190fd5b601861127083836122cf565b11156112ad5760405162461bcd60e51b81526004018080602001828103825260298152602001806135a16029913960400191505060405180910390fd5b600e91909155600f55565b6112c0612329565b6005546001600160a01b03908116911614611310576040805162461bcd60e51b815260206004820181905260248201526000805160206134f1833981519152604482015290519081900360640190fd5b633b9aca0002601355565b611323612329565b6005546001600160a01b03908116911614611373576040805162461bcd60e51b815260206004820181905260248201526000805160206134f1833981519152604482015290519081900360640190fd5b600081116113be576040805162461bcd60e51b815260206004820152601360248201527206d61782074782063616e206e6f74206265203606c1b604482015290519081900360640190fd5b633b9aca0002601455565b60155481565b6113d7612329565b6005546001600160a01b03908116911614611427576040805162461bcd60e51b815260206004820181905260248201526000805160206134f1833981519152604482015290519081900360640190fd5b600c61143383836122cf565b11156114705760405162461bcd60e51b81526004018080602001828103825260298152602001806134386029913960400191505060405180910390fd5b6008829055600b819055600c91909155600d55565b60115481565b611493612329565b6005546001600160a01b039081169116146114e3576040805162461bcd60e51b815260206004820181905260248201526000805160206134f1833981519152604482015290519081900360640190fd5b60165460405147916001600160a01b03169082156108fc029083906000818181858888f1935050505015801561151d573d6000803e3d6000fd5b5050565b6001600160a01b031660009081526020819052604090205490565b611544612329565b6005546001600160a01b03908116911614611594576040805162461bcd60e51b815260206004820181905260248201526000805160206134f1833981519152604482015290519081900360640190fd5b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6115e6612329565b6005546001600160a01b03908116911614611636576040805162461bcd60e51b815260206004820181905260248201526000805160206134f1833981519152604482015290519081900360640190fd5b6000811161168b576040805162461bcd60e51b815260206004820152601760248201527f6d61782077616c6c65742063616e206e6f742062652030000000000000000000604482015290519081900360640190fd5b633b9aca0002601555565b61169e612329565b6005546001600160a01b039081169116146116ee576040805162461bcd60e51b815260206004820181905260248201526000805160206134f1833981519152604482015290519081900360640190fd5b601780546001600160a01b0319166001600160a01b0392909216919091179055565b600f5481565b60216020526000908152604090205481565b60145481565b6000611738612329565b6005546001600160a01b03908116911614611788576040805162461bcd60e51b815260206004820181905260248201526000805160206134f1833981519152604482015290519081900360640190fd5b6001600160a01b0383163014156117e6576040805162461bcd60e51b815260206004820152601c60248201527f43616e2774207769746864726177206e617469766520746f6b656e7300000000604482015290519081900360640190fd5b6000836001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561183557600080fd5b505afa158015611849573d6000803e3d6000fd5b505050506040513d602081101561185f57600080fd5b50516040805163a9059cbb60e01b81526001600160a01b0386811660048301526024820184905291519293509086169163a9059cbb916044808201926020929091908290030181600087803b1580156118b757600080fd5b505af11580156118cb573d6000803e3d6000fd5b505050506040513d60208110156118e157600080fd5b5051949350505050565b60135481565b6005546001600160a01b031690565b600b5481565b60048054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610e475780601f10610e1c57610100808354040283529160200191610e47565b61196f612329565b6005546001600160a01b039081169116146119bf576040805162461bcd60e51b815260206004820181905260248201526000805160206134f1833981519152604482015290519081900360640190fd5b6001600160a01b038116600090815260208052604090205460ff1615611a2c576040805162461bcd60e51b815260206004820152601e60248201527f426c61636b6c6973743a20416c726561647920626c61636b6c69737465640000604482015290519081900360640190fd5b601a5465010000000000900460ff16611a765760405162461bcd60e51b81526004018080602001828103825260288152602001806133ea6028913960400191505060405180910390fd5b6018546001600160a01b0382811691161415611ad1576040805162461bcd60e51b815260206004820152601560248201527421b0b73737ba10313630b1b5b634b9ba103830b4b960591b604482015290519081900360640190fd5b611adc816001612df3565b50565b611ae7612329565b6005546001600160a01b03908116911614611b37576040805162461bcd60e51b815260206004820181905260248201526000805160206134f1833981519152604482015290519081900360640190fd5b601a805491151563010000000263ff00000019909216919091179055565b600e5481565b6000610e65611b68612329565b8484612419565b60125481565b60226020526000908152604090205481565b601f6020526000908152604090205460ff1681565b601e6020526000908152604090205460ff1681565b611bb9612329565b6005546001600160a01b03908116911614611c09576040805162461bcd60e51b815260206004820181905260248201526000805160206134f1833981519152604482015290519081900360640190fd5b6001600160a01b0382166000908152601d602052604090205460ff1615158115151415611c7d576040805162461bcd60e51b815260206004820152601f60248201527f466565733a20416c72656164792073657420746f20746869732076616c756500604482015290519081900360640190fd5b6001600160a01b03919091166000908152601d60205260409020805460ff1916911515919091179055565b611cb0612329565b6005546001600160a01b03908116911614611d00576040805162461bcd60e51b815260206004820181905260248201526000805160206134f1833981519152604482015290519081900360640190fd5b60115460105401611adc81612e1d565b611d18612329565b6005546001600160a01b03908116911614611d68576040805162461bcd60e51b815260206004820181905260248201526000805160206134f1833981519152604482015290519081900360640190fd5b611d728282611bb1565b611d7c8282611080565b61151d8282611ebf565b60195481565b611d94612329565b6005546001600160a01b03908116911614611de4576040805162461bcd60e51b815260206004820181905260248201526000805160206134f1833981519152604482015290519081900360640190fd5b601a54610100900460ff1615611e41576040805162461bcd60e51b815260206004820152601c60248201527f436f6e747261637420697320616c7265616479206c61756e6368656400000000604482015290519081900360640190fd5b601b819055601a805461ff00191661010017905543601955601254611e759061271090611e6f90606461222d565b9061228d565b601455601254611e8e9061271090611e6f90606461222d565b60155550565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b611ec7612329565b6005546001600160a01b03908116911614611f17576040805162461bcd60e51b815260206004820181905260248201526000805160206134f1833981519152604482015290519081900360640190fd5b6001600160a01b0382166000908152601f602052604090205460ff1615158115151415611f755760405162461bcd60e51b815260040180806020018281038252602681526020018061357b6026913960400191505060405180910390fd5b6001600160a01b03919091166000908152601f60205260409020805460ff1916911515919091179055565b600c5481565b601c5481565b60095481565b611fba612329565b6005546001600160a01b0390811691161461200a576040805162461bcd60e51b815260206004820181905260248201526000805160206134f1833981519152604482015290519081900360640190fd5b601a805465ff000000000019169055565b612023612329565b6005546001600160a01b03908116911614612073576040805162461bcd60e51b815260206004820181905260248201526000805160206134f1833981519152604482015290519081900360640190fd5b6001600160a01b038116600090815260208052604090205460ff166120df576040805162461bcd60e51b815260206004820152601a60248201527f426c61636b6c6973743a204e6f7420626c61636b6c6973746564000000000000604482015290519081900360640190fd5b611adc816000612df3565b6120f2612329565b6005546001600160a01b03908116911614612142576040805162461bcd60e51b815260206004820181905260248201526000805160206134f1833981519152604482015290519081900360640190fd5b601c55565b60075481565b60236020526000908152604090205460ff1681565b60085481565b612170612329565b6005546001600160a01b039081169116146121c0576040805162461bcd60e51b815260206004820181905260248201526000805160206134f1833981519152604482015290519081900360640190fd5b600c6121cc83836122cf565b11156122095760405162461bcd60e51b81526004018080602001828103825260258152602001806134616025913960400191505060405180910390fd5b600791909155600a819055600955565b602080526000908152604090205460ff1681565b60008261223c57506000610e69565b8282028284828161224957fe5b04146122865760405162461bcd60e51b81526004018080602001828103825260218152602001806134a86021913960400191505060405180910390fd5b9392505050565b600061228683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612f23565b600082820183811015612286576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b3390565b6001600160a01b0383166123725760405162461bcd60e51b81526004018080602001828103825260248152602001806135576024913960400191505060405180910390fd5b6001600160a01b0382166123b75760405162461bcd60e51b81526004018080602001828103825260228152602001806133c86022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316612474576040805162461bcd60e51b815260206004820152601e60248201527f7472616e736665722066726f6d20746865207a65726f20616464726573730000604482015290519081900360640190fd5b6001600160a01b0382166124cf576040805162461bcd60e51b815260206004820152601c60248201527f7472616e7366657220746f20746865207a65726f206164647265737300000000604482015290519081900360640190fd5b601454811115806124f857506001600160a01b0383166000908152601e602052604090205460ff165b8061251b57506001600160a01b0382166000908152601e602052604090205460ff165b612562576040805162461bcd60e51b8152602060048201526013602482015272547820416d6f756e7420746f6f206c6172676560681b604482015290519081900360640190fd5b6015546125788261257285611521565b906122cf565b11158061259d57506001600160a01b0382166000908152601f602052604090205460ff165b6125d85760405162461bcd60e51b81526004018080602001828103825260218152602001806135116021913960400191505060405180910390fd5b601a54610100900460ff168061260657506001600160a01b0383166000908152601d602052604090205460ff165b8061262957506001600160a01b0382166000908152601d602052604090205460ff165b61266f576040805162461bcd60e51b815260206004820152601260248201527157616974696e6720746f20676f206c69766560701b604482015290519081900360640190fd5b6001600160a01b038316600090815260208052604090205460ff16156126d4576040805162461bcd60e51b815260206004820152601560248201527414d95b99195c881a5cc8189b1858dadb1a5cdd1959605a1b604482015290519081900360640190fd5b806126ea576126e583836000612f88565b612d57565b601154601054601354600a546009556018549190920191821015906001600160a01b0386811691161480159061271d5750805b801561272c5750601a5460ff16155b1561275657601a805460ff1916600117905561274782612e1d565b601a805460ff191690556127cc565b6018546001600160a01b03868116911614801561278157506018546001600160a01b03858116911614155b80156127925750601b546019540143105b80156127b757506001600160a01b0384166000908152601d602052604090205460ff16155b156127cc57605a6009556127cc846001612df3565b601a546001600160a01b0386166000908152601d602052604090205460ff9182161591168061281357506001600160a01b0385166000908152601d602052604090205460ff165b1561281c575060005b6018546001600160a01b0387811691161480156128435750601a54640100000000900460ff165b15612ad8576040805160028082526060808301845292602083019080368337019050509050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156128b557600080fd5b505afa1580156128c9573d6000803e3d6000fd5b505050506040513d60208110156128df57600080fd5b5051815182906000906128ee57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050308160018151811061291c57fe5b6001600160a01b03909216602092830291909101820152604080516307c0329d60e21b81526004810188815260248201928352845160448301528451600094737a250d5630b4cf539739df2c5dacb4c659f2488d94631f00ca74948c948994909360649092019185810191028083838c5b838110156129a557818101518382015260200161298d565b50505050905001935050505060006040518083038186803b1580156129c957600080fd5b505afa1580156129dd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015612a0657600080fd5b8101908080516040519392919084640100000000821115612a2657600080fd5b908301906020820185811115612a3b57600080fd5b8251866020820283011164010000000082111715612a5857600080fd5b82525081516020918201928201910280838360005b83811015612a85578181015183820152602001612a6d565b50505050905001604052505050600081518110612a9e57fe5b60200260200101519050601c548110612ad5576001600160a01b0387166000908152602360205260409020805460ff191660011790555b50505b8015612d48576018546000906001600160a01b0387811691161415612c1c57601a546301000000900460ff1615612b91576001600160a01b03871660009081526021602052604090205415801590612b4e57506001600160a01b03871660009081526021602052604090205442610e1090910110155b15612b7f57600e54600855600f54600b556001600160a01b0387166000908152602160205260409020429055612b8c565b600c54600855600d54600b555b612b9e565b600c54600855600d54600b555b6000612bb7600b546008546122cf90919063ffffffff16565b9050612bc86064611e6f888461222d565b9150612bef612be682611e6f6008548661222d90919063ffffffff16565b601054906122cf565b601055600b54612c1390612c0a908390611e6f90869061222d565b601154906122cf565b60115550612d28565b601a5462010000900460ff1615612c70576001600160a01b0386166000908152602260205260409020544211612c5157600080fd5b6001600160a01b0386166000908152602260205260409020601e420190555b601a546301000000900460ff168015612c9f57506001600160a01b038616600090815260216020526040902054155b15612cc0576001600160a01b03861660009081526021602052604090204290555b6000612cd96009546007546122cf90919063ffffffff16565b9050612cea6064611e6f888461222d565b9150612d08612be682611e6f6007548661222d90919063ffffffff16565b601055600954612d2390612c0a908390611e6f90869061222d565b601155505b8015612d4657612d39873083612f88565b612d4385826130e3565b94505b505b612d53868686612f88565b5050505b505050565b60008184841115612deb5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612db0578181015183820152602001612d98565b50505050905090810190601f168015612ddd5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6001600160a01b039190911660009081526020805260409020805460ff1916911515919091179055565b600060135490506000612e446002611e6f85611e6f6010548761222d90919063ffffffff16565b90506000612e5c82612e5685826130e3565b906130e3565b90506000612e6a84846130e3565b9050612e7581613125565b476000612e8683611e6f848761222d565b90506000612e9483836130e3565b9050612ead612ea487600261222d565b601054906130e3565b601055612ed1612ec8612ec188600261222d565b89906130e3565b601154906130e3565b6011556016546040516001600160a01b039091169083156108fc029084906000818181858888f19350505050158015612f0e573d6000803e3d6000fd5b50612f1986826132f1565b5050505050505050565b60008183612f725760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612db0578181015183820152602001612d98565b506000838581612f7e57fe5b0495945050505050565b6001600160a01b038316612fcd5760405162461bcd60e51b81526004018080602001828103825260258152602001806135326025913960400191505060405180910390fd5b6001600160a01b0382166130125760405162461bcd60e51b81526004018080602001828103825260238152602001806133a56023913960400191505060405180910390fd5b61301d838383612d57565b61305a81604051806060016040528060268152602001613412602691396001600160a01b0386166000908152602081905260409020549190612d5c565b6001600160a01b03808516600090815260208190526040808220939093559084168152205461308990826122cf565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600061228683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612d5c565b6040805160028082526060808301845292602083019080368337019050509050308160008151811061315357fe5b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156131c057600080fd5b505afa1580156131d4573d6000803e3d6000fd5b505050506040513d60208110156131ea57600080fd5b50518151829060019081106131fb57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663791ac9478360008430426040518663ffffffff1660e01b81526004018086815260200185815260200180602001846001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b838110156132b457818101518382015260200161329c565b505050509050019650505050505050600060405180830381600087803b1580156132dd57600080fd5b505af1158015612d53573d6000803e3d6000fd5b6017546040805163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0390921660848301524260a483015251737a250d5630b4cf539739df2c5dacb4c659f2488d9163f305d71991849160c48082019260609290919082900301818588803b15801561337357600080fd5b505af1158015613387573d6000803e3d6000fd5b50505050506040513d606081101561339e57600080fd5b5050505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f2061646472657373426c61636b6c6973742066756e6374696f6e616c697479206e6f206c6f6e6765722061637469766545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365546f74616c2064656661756c74206665652063616e206e6f74206265206d6f7265207468616e203132546f74616c20627579206665652063616e206e6f74206265206d6f7265207468616e20313254784c696d69743a20416c72656164792073657420746f20746869732076616c7565536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725472616e736665722077696c6c206578636565642077616c6c6574206c696d697445524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737357616c6c65744c696d69743a20416c72656164792073657420746f20746869732076616c7565546f74616c2064656661756c74206665652063616e206e6f74206265206d6f7265207468616e203235a264697066735822122082f59994d6d016e8367042316424bec246b677c241672bccf688f3c7d79fd05664736f6c634300060c0033

Deployed Bytecode Sourcemap

8020:13786:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21307:122;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21307:122:0;-1:-1:-1;;;;;21307:122:0;;:::i;:::-;;;;;;;;;;;;;;;;;;4668:100;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5569:169;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;5569:169:0;;;;;;;;:::i;13494:143::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13494:143:0;;:::i;:::-;;8103:115;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;8103:115:0;;;;;;;;;;;;;;4982:108;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;13645:99;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13645:99:0;-1:-1:-1;;;;;13645:99:0;;:::i;8608:33::-;;;;;;;;;;;;;:::i;5746:355::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;5746:355:0;;;;;;;;;;;;;;;;;:::i;21066:111::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21066:111:0;-1:-1:-1;;;;;21066:111:0;;:::i;8474:36::-;;;;;;;;;;;;;:::i;11165:230::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;11165:230:0;;;;;;;;;;:::i;9129:22::-;;;;;;;;;;;;;:::i;4884:92::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9029:28;;;;;;;;;;;;;:::i;9484:51::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9484:51:0;-1:-1:-1;;;;;9484:51:0;;:::i;12779:109::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12779:109:0;;;;:::i;12509:262::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12509:262:0;;;;;;;:::i;13362:124::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13362:124:0;;:::i;13000:167::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13000:167:0;;:::i;8897:39::-;;;;;;;;;;;;;:::i;12165:336::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12165:336:0;;;;;;;:::i;8648:27::-;;;;;;;;;;;;;:::i;14670:172::-;;;;;;;;;;;;;:::i;5098:127::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5098:127:0;-1:-1:-1;;;;;5098:127:0;;:::i;2038:148::-;;;;;;;;;;;;;:::i;13175:179::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13175:179:0;;:::i;13752:105::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13752:105:0;-1:-1:-1;;;;;13752:105:0;;:::i;8566:33::-;;;;;;;;;;;;;:::i;9901:43::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9901:43:0;-1:-1:-1;;;;;9901:43:0;;:::i;8828:35::-;;;;;;;;;;;;;:::i;21437:323::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;21437:323:0;;;;;;;;;;:::i;8759:56::-;;;;;;;;;;;;;:::i;1824:79::-;;;;;;;;;;;;;:::i;8388:28::-;;;;;;;;;;;;;:::i;4774:104::-;;;;;;;;;;;;;:::i;13965:333::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13965:333:0;-1:-1:-1;;;;;13965:333:0;;:::i;12895:97::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12895:97:0;;;;:::i;8519:40::-;;;;;;;;;;;;;:::i;5231:175::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;5231:175:0;;;;;;;;:::i;8684:45::-;;;;;;;;;;;;;:::i;9982:41::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9982:41:0;-1:-1:-1;;;;;9982:41:0;;:::i;9689:58::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9689:58:0;-1:-1:-1;;;;;9689:58:0;;:::i;9588:54::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9588:54:0;-1:-1:-1;;;;;9588:54:0;;:::i;10939:218::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;10939:218:0;;;;;;;;;;:::i;14497:161::-;;;;;;;;;;;;;:::i;11657:222::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;11657:222:0;;;;;;;;;;:::i;9066:26::-;;;;;;;;;;;;;:::i;14856:342::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14856:342:0;;:::i;5412:151::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;5412:151:0;;;;;;;;;;:::i;11403:246::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;11403:246:0;;;;;;;;;;:::i;8425:42::-;;;;;;;;;;;;;:::i;9407:::-;;;;;;;;;;;;;:::i;8312:27::-;;;;;;;;;;;;;:::i;13865:92::-;;;;;;;;;;;;;:::i;14306:183::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14306:183:0;-1:-1:-1;;;;;14306:183:0;;:::i;21185:114::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21185:114:0;;:::i;8227:34::-;;;;;;;;;;;;;:::i;10096:45::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10096:45:0;-1:-1:-1;;;;;10096:45:0;;:::i;8268:35::-;;;;;;;;;;;;;:::i;11887:270::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11887:270:0;;;;;;;:::i;9811:46::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9811:46:0;-1:-1:-1;;;;;9811:46:0;;:::i;21307:122::-;-1:-1:-1;;;;;21399:22:0;21375:4;21399:22;;;:12;:22;;;;;;;;;21307:122::o;4668:100::-;4755:5;4748:12;;;;;;;;-1:-1:-1;;4748:12:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4722:13;;4748:12;;4755:5;;4748:12;;4755:5;4748:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4668:100;:::o;5569:169::-;5652:4;5669:39;5678:12;:10;:12::i;:::-;5692:7;5701:6;5669:8;:39::i;:::-;-1:-1:-1;5726:4:0;5569:169;;;;;:::o;13494:143::-;1961:12;:10;:12::i;:::-;1951:6;;-1:-1:-1;;;;;1951:6:0;;;:22;;;1943:67;;;;;-1:-1:-1;;;1943:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1943:67:0;;;;;;;;;;;;;;;13592:1:::1;13578:11;:15;13570:24;;;::::0;::::1;;13605:10;:24:::0;13494:143::o;8103:115::-;8175:42;8103:115;:::o;4982:108::-;5070:12;;4982:108;:::o;13645:99::-;1961:12;:10;:12::i;:::-;1951:6;;-1:-1:-1;;;;;1951:6:0;;;:22;;;1943:67;;;;;-1:-1:-1;;;1943:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1943:67:0;;;;;;;;;;;;;;;13721:3:::1;:15:::0;;-1:-1:-1;;;;;;13721:15:0::1;-1:-1:-1::0;;;;;13721:15:0;;;::::1;::::0;;;::::1;::::0;;13645:99::o;8608:33::-;;;;:::o;5746:355::-;5886:4;5903:36;5913:6;5921:9;5932:6;5903:9;:36::i;:::-;5950:121;5959:6;5967:12;:10;:12::i;:::-;5981:89;6019:6;5981:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5981:19:0;;;;;;:11;:19;;;;;;6001:12;:10;:12::i;:::-;-1:-1:-1;;;;;5981:33:0;;;;;;;;;;;;-1:-1:-1;5981:33:0;;;:89;:37;:89::i;:::-;5950:8;:121::i;:::-;-1:-1:-1;6089:4:0;5746:355;;;;;:::o;21066:111::-;1961:12;:10;:12::i;:::-;1951:6;;-1:-1:-1;;;;;1951:6:0;;;:22;;;1943:67;;;;;-1:-1:-1;;;1943:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1943:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;21140:22:0::1;;::::0;;;:12:::1;:22;::::0;;;;:29;;-1:-1:-1;;21140:29:0::1;21165:4;21140:29;::::0;;21066:111::o;8474:36::-;;;;:::o;11165:230::-;1961:12;:10;:12::i;:::-;1951:6;;-1:-1:-1;;;;;1951:6:0;;;:22;;;1943:67;;;;;-1:-1:-1;;;1943:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1943:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;11260:30:0;::::1;;::::0;;;:21:::1;:30;::::0;;;;;::::1;;:39;;::::0;::::1;;;;11252:86;;;;-1:-1:-1::0;;;11252:86:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;11349:30:0;;;::::1;;::::0;;;:21:::1;:30;::::0;;;;:38;;-1:-1:-1;;11349:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;11165:230::o;9129:22::-;;;;;;;;;:::o;4884:92::-;4967:1;4884:92;:::o;9029:28::-;;;-1:-1:-1;;;;;9029:28:0;;:::o;9484:51::-;;;;;;;;;;;;;;;:::o;12779:109::-;1961:12;:10;:12::i;:::-;1951:6;;-1:-1:-1;;;;;1951:6:0;;;:22;;;1943:67;;;;;-1:-1:-1;;;1943:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1943:67:0;;;;;;;;;;;;;;;12854:15:::1;:26:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;12854:26:0;;::::1;::::0;;;::::1;::::0;;12779:109::o;12509:262::-;1961:12;:10;:12::i;:::-;1951:6;;-1:-1:-1;;;;;1951:6:0;;;:22;;;1943:67;;;;;-1:-1:-1;;;1943:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1943:67:0;;;;;;;;;;;;;;;12637:2:::1;12610:23;:12:::0;12627:5;12610:16:::1;:23::i;:::-;:29;;12602:83;;;;-1:-1:-1::0;;;12602:83:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12696:20;:35:::0;;;;12742:13:::1;:21:::0;12509:262::o;13362:124::-;1961:12;:10;:12::i;:::-;1951:6;;-1:-1:-1;;;;;1951:6:0;;;:22;;;1943:67;;;;;-1:-1:-1;;;1943:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1943:67:0;;;;;;;;;;;;;;;13472:5:::1;13456:22;13441:12;:37:::0;13362:124::o;13000:167::-;1961:12;:10;:12::i;:::-;1951:6;;-1:-1:-1;;;;;1951:6:0;;;:22;;;1943:67;;;;;-1:-1:-1;;;1943:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1943:67:0;;;;;;;;;;;;;;;13092:1:::1;13081:8;:12;13073:44;;;::::0;;-1:-1:-1;;;13073:44:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;13073:44:0;;;;;;;;;;;;;::::1;;13153:5;13141:18;13128:10;:31:::0;13000:167::o;8897:39::-;;;;:::o;12165:336::-;1961:12;:10;:12::i;:::-;1951:6;;-1:-1:-1;;;;;1951:6:0;;;:22;;;1943:67;;;;;-1:-1:-1;;;1943:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1943:67:0;;;;;;;;;;;;;;;12289:2:::1;12262:23;:12:::0;12279:5;12262:16:::1;:23::i;:::-;:29;;12254:83;;;;-1:-1:-1::0;;;12254:83:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12348:16;:31:::0;;;12390:9:::1;:17:::0;;;12420:23:::1;:38:::0;;;;12469:16:::1;:24:::0;12165:336::o;8648:27::-;;;;:::o;14670:172::-;1961:12;:10;:12::i;:::-;1951:6;;-1:-1:-1;;;;;1951:6:0;;;:22;;;1943:67;;;;;-1:-1:-1;;;1943:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1943:67:0;;;;;;;;;;;;;;;14800:3:::1;::::0;14784:50:::1;::::0;14752:21:::1;::::0;-1:-1:-1;;;;;14800:3:0::1;::::0;14784:50;::::1;;;::::0;14752:21;;14723:26:::1;14784:50:::0;14723:26;14784:50;14752:21;14800:3;14784:50;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;2021:1;14670:172::o:0;5098:127::-;-1:-1:-1;;;;;5199:18:0;5172:7;5199:18;;;;;;;;;;;;5098:127::o;2038:148::-;1961:12;:10;:12::i;:::-;1951:6;;-1:-1:-1;;;;;1951:6:0;;;:22;;;1943:67;;;;;-1:-1:-1;;;1943:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1943:67:0;;;;;;;;;;;;;;;2129:6:::1;::::0;2108:40:::1;::::0;2145:1:::1;::::0;-1:-1:-1;;;;;2129:6:0::1;::::0;2108:40:::1;::::0;2145:1;;2108:40:::1;2159:6;:19:::0;;-1:-1:-1;;;;;;2159:19:0::1;::::0;;2038:148::o;13175:179::-;1961:12;:10;:12::i;:::-;1951:6;;-1:-1:-1;;;;;1951:6:0;;;:22;;;1943:67;;;;;-1:-1:-1;;;1943:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1943:67:0;;;;;;;;;;;;;;;13271:1:::1;13260:8;:12;13252:48;;;::::0;;-1:-1:-1;;;13252:48:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;13340:5;13328:18;13311:14;:35:::0;13175:179::o;13752:105::-;1961:12;:10;:12::i;:::-;1951:6;;-1:-1:-1;;;;;1951:6:0;;;:22;;;1943:67;;;;;-1:-1:-1;;;1943:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1943:67:0;;;;;;;;;;;;;;;13828:9:::1;:21:::0;;-1:-1:-1;;;;;;13828:21:0::1;-1:-1:-1::0;;;;;13828:21:0;;;::::1;::::0;;;::::1;::::0;;13752:105::o;8566:33::-;;;;:::o;9901:43::-;;;;;;;;;;;;;:::o;8828:35::-;;;;:::o;21437:323::-;21524:10;1961:12;:10;:12::i;:::-;1951:6;;-1:-1:-1;;;;;1951:6:0;;;:22;;;1943:67;;;;;-1:-1:-1;;;1943:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1943:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;21554:23:0;::::1;21572:4;21554:23;;21546:64;;;::::0;;-1:-1:-1;;;21546:64:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;21621:24;21655:6;-1:-1:-1::0;;;;;21648:24:0::1;;21681:4;21648:39;;;;;;;;;;;;;-1:-1:-1::0;;;;;21648:39:0::1;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;21648:39:0;21706:46:::1;::::0;;-1:-1:-1;;;21706:46:0;;-1:-1:-1;;;;;21706:46:0;;::::1;;::::0;::::1;::::0;;;;;;;;;21648:39;;-1:-1:-1;21706:23:0;;::::1;::::0;::::1;::::0;:46;;;;;21648:39:::1;::::0;21706:46;;;;;;;;-1:-1:-1;21706:23:0;:46;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;21706:46:0;;21437:323;-1:-1:-1;;;;21437:323:0:o;8759:56::-;;;;:::o;1824:79::-;1889:6;;-1:-1:-1;;;;;1889:6:0;1824:79;:::o;8388:28::-;;;;:::o;4774:104::-;4863:7;4856:14;;;;;;;;-1:-1:-1;;4856:14:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4830:13;;4856:14;;4863:7;;4856:14;;4863:7;4856:14;;;;;;;;;;;;;;;;;;;;;;;;13965:333;1961:12;:10;:12::i;:::-;1951:6;;-1:-1:-1;;;;;1951:6:0;;;:22;;;1943:67;;;;;-1:-1:-1;;;1943:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1943:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;14045:22:0;::::1;;::::0;;;:13:::1;:22:::0;;;;;;::::1;;14044:23;14036:66;;;::::0;;-1:-1:-1;;;14036:66:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;14121:16;::::0;;;::::1;;;14113:69;;;;-1:-1:-1::0;;;14113:69:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14212:13;::::0;-1:-1:-1;;;;;14201:24:0;;::::1;14212:13:::0;::::1;14201:24;;14193:58;;;::::0;;-1:-1:-1;;;14193:58:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;14193:58:0;;;;;;;;;;;;;::::1;;14262:28;14276:7;14285:4;14262:13;:28::i;:::-;13965:333:::0;:::o;12895:97::-;1961:12;:10;:12::i;:::-;1951:6;;-1:-1:-1;;;;;1951:6:0;;;:22;;;1943:67;;;;;-1:-1:-1;;;1943:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1943:67:0;;;;;;;;;;;;;;;12964:9:::1;:20:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;12964:20:0;;::::1;::::0;;;::::1;::::0;;12895:97::o;8519:40::-;;;;:::o;5231:175::-;5317:4;5334:42;5344:12;:10;:12::i;:::-;5358:9;5369:6;5334:9;:42::i;8684:45::-;;;;:::o;9982:41::-;;;;;;;;;;;;;:::o;9689:58::-;;;;;;;;;;;;;;;:::o;9588:54::-;;;;;;;;;;;;;;;:::o;10939:218::-;1961:12;:10;:12::i;:::-;1951:6;;-1:-1:-1;;;;;1951:6:0;;;:22;;;1943:67;;;;;-1:-1:-1;;;1943:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1943:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;11031:27:0;::::1;;::::0;;;:18:::1;:27;::::0;;;;;::::1;;:36;;::::0;::::1;;;;11023:80;;;::::0;;-1:-1:-1;;;11023:80:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;;;;;11114:27:0;;;::::1;;::::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;11114:35:0::1;::::0;::::1;;::::0;;;::::1;::::0;;10939:218::o;14497:161::-;1961:12;:10;:12::i;:::-;1951:6;;-1:-1:-1;;;;;1951:6:0;;;:22;;;1943:67;;;;;-1:-1:-1;;;1943:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1943:67:0;;;;;;;;;;;;;;;14600:12:::1;::::0;14579:18:::1;::::0;:33:::1;14623:27;14579:33:::0;14623:8:::1;:27::i;11657:222::-:0;1961:12;:10;:12::i;:::-;1951:6;;-1:-1:-1;;;;;1951:6:0;;;:22;;;1943:67;;;;;-1:-1:-1;;;1943:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1943:67:0;;;;;;;;;;;;;;;11746:31:::1;11762:7;11771:5;11746:15;:31::i;:::-;11788:34;11807:7;11816:5;11788:18;:34::i;:::-;11833:38;11856:7;11865:5;11833:22;:38::i;9066:26::-:0;;;;:::o;14856:342::-;1961:12;:10;:12::i;:::-;1951:6;;-1:-1:-1;;;;;1951:6:0;;;:22;;;1943:67;;;;;-1:-1:-1;;;1943:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1943:67:0;;;;;;;;;;;;;;;14939:10:::1;::::0;::::1;::::0;::::1;;;14938:11;14930:52;;;::::0;;-1:-1:-1;;;14930:52:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;14993:10;:24:::0;;;15028:10:::1;:17:::0;;-1:-1:-1;;15028:17:0::1;;;::::0;;15070:12:::1;15056:11;:26:::0;15106:7:::1;::::0;:27:::1;::::0;15127:5:::1;::::0;15106:16:::1;::::0;15118:3:::1;15106:11;:16::i;:::-;:20:::0;::::1;:27::i;:::-;15093:10;:40:::0;15163:7:::1;::::0;:27:::1;::::0;15184:5:::1;::::0;15163:16:::1;::::0;15175:3:::1;15163:11;:16::i;:27::-;15146:14;:44:::0;-1:-1:-1;14856:342:0:o;5412:151::-;-1:-1:-1;;;;;5528:18:0;;;5501:7;5528:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;5412:151::o;11403:246::-;1961:12;:10;:12::i;:::-;1951:6;;-1:-1:-1;;;;;1951:6:0;;;:22;;;1943:67;;;;;-1:-1:-1;;;1943:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1943:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;11502:34:0;::::1;;::::0;;;:25:::1;:34;::::0;;;;;::::1;;:43;;::::0;::::1;;;;11494:94;;;;-1:-1:-1::0;;;11494:94:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;11599:34:0;;;::::1;;::::0;;;:25:::1;:34;::::0;;;;:42;;-1:-1:-1;;11599:42:0::1;::::0;::::1;;::::0;;;::::1;::::0;;11403:246::o;8425:42::-;;;;:::o;9407:::-;;;;:::o;8312:27::-;;;;:::o;13865:92::-;1961:12;:10;:12::i;:::-;1951:6;;-1:-1:-1;;;;;1951:6:0;;;:22;;;1943:67;;;;;-1:-1:-1;;;1943:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1943:67:0;;;;;;;;;;;;;;;13925:16:::1;:24:::0;;-1:-1:-1;;13925:24:0::1;::::0;;13865:92::o;14306:183::-;1961:12;:10;:12::i;:::-;1951:6;;-1:-1:-1;;;;;1951:6:0;;;:22;;;1943:67;;;;;-1:-1:-1;;;1943:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1943:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;14388:22:0;::::1;;::::0;;;:13:::1;:22:::0;;;;;;::::1;;14380:61;;;::::0;;-1:-1:-1;;;14380:61:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;14452:29;14466:7;14475:5;14452:13;:29::i;21185:114::-:0;1961:12;:10;:12::i;:::-;1951:6;;-1:-1:-1;;;;;1951:6:0;;;:22;;;1943:67;;;;;-1:-1:-1;;;1943:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1943:67:0;;;;;;;;;;;;;;;21262:14:::1;:29:::0;21185:114::o;8227:34::-;;;;:::o;10096:45::-;;;;;;;;;;;;;;;:::o;8268:35::-;;;;:::o;11887:270::-;1961:12;:10;:12::i;:::-;1951:6;;-1:-1:-1;;;;;1951:6:0;;;:22;;;1943:67;;;;;-1:-1:-1;;;1943:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1943:67:0;;;;;;;;;;;;;;;12003:2:::1;11976:23;:12:::0;11993:5;11976:16:::1;:23::i;:::-;:29;;11968:79;;;;-1:-1:-1::0;;;11968:79:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12058:15;:30:::0;;;;12099:15:::1;:23:::0;;;12133:8:::1;:16:::0;11887:270::o;9811:46::-;;;;;;;;;;;;;;;:::o;2749:246::-;2807:7;2831:6;2827:47;;-1:-1:-1;2861:1:0;2854:8;;2827:47;2896:5;;;2900:1;2896;:5;:1;2920:5;;;;;:10;2912:56;;;;-1:-1:-1;;;2912:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2986:1;2749:246;-1:-1:-1;;;2749:246:0:o;3003:132::-;3061:7;3088:39;3092:1;3095;3088:39;;;;;;;;;;;;;;;;;:3;:39::i;2220:179::-;2278:7;2310:5;;;2334:6;;;;2326:46;;;;;-1:-1:-1;;;2326:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;1112:98;1192:10;1112:98;:::o;7500:380::-;-1:-1:-1;;;;;7636:19:0;;7628:68;;;;-1:-1:-1;;;7628:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7715:21:0;;7707:68;;;;-1:-1:-1;;;7707:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7788:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7840:32;;;;;;;;;;;;;;;;;7500:380;;;:::o;15206:4103::-;-1:-1:-1;;;;;15304:18:0;;15296:61;;;;;-1:-1:-1;;;15296:61:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15376:16:0;;15368:57;;;;;-1:-1:-1;;;15368:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;15454:10;;15444:6;:20;;:51;;;-1:-1:-1;;;;;;15468:27:0;;;;;;:21;:27;;;;;;;;15444:51;:80;;;-1:-1:-1;;;;;;15499:25:0;;;;;;:21;:25;;;;;;;;15444:80;15436:112;;;;;-1:-1:-1;;;15436:112:0;;;;;;;;;;;;-1:-1:-1;;;15436:112:0;;;;;;;;;;;;;;;15596:14;;15567:25;15585:6;15567:13;15577:2;15567:9;:13::i;:::-;:17;;:25::i;:::-;:43;;:76;;;-1:-1:-1;;;;;;15614:29:0;;;;;;:25;:29;;;;;;;;15567:76;15559:122;;;;-1:-1:-1;;;15559:122:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15700:10;;;;;;;;:38;;-1:-1:-1;;;;;;15714:24:0;;;;;;:18;:24;;;;;;;;15700:38;:64;;;-1:-1:-1;;;;;;15742:22:0;;;;;;:18;:22;;;;;;;;15700:64;15692:95;;;;;-1:-1:-1;;;15692:95:0;;;;;;;;;;;;-1:-1:-1;;;15692:95:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;15807:19:0;;;;;;:13;:19;;;;;;;;15806:20;15798:54;;;;;-1:-1:-1;;;15798:54:0;;;;;;;;;;;;-1:-1:-1;;;15798:54:0;;;;;;;;;;;;;;;15868:11;15865:92;;15896:28;15912:4;15918:2;15922:1;15896:15;:28::i;:::-;15939:7;;15865:92;16018:12;;15997:18;;16077:12;;16111:15;;16100:8;:26;16162:13;;15997:33;;;;;16056;;;;-1:-1:-1;;;;;16154:21:0;;;16162:13;;16154:21;;;;:45;;;16192:7;16154:45;:71;;;;-1:-1:-1;16217:8:0;;;;16216:9;16154:71;16137:481;;;16252:8;:15;;-1:-1:-1;;16252:15:0;16263:4;16252:15;;;16282:27;16291:17;16282:8;:27::i;:::-;16324:8;:16;;-1:-1:-1;;16324:16:0;;;16137:481;;;16383:13;;-1:-1:-1;;;;;16375:21:0;;;16383:13;;16375:21;:57;;;;-1:-1:-1;16419:13:0;;-1:-1:-1;;;;;16413:19:0;;;16419:13;;16413:19;;16375:57;:113;;;;;16478:10;;16464:11;;:24;16449:12;:39;16375:113;:153;;;;-1:-1:-1;;;;;;16506:22:0;;;;;;:18;:22;;;;;;;;16505:23;16375:153;16358:260;;;16566:2;16555:8;:13;16583:23;16597:2;16601:4;16583:13;:23::i;:::-;16646:8;;-1:-1:-1;;;;;16670:24:0;;16630:12;16670:24;;;:18;:24;;;;;;16646:8;;;;16645:9;;16670:24;;:50;;-1:-1:-1;;;;;;16698:22:0;;;;;;:18;:22;;;;;;;;16670:50;16667:97;;;-1:-1:-1;16747:5:0;16667:97;16787:13;;-1:-1:-1;;;;;16779:21:0;;;16787:13;;16779:21;:42;;;;-1:-1:-1;16804:17:0;;;;;;;16779:42;16776:457;;;16862:16;;;16876:1;16862:16;;;16838:21;16862:16;;;;;16838:21;16862:16;;;;;;;;;;-1:-1:-1;16862:16:0;16838:40;;8175:42;-1:-1:-1;;;;;16903:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16903:22:0;16893:7;;:4;;16898:1;;16893:7;;;;;;;;;:32;-1:-1:-1;;;;;16893:32:0;;;-1:-1:-1;;;;;16893:32:0;;;;;16958:4;16940;16945:1;16940:7;;;;;;;;-1:-1:-1;;;;;16940:23:0;;;:7;;;;;;;;;;:23;16994:42;;;-1:-1:-1;;;16994:42:0;;;;;;;;;;;;;;;;;;;;;;16978:13;;8175:42;;16994:28;;17023:6;;17031:4;;16994:42;;;;;;;;;;;;;;;16978:13;16994:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;16994:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16994:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17037:1;16994:45;;;;;;;;;;;;;;16978:61;;17149:14;;17137:8;:26;17134:88;;-1:-1:-1;;;;;17183:16:0;;;;;;:12;:16;;;;;:23;;-1:-1:-1;;17183:23:0;17202:4;17183:23;;;17134:88;16776:457;;;17248:7;17245:2011;;;17333:13;;17272:12;;-1:-1:-1;;;;;17327:19:0;;;17333:13;;17327:19;17323:1773;;;17370:9;;;;;;;17367:651;;;-1:-1:-1;;;;;17407:13:0;;;;;;:7;:13;;;;;;:18;;;;:93;;-1:-1:-1;;;;;;17455:13:0;;;;;;:7;:13;;;;;;17484:15;17472:7;17455:25;;;:44;;17407:93;17403:454;;;17549:20;;17530:16;:39;17608:13;;17596:9;:25;-1:-1:-1;;;;;17648:13:0;;-1:-1:-1;17648:13:0;;;:7;:13;;;;;17664:15;17648:31;;17403:454;;;17755:23;;17736:16;:42;17817:16;;17805:9;:28;17403:454;17367:651;;;17924:23;;17905:16;:42;17982:16;;17970:9;:28;17367:651;18052:21;18076:31;18097:9;;18076:16;;:20;;:31;;;;:::i;:::-;18052:55;-1:-1:-1;18133:34:0;18163:3;18133:25;:6;18052:55;18133:10;:25::i;:34::-;18126:41;;18207:69;18230:45;18261:13;18230:26;18239:16;;18230:4;:8;;:26;;;;:::i;:45::-;18207:18;;;:22;:69::i;:::-;18186:18;:90;18336:9;;18310:56;;18327:38;;18351:13;;18327:19;;:4;;:8;:19::i;:38::-;18310:12;;;:16;:56::i;:::-;18295:12;:71;-1:-1:-1;17323:1773:0;;;18465:15;;;;;;;18462:169;;;-1:-1:-1;;;;;18512:12:0;;;;;;:8;:12;;;;;;18527:15;-1:-1:-1;18504:39:0;;;;;;-1:-1:-1;;;;;18566:12:0;;;;;;:8;:12;;;;;18600:10;18581:15;:30;18566:45;;18462:169;18653:9;;;;;;;:29;;;;-1:-1:-1;;;;;;18666:11:0;;;;;;:7;:11;;;;;;:16;18653:29;18649:107;;;-1:-1:-1;;;;;18707:11:0;;;;;;:7;:11;;;;;18721:15;18707:29;;18649:107;18774:20;18797:29;18817:8;;18797:15;;:19;;:29;;;;:::i;:::-;18774:52;-1:-1:-1;18852:33:0;18881:3;18852:24;:6;18774:52;18852:10;:24::i;:33::-;18845:40;;18925:67;18948:43;18978:12;18948:25;18957:15;;18948:4;:8;;:25;;;;:::i;18925:67::-;18904:18;:88;19052:8;;19026:54;;19043:36;;19066:12;;19043:18;;:4;;:8;:18::i;19026:54::-;19011:12;:69;-1:-1:-1;17323:1773:0;19115:8;;19112:133;;19143:42;19159:4;19173;19180;19143:15;:42::i;:::-;19213:16;:6;19224:4;19213:10;:16::i;:::-;19204:25;;19112:133;17245:2011;;19268:33;19284:4;19290:2;19294:6;19268:15;:33::i;:::-;15206:4103;;;;;;;:::o;2551:190::-;2637:7;2673:12;2665:6;;;;2657:29;;;;-1:-1:-1;;;2657:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2709:5:0;;;2551:190::o;20948:110::-;-1:-1:-1;;;;;21020:22:0;;;;;;;;:13;:22;;;;;:30;;-1:-1:-1;;21020:30:0;;;;;;;;;;20948:110::o;19317:912::-;19381:14;19398:12;;19381:29;;19472:23;19498:60;19556:1;19498:53;19533:17;19498:30;19509:18;;19498:6;:10;;:30;;;;:::i;:60::-;19472:86;-1:-1:-1;19569:17:0;19589:48;19472:86;19589:27;:6;19472:86;19589:10;:27::i;:::-;:31;;:48::i;:::-;19569:68;-1:-1:-1;19648:26:0;19677:27;:6;19688:15;19677:10;:27::i;:::-;19648:56;;19717:37;19735:18;19717:17;:37::i;:::-;19788:21;19767:18;19840:49;19870:18;19840:25;19788:21;19855:9;19840:14;:25::i;:49::-;19820:69;-1:-1:-1;19900:23:0;19926:25;:10;19820:69;19926:14;:25::i;:::-;19900:51;-1:-1:-1;19985:46:0;20008:22;:15;20028:1;20008:19;:22::i;:::-;19985:18;;;:22;:46::i;:::-;19964:18;:67;20057:52;20074:34;20085:22;:15;20105:1;20085:19;:22::i;:::-;20074:6;;:10;:34::i;:::-;20057:12;;;:16;:52::i;:::-;20042:12;:67;20138:3;;20122:41;;-1:-1:-1;;;;;20138:3:0;;;;20122:41;;;;;20153:9;;20138:3;20122:41;20138:3;20122:41;20153:9;20138:3;20122:41;;;;;;;;;;;;;;;;;;;;;20174:47;20188:15;20205;20174:13;:47::i;:::-;19317:912;;;;;;;;:::o;3143:189::-;3229:7;3264:12;3257:5;3249:28;;;;-1:-1:-1;;;3249:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3288:9;3304:1;3300;:5;;;;;;;3143:189;-1:-1:-1;;;;;3143:189:0:o;6109:573::-;-1:-1:-1;;;;;6249:20:0;;6241:70;;;;-1:-1:-1;;;6241:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6330:23:0;;6322:71;;;;-1:-1:-1;;;6322:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6406:47;6427:6;6435:9;6446:6;6406:20;:47::i;:::-;6486:71;6508:6;6486:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6486:17:0;;:9;:17;;;;;;;;;;;;:71;:21;:71::i;:::-;-1:-1:-1;;;;;6466:17:0;;;:9;:17;;;;;;;;;;;:91;;;;6591:20;;;;;;;:32;;6616:6;6591:24;:32::i;:::-;-1:-1:-1;;;;;6568:20:0;;;:9;:20;;;;;;;;;;;;:55;;;;6639:35;;;;;;;6568:20;;6639:35;;;;;;;;;;;;;6109:573;;;:::o;2407:136::-;2465:7;2492:43;2496:1;2499;2492:43;;;;;;;;;;;;;;;;;:3;:43::i;20537:403::-;20630:16;;;20644:1;20630:16;;;20606:21;20630:16;;;;;20606:21;20630:16;;;;;;;;;;-1:-1:-1;20630:16:0;20606:40;;20675:4;20657;20662:1;20657:7;;;;;;;;;;;;;:23;-1:-1:-1;;;;;20657:23:0;;;-1:-1:-1;;;;;20657:23:0;;;;;8175:42;-1:-1:-1;;;;;20701:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20701:22:0;20691:7;;:4;;20696:1;;20691:7;;;;;;;;;;;:32;-1:-1:-1;;;;;20691:32:0;;;-1:-1:-1;;;;;20691:32:0;;;;;8175:42;-1:-1:-1;;;;;20736:66:0;;20817:11;20843:1;20859:4;20886;20906:15;20736:196;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20736:196:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20237:292;20471:9;;20321:200;;;-1:-1:-1;;;20321:200:0;;20393:4;20321:200;;;;;;;;;;-1:-1:-1;20321:200:0;;;;;;;;;;-1:-1:-1;;;;;20471:9:0;;;20321:200;;;;20495:15;20321:200;;;;;8175:42;;20321:31;;20360:9;;20321:200;;;;;;;;;;;;;;;20360:9;8175:42;20321:200;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;20237:292:0:o

Swarm Source

ipfs://82f59994d6d016e8367042316424bec246b677c241672bccf688f3c7d79fd056

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
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.