ETH Price: $3,634.23 (-0.42%)
 

Overview

Max Total Supply

1,000,000,000,000 LOCX

Holders

100

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
68,081,631.767640812 LOCX

Value
$0.00
0x1e1d02010e884c98e16d92f61bbdbb5be920136f
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
LOCXER

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-12-23
*/

/**
LOCXER
Tax 5/5
Telegram : https://t.me/locxerofficial
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.7;

abstract contract Context {

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

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

interface IERC20 {

    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

library SafeMath {

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

library Address {

    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly { codehash := extcodehash(account) }
        return (codehash != accountHash && codehash != 0x0);
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
        if (success) {
            return returndata;
        } else {
            
            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    uint256 private _lockTime;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return _owner;
    }   
    
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    
    function waiveOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0xdead));
        _owner = address(0xdead);
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }

    function getUnlockTime() public view returns (uint256) {
        return _lockTime;
    }
    
    function getTime() public view returns (uint256) {
        return block.timestamp;
    }

    function lock(uint256 time) public virtual onlyOwner {
        _previousOwner = _owner;
        _owner = address(0);
        _lockTime = block.timestamp + time;
        emit OwnershipTransferred(_owner, address(0));
    }
    
    function unlock() public virtual {
        require(_previousOwner == msg.sender, "You don't have permission to unlock");
        require(block.timestamp > _lockTime , "Contract is locked until 7 days");
        emit OwnershipTransferred(_owner, _previousOwner);
        _owner = _previousOwner;
    }
}

interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);

    function createPair(address tokenA, address tokenB) external returns (address pair);

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
    
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}
contract LOCXER is Context, IERC20, Ownable {
    
    using SafeMath for uint256;
    using Address for address;
    
    string private _name = "LOCXER";
    string private _symbol = "LOCX";
    uint8 private _decimals = 9;

    uint public launchedBlock;
    uint public killblock = 0;
    bool public isLaunch = true;
    address payable public marketingWalletAddress = payable(0x7E07FC508da0e46FdFb1a78d46FEDf7F30938E0E); // Marketing Address
    address payable public teamWalletAddress = payable(0xfc946BA6E3f357Ab8F8682AaD4F31d9935c53c10); // Team Address
    address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD;
    
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    
    mapping (address => bool) public isExcludedFromFee;
    mapping (address => bool) public isWalletLimitExempt;
    mapping (address => bool) public isTxLimitExempt;
    mapping (address => bool) public isMarketPair;
    mapping (address => bool) private _isbclisted;

    uint256 public _buyLiquidityFee = 10;
    uint256 public _buyMarketingFee = 30;
    uint256 public _buyTeamFee = 20;
    
    uint256 public _sellLiquidityFee = 0;
    uint256 public _sellMarketingFee = 4;
    uint256 public _sellTeamFee = 1;
    
    uint256 public _sellReserveFee = 1;

    uint256 public _liquidityShare = 5;
    uint256 public _marketingShare = 10;
    uint256 public _teamShare = 10;

    uint256 public _totalTaxIfBuying = 60;
    uint256 public _totalTaxIfSelling = 5;
    uint256 public _totalDistributionShares = 25;

    uint256 private _totalSupply = 1000000000000  * 10**_decimals;
    uint256 public _maxTxAmount = 20000000000 * 10**_decimals; 
    uint256 public _walletMax = 20000000000 * 10**_decimals;
    uint256 private minimumTokensBeforeSwap = 1000000000 * 5 **_decimals; 

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapPair;
    
    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    bool public swapAndLiquifyByLimitOnly = false;
    bool public checkWalletLimit = true;

    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );
    
    event SwapETHForTokens(
        uint256 amountIn,
        address[] path
    );
    
    event SwapTokensForETH(
        uint256 amountIn,
        address[] path
    );
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }
    
    constructor () {
        
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); 

        uniswapPair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;
        _allowances[address(this)][address(uniswapV2Router)] = _totalSupply;

        isExcludedFromFee[owner()] = true;
        isExcludedFromFee[address(this)] = true;
        
        _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyTeamFee);
        _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellTeamFee);
        _totalDistributionShares = _liquidityShare.add(_marketingShare).add(_teamShare);

        isWalletLimitExempt[owner()] = true;
        isWalletLimitExempt[address(uniswapPair)] = true;
        isWalletLimitExempt[address(this)] = true;
        
        isTxLimitExempt[owner()] = true;
        isTxLimitExempt[address(this)] = true;

        isMarketPair[address(uniswapPair)] = true;

        _balances[_msgSender()] = _totalSupply;
        emit Transfer(address(0), _msgSender(), _totalSupply);
    }

    function name() public view returns (string memory) {
        return _name;
    }

    function symbol() public view returns (string memory) {
        return _symbol;
    }

    function decimals() public view returns (uint8) {
        return _decimals;
    }

    function totalSupply() public view override returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(address account) public view override returns (uint256) {
        return _balances[account];
    }

    function allowance(address owner, address spender) public view override returns (uint256) {
        return _allowances[owner][spender];
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

    function minimumTokensBeforeSwapAmount() public view returns (uint256) {
        return minimumTokensBeforeSwap;
    }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

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

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

    function Launch() public onlyOwner {
        isLaunch = true;
        launchedBlock = block.number;
    }

    function setMarketPairStatus(address account, bool newValue) public onlyOwner {
        isMarketPair[account] = newValue;
    }

    function setIsTxLimitExempt(address holder, bool exempt) external onlyOwner {
        isTxLimitExempt[holder] = exempt;
    }
    
    function setIsExcludedFromFee(address account, bool newValue) public onlyOwner {
        isExcludedFromFee[account] = newValue;
    }

    function setBuyTaxes(uint256 newLiquidityTax, uint256 newMarketingTax, uint256 newTeamTax) external onlyOwner() {
        _buyLiquidityFee = newLiquidityTax;
        _buyMarketingFee = newMarketingTax;
        _buyTeamFee = newTeamTax;

        _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyTeamFee);
    }

    function setSellTaxes(uint256 newLiquidityTax, uint256 newMarketingTax, uint256 newTeamTax) external onlyOwner() {
        _sellLiquidityFee = newLiquidityTax;
        _sellMarketingFee = newMarketingTax;
        _sellTeamFee = newTeamTax;

        _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellTeamFee);
    }
    
    function setDistributionSettings(uint256 newLiquidityShare, uint256 newMarketingShare, uint256 newTeamShare) external onlyOwner() {
        _liquidityShare = newLiquidityShare;
        _marketingShare = newMarketingShare;
        _teamShare = newTeamShare;

        _totalDistributionShares = _liquidityShare.add(_marketingShare).add(_teamShare);
    }
    
    function setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() {
        _maxTxAmount = maxTxAmount;
    }

    function enableDisableWalletLimit(bool newValue) external onlyOwner {
       checkWalletLimit = newValue;
    }

    function setIsWalletLimitExempt(address holder, bool exempt) external onlyOwner {
        isWalletLimitExempt[holder] = exempt;
    }

    function setWalletLimit(uint256 newLimit) external onlyOwner {
        _walletMax  = newLimit;
    }

    function setNumTokensBeforeSwap(uint256 newLimit) external onlyOwner() {
        minimumTokensBeforeSwap = newLimit;
    }

    function setMarketingWalletAddress(address newAddress) external onlyOwner() {
        marketingWalletAddress = payable(newAddress);
    }

    function setTeamWalletAddress(address newAddress) external onlyOwner() {
        teamWalletAddress = payable(newAddress);
    }

    function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }

    function setSwapAndLiquifyByLimitOnly(bool newValue) public onlyOwner {
        swapAndLiquifyByLimitOnly = newValue;
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(deadAddress));
    }

    function transferToAddressETH(address payable recipient, uint256 amount) private {
        recipient.transfer(amount);
    }
    
    function changeRouterVersion(address newRouterAddress) public onlyOwner returns(address newPairAddress) {

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(newRouterAddress); 

        newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory()).getPair(address(this), _uniswapV2Router.WETH());

        if(newPairAddress == address(0)) //Create If Doesnt exist
        {
            newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory())
                .createPair(address(this), _uniswapV2Router.WETH());
        }

        uniswapPair = newPairAddress; //Set new pair address
        uniswapV2Router = _uniswapV2Router; //Set new router address

        isWalletLimitExempt[address(uniswapPair)] = true;
        isMarketPair[address(uniswapPair)] = true;
    }

     //to recieve ETH from uniswapV2Router when swaping
    receive() external payable {}

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

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

    function isbcList(address account) public view returns(bool) {
        return _isbclisted[account];
    }

    function addBot(address recipient) internal {
        if (!_isbclisted[recipient]) _isbclisted[recipient] = true;
    }

    function setKillBlock(uint num) public onlyOwner {
        killblock = num;
    }

    function writebcList(address recipient, bool isbc) public onlyOwner {
        _isbclisted[recipient] = isbc;
    }

    function _transfer(address sender, address recipient, uint256 amount) private returns (bool) {

        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(!_isbclisted[recipient] && !_isbclisted[sender], "bclisted address");

        if(inSwapAndLiquify)
        { 
            return _basicTransfer(sender, recipient, amount); 
        }
        else
        {
            if (!isExcludedFromFee[sender] && !isExcludedFromFee[recipient] && _sellReserveFee > 0) {
                uint _sellReserveFeeAmount = amount.div(100).mul(_sellReserveFee);
                amount = amount.sub(_sellReserveFeeAmount);
            }

            if(!isTxLimitExempt[sender] && !isTxLimitExempt[recipient]) {
                require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
            }            
                            
            uint256 contractTokenBalance = balanceOf(address(this));
            bool overMinimumTokenBalance = contractTokenBalance >= minimumTokensBeforeSwap;
            
            if (overMinimumTokenBalance && !inSwapAndLiquify && !isMarketPair[sender] && swapAndLiquifyEnabled) 
            {
                if(swapAndLiquifyByLimitOnly)
                    contractTokenBalance = minimumTokensBeforeSwap;
                swapAndLiquify(contractTokenBalance);    
            }

            _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
            uint256 finalAmount;
            if (isExcludedFromFee[sender] || isExcludedFromFee[recipient]) {
                finalAmount = amount;
            } else {
                require(isLaunch, "Swap not open");
                if(sender == uniswapPair) {
                    if (block.number <= launchedBlock + killblock) {                  
                        addBot(recipient);
                    }
                }
                finalAmount = takeFee(sender, recipient, amount);
            }

            if(checkWalletLimit && !isWalletLimitExempt[recipient])
                require(balanceOf(recipient).add(finalAmount) <= _walletMax);

            _balances[recipient] = _balances[recipient].add(finalAmount);

            emit Transfer(sender, recipient, finalAmount);
            return true;
            
        }
    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function swapAndLiquify(uint256 tAmount) private lockTheSwap {
        
        uint256 tokensForLP = tAmount.mul(_liquidityShare).div(_totalDistributionShares).div(2);
        uint256 tokensForSwap = tAmount.sub(tokensForLP);

        swapTokensForEth(tokensForSwap);
        uint256 amountReceived = address(this).balance;

        uint256 totalBNBFee = _totalDistributionShares.sub(_liquidityShare.div(2));
        
        uint256 amountBNBLiquidity = amountReceived.mul(_liquidityShare).div(totalBNBFee).div(2);
        uint256 amountBNBTeam = amountReceived.mul(_teamShare).div(totalBNBFee);
        uint256 amountBNBMarketing = amountReceived.sub(amountBNBLiquidity).sub(amountBNBTeam);

        if(amountBNBMarketing > 0)
            transferToAddressETH(marketingWalletAddress, amountBNBMarketing);

        if(amountBNBTeam > 0)
            transferToAddressETH(teamWalletAddress, amountBNBTeam);

        if(amountBNBLiquidity > 0 && tokensForLP > 0)
            addLiquidity(tokensForLP, amountBNBLiquidity);
    }
    
    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this), // The contract
            block.timestamp
        );
        
        emit SwapTokensForETH(tokenAmount, path);
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // add the liquidity
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            deadAddress,
            block.timestamp
        );
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        
        uint256 feeAmount = 0;
        
        if(isMarketPair[sender]) {
            feeAmount = amount.mul(_totalTaxIfBuying).div(100);
        }
        else if(isMarketPair[recipient]) {
            feeAmount = amount.mul(_totalTaxIfSelling).div(100);
        }
        
        if(feeAmount > 0) {
            _balances[address(this)] = _balances[address(this)].add(feeAmount);
            emit Transfer(sender, address(this), feeAmount);
        }

        return amount.sub(feeAmount);
    }
    
}

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":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"Launch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyTeamFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellReserveFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellTeamFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_teamShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalDistributionShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newRouterAddress","type":"address"}],"name":"changeRouterVersion","outputs":[{"internalType":"address","name":"newPairAddress","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"checkWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"enableDisableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isLaunch","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isbcList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"killblock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTokensBeforeSwapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityTax","type":"uint256"},{"internalType":"uint256","name":"newMarketingTax","type":"uint256"},{"internalType":"uint256","name":"newTeamTax","type":"uint256"}],"name":"setBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityShare","type":"uint256"},{"internalType":"uint256","name":"newMarketingShare","type":"uint256"},{"internalType":"uint256","name":"newTeamShare","type":"uint256"}],"name":"setDistributionSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setIsExcludedFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsWalletLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"num","type":"uint256"}],"name":"setKillBlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setMarketPairStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setMarketingWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setNumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityTax","type":"uint256"},{"internalType":"uint256","name":"newMarketingTax","type":"uint256"},{"internalType":"uint256","name":"newTeamTax","type":"uint256"}],"name":"setSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setSwapAndLiquifyByLimitOnly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setTeamWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"waiveOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"bool","name":"isbc","type":"bool"}],"name":"writebcList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60e0604052600660a0819052652627a1ac22a960d11b60c0908152620000299160039190620006ad565b50604080518082019091526004808252630989e86b60e31b6020909201918252620000559181620006ad565b506005805460ff1916600990811782556000600781905560088054747e07fc508da0e46fdfb1a78d46fedf7f30938e0e016001600160a81b031990911617905581546001600160a01b03191673fc946ba6e3f357ab8f8682aad4f31d9935c53c101782556ddead000000000000000000000000608052600a6011819055601e601255601460138190559190915560046015556001601681905560175560188390556019818155601a829055603c601b55601c93909355601d929092556200011c91620007e2565b6200012d9064e8d4a51000620008ae565b601e55600554620001439060ff16600a620007e2565b62000154906404a817c800620008ae565b601f556005546200016a9060ff16600a620007e2565b6200017b906404a817c800620008ae565b60205560058054620001939160ff90911690620007e2565b620001a390633b9aca00620008ae565b6021556023805462ffffff60a81b19166201000160a81b179055348015620001ca57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200025f57600080fd5b505afa15801562000274573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200029a919062000753565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620002e357600080fd5b505afa158015620002f8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200031e919062000753565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200036757600080fd5b505af11580156200037c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003a2919062000753565b602380546001600160a01b039283166001600160a01b031991821617909155602280549284169290911682179055601e54306000908152600b6020908152604080832094835293905291822055600190600c90620004086000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff19958616179055308152600c83522080549092166001179091556013546012546011546200047e936200046a929062001a5e6200063e821b17901c565b6200063e60201b62001a5e1790919060201c565b601b81905550620004a96016546200046a6015546014546200063e60201b62001a5e1790919060201c565b601c81905550620004d4601a546200046a6019546018546200063e60201b62001a5e1790919060201c565b601d556001600d6000620004f06000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790556023549091168152600d90925280822080548416600190811790915530835290822080549093168117909255600e90620005606000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055308152600e84528281208054861660019081179091556023549092168152600f909352908220805490931617909155601e5490600a90620005cc3390565b6001600160a01b03168152602081019190915260400160002055336001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef601e546040516200062f91815260200190565b60405180910390a35062000923565b6000806200064d83856200077e565b905083811015620006a45760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640160405180910390fd5b90505b92915050565b828054620006bb90620008d0565b90600052602060002090601f016020900481019282620006df57600085556200072a565b82601f10620006fa57805160ff19168380011785556200072a565b828001600101855582156200072a579182015b828111156200072a5782518255916020019190600101906200070d565b50620007389291506200073c565b5090565b5b808211156200073857600081556001016200073d565b6000602082840312156200076657600080fd5b81516001600160a01b0381168114620006a457600080fd5b600082198211156200079457620007946200090d565b500190565b600181815b80851115620007da578160001904821115620007be57620007be6200090d565b80851615620007cc57918102915b93841c93908002906200079e565b509250929050565b6000620007f360ff841683620007fa565b9392505050565b6000826200080b57506001620006a7565b816200081a57506000620006a7565b81600181146200083357600281146200083e576200085e565b6001915050620006a7565b60ff8411156200085257620008526200090d565b50506001821b620006a7565b5060208310610133831016604e8410600b841016171562000883575081810a620006a7565b6200088f838362000799565b8060001904821115620008a657620008a66200090d565b029392505050565b6000816000190483118215151615620008cb57620008cb6200090d565b500290565b600181811c90821680620008e557607f821691505b602082108114156200090757634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60805160601c612d3262000950600039600081816105ea01528181610f80015261282c0152612d326000f3fe6080604052600436106104095760003560e01c80638b42507f11610213578063c5d2418911610123578063dd62ed3e116100ab578063f1d5f5171161007a578063f1d5f51714610c19578063f2fde38b14610c39578063f5d588f514610c59578063f84ba65d14610c73578063f872858a14610c9357600080fd5b8063dd62ed3e14610b7d578063ec28438a14610bc3578063ef422a1814610be3578063f0cd1dac14610c0357600080fd5b8063cab03471116100f2578063cab0347114610aeb578063d158272d14610b01578063da00097d14610b26578063dc44b6a014610b47578063dd46706414610b5d57600080fd5b8063c5d2418914610a6f578063c816841b14610a85578063c860795214610aa5578063c867d60b14610abb57600080fd5b8063a5d69d1f116101a6578063a9059cbb11610175578063a9059cbb146109d9578063b0ce7400146109f9578063c2d4640e14610a19578063c469b6dd14610a39578063c49b9a8014610a4f57600080fd5b8063a5d69d1f14610955578063a69df4b514610975578063a83f53a71461098a578063a85551f4146109a057600080fd5b806395d89b41116101e257806395d89b41146108f5578063a073d37f1461090a578063a08e671f1461091f578063a457c2d71461093557600080fd5b80638b42507f1461087c5780638da5cb5b146108ac578063914eb66a146108ca57806391b05ca3146108df57600080fd5b806339509351116103195780635881f3ef116102a15780637d1db4a5116102705780637d1db4a514610804578063807c2d9c1461081a57806382eefb4314610830578063844d591c1461084657806388790a681461086657600080fd5b80635881f3ef14610783578063602bc62b146107a357806361a23c69146107b857806370a08231146107ce57600080fd5b80634cb80fd5116102e85780634cb80fd5146106f45780635342acb41461071457806355724fc214610744578063557ed1ba1461075a57806357a5802f1461076d57600080fd5b806339509351146106635780633b97084a146106835780633ecad271146106a35780634a74bb02146106d357600080fd5b806318160ddd1161039c5780632563ae831161036b5780632563ae83146105b857806327c8f835146105d85780632b112e491461060c5780632c4b233414610621578063313ce5671461064157600080fd5b806318160ddd146105435780631870517a146105585780632198cf6c1461057857806323b872dd1461059857600080fd5b8063108c336d116103d8578063108c336d146104a75780631245e347146104c75780631694505e146104ff578063170e45f11461051f57600080fd5b806302ac81681461041557806306fdde031461042c5780630873321414610457578063095ea7b31461047757600080fd5b3661041057005b600080fd5b34801561042157600080fd5b5061042a610cb4565b005b34801561043857600080fd5b50610441610cfa565b60405161044e9190612abc565b60405180910390f35b34801561046357600080fd5b5061042a610472366004612a1e565b610d8c565b34801561048357600080fd5b506104976104923660046129be565b610de1565b604051901515815260200161044e565b3480156104b357600080fd5b5061042a6104c2366004612a05565b610df8565b3480156104d357600080fd5b506009546104e7906001600160a01b031681565b6040516001600160a01b03909116815260200161044e565b34801561050b57600080fd5b506022546104e7906001600160a01b031681565b34801561052b57600080fd5b5061053560075481565b60405190815260200161044e565b34801561054f57600080fd5b50601e54610535565b34801561056457600080fd5b5061042a610573366004612a1e565b610e27565b34801561058457600080fd5b5061042a610593366004612989565b610e76565b3480156105a457600080fd5b506104976105b3366004612948565b610ecb565b3480156105c457600080fd5b5061042a6105d33660046129ea565b610f36565b3480156105e457600080fd5b506104e77f000000000000000000000000000000000000000000000000000000000000000081565b34801561061857600080fd5b50610535610f7e565b34801561062d57600080fd5b5061042a61063c3660046128d5565b610fc8565b34801561064d57600080fd5b5060055460405160ff909116815260200161044e565b34801561066f57600080fd5b5061049761067e3660046129be565b611014565b34801561068f57600080fd5b5061042a61069e366004612a05565b61104a565b3480156106af57600080fd5b506104976106be3660046128d5565b600f6020526000908152604090205460ff1681565b3480156106df57600080fd5b5060235461049790600160a81b900460ff1681565b34801561070057600080fd5b5061042a61070f3660046128d5565b611079565b34801561072057600080fd5b5061049761072f3660046128d5565b600c6020526000908152604090205460ff1681565b34801561075057600080fd5b5061053560175481565b34801561076657600080fd5b5042610535565b34801561077957600080fd5b5061053560185481565b34801561078f57600080fd5b506104e761079e3660046128d5565b6110cb565b3480156107af57600080fd5b50600254610535565b3480156107c457600080fd5b5061053560195481565b3480156107da57600080fd5b506105356107e93660046128d5565b6001600160a01b03166000908152600a602052604090205490565b34801561081057600080fd5b50610535601f5481565b34801561082657600080fd5b5061053560205481565b34801561083c57600080fd5b50610535601c5481565b34801561085257600080fd5b5061042a610861366004612989565b61145d565b34801561087257600080fd5b5061053560145481565b34801561088857600080fd5b506104976108973660046128d5565b600e6020526000908152604090205460ff1681565b3480156108b857600080fd5b506000546001600160a01b03166104e7565b3480156108d657600080fd5b5061042a6114b2565b3480156108eb57600080fd5b5061053560065481565b34801561090157600080fd5b5061044161151a565b34801561091657600080fd5b50602154610535565b34801561092b57600080fd5b50610535601d5481565b34801561094157600080fd5b506104976109503660046129be565b611529565b34801561096157600080fd5b5061042a6109703660046129ea565b611578565b34801561098157600080fd5b5061042a6115c0565b34801561099657600080fd5b50610535601a5481565b3480156109ac57600080fd5b506104976109bb3660046128d5565b6001600160a01b031660009081526010602052604090205460ff1690565b3480156109e557600080fd5b506104976109f43660046129be565b6116c6565b348015610a0557600080fd5b5061042a610a14366004612989565b6116d3565b348015610a2557600080fd5b5061042a610a34366004612a1e565b611728565b348015610a4557600080fd5b5061053560135481565b348015610a5b57600080fd5b5061042a610a6a3660046129ea565b611777565b348015610a7b57600080fd5b5061053560125481565b348015610a9157600080fd5b506023546104e7906001600160a01b031681565b348015610ab157600080fd5b5061053560155481565b348015610ac757600080fd5b50610497610ad63660046128d5565b600d6020526000908152604090205460ff1681565b348015610af757600080fd5b5061053560165481565b348015610b0d57600080fd5b506008546104e79061010090046001600160a01b031681565b348015610b3257600080fd5b5060235461049790600160b01b900460ff1681565b348015610b5357600080fd5b5061053560115481565b348015610b6957600080fd5b5061042a610b78366004612a05565b6117f9565b348015610b8957600080fd5b50610535610b9836600461290f565b6001600160a01b039182166000908152600b6020908152604080832093909416825291909152205490565b348015610bcf57600080fd5b5061042a610bde366004612a05565b61187e565b348015610bef57600080fd5b5061042a610bfe366004612989565b6118ad565b348015610c0f57600080fd5b50610535601b5481565b348015610c2557600080fd5b5061042a610c34366004612a05565b611902565b348015610c4557600080fd5b5061042a610c543660046128d5565b611931565b348015610c6557600080fd5b506008546104979060ff1681565b348015610c7f57600080fd5b5061042a610c8e366004612989565b611a09565b348015610c9f57600080fd5b5060235461049790600160b81b900460ff1681565b6000546001600160a01b03163314610ce75760405162461bcd60e51b8152600401610cde90612b11565b60405180910390fd5b6008805460ff1916600117905543600655565b606060038054610d0990612c13565b80601f0160208091040260200160405190810160405280929190818152602001828054610d3590612c13565b8015610d825780601f10610d5757610100808354040283529160200191610d82565b820191906000526020600020905b815481529060010190602001808311610d6557829003601f168201915b5050505050905090565b6000546001600160a01b03163314610db65760405162461bcd60e51b8152600401610cde90612b11565b601483905560158290556016819055610dd981610dd38585611a5e565b90611a5e565b601c55505050565b6000610dee338484611abd565b5060015b92915050565b6000546001600160a01b03163314610e225760405162461bcd60e51b8152600401610cde90612b11565b600755565b6000546001600160a01b03163314610e515760405162461bcd60e51b8152600401610cde90612b11565b601183905560128290556013819055610e6e81610dd38585611a5e565b601b55505050565b6000546001600160a01b03163314610ea05760405162461bcd60e51b8152600401610cde90612b11565b6001600160a01b03919091166000908152600d60205260409020805460ff1916911515919091179055565b6000610ed8848484611be1565b50610f2b8433610f2685604051806060016040528060288152602001612c90602891396001600160a01b038a166000908152600b602090815260408083203384529091529020549190612129565b611abd565b5060015b9392505050565b6000546001600160a01b03163314610f605760405162461bcd60e51b8152600401610cde90612b11565b60238054911515600160b81b0260ff60b81b19909216919091179055565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166000908152600a6020526040812054601e54610fc391612163565b905090565b6000546001600160a01b03163314610ff25760405162461bcd60e51b8152600401610cde90612b11565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b336000818152600b602090815260408083206001600160a01b03871684529091528120549091610dee918590610f269086611a5e565b6000546001600160a01b031633146110745760405162461bcd60e51b8152600401610cde90612b11565b602155565b6000546001600160a01b031633146110a35760405162461bcd60e51b8152600401610cde90612b11565b600880546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b600080546001600160a01b031633146110f65760405162461bcd60e51b8152600401610cde90612b11565b6000829050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561113457600080fd5b505afa158015611148573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116c91906128f2565b6001600160a01b031663e6a4390530836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156111b457600080fd5b505afa1580156111c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ec91906128f2565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b15801561123257600080fd5b505afa158015611246573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061126a91906128f2565b91506001600160a01b0382166113ee57806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156112b357600080fd5b505afa1580156112c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112eb91906128f2565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561133357600080fd5b505afa158015611347573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061136b91906128f2565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156113b357600080fd5b505af11580156113c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113eb91906128f2565b91505b602380546001600160a01b03199081166001600160a01b03858116918217845560228054909316948116949094179091556000908152600d60209081526040808320805460ff19908116600190811790925594549095168352600f909152902080549091169091179055919050565b6000546001600160a01b031633146114875760405162461bcd60e51b8152600401610cde90612b11565b6001600160a01b03919091166000908152600f60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146114dc5760405162461bcd60e51b8152600401610cde90612b11565b6000805460405161dead926001600160a01b0390921691600080516020612cb883398151915291a3600080546001600160a01b03191661dead179055565b606060048054610d0990612c13565b6000610dee3384610f2685604051806060016040528060258152602001612cd860259139336000908152600b602090815260408083206001600160a01b038d1684529091529020549190612129565b6000546001600160a01b031633146115a25760405162461bcd60e51b8152600401610cde90612b11565b60238054911515600160b01b0260ff60b01b19909216919091179055565b6001546001600160a01b031633146116265760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b6064820152608401610cde565b60025442116116775760405162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374206973206c6f636b656420756e74696c20372064617973006044820152606401610cde565b600154600080546040516001600160a01b039384169390911691600080516020612cb883398151915291a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b6000610f2b338484611be1565b6000546001600160a01b031633146116fd5760405162461bcd60e51b8152600401610cde90612b11565b6001600160a01b03919091166000908152601060205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146117525760405162461bcd60e51b8152600401610cde90612b11565b60188390556019829055601a81905561176f81610dd38585611a5e565b601d55505050565b6000546001600160a01b031633146117a15760405162461bcd60e51b8152600401610cde90612b11565b60238054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159906117ee90831515815260200190565b60405180910390a150565b6000546001600160a01b031633146118235760405162461bcd60e51b8152600401610cde90612b11565b60008054600180546001600160a01b03199081166001600160a01b038416179091551690556118528142612ba3565b600255600080546040516001600160a01b0390911690600080516020612cb8833981519152908390a350565b6000546001600160a01b031633146118a85760405162461bcd60e51b8152600401610cde90612b11565b601f55565b6000546001600160a01b031633146118d75760405162461bcd60e51b8152600401610cde90612b11565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461192c5760405162461bcd60e51b8152600401610cde90612b11565b602055565b6000546001600160a01b0316331461195b5760405162461bcd60e51b8152600401610cde90612b11565b6001600160a01b0381166119c05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610cde565b600080546040516001600160a01b0380851693921691600080516020612cb883398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611a335760405162461bcd60e51b8152600401610cde90612b11565b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b600080611a6b8385612ba3565b905083811015610f2f5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610cde565b6001600160a01b038316611b1f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610cde565b6001600160a01b038216611b805760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610cde565b6001600160a01b038381166000818152600b602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416611c475760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610cde565b6001600160a01b038316611ca95760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610cde565b6001600160a01b03831660009081526010602052604090205460ff16158015611ceb57506001600160a01b03841660009081526010602052604090205460ff16155b611d2a5760405162461bcd60e51b815260206004820152601060248201526f62636c6973746564206164647265737360801b6044820152606401610cde565b602354600160a01b900460ff1615611d4e57611d478484846121a5565b9050610f2f565b6001600160a01b0384166000908152600c602052604090205460ff16158015611d9057506001600160a01b0383166000908152600c602052604090205460ff16155b8015611d9e57506000601754115b15611dce57601754600090611dbe90611db885606461228b565b906122cd565b9050611dca8382612163565b9250505b6001600160a01b0384166000908152600e602052604090205460ff16158015611e1057506001600160a01b0383166000908152600e602052604090205460ff16155b15611e7857601f54821115611e785760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610cde565b306000908152600a602052604090205460215481108015908190611ea65750602354600160a01b900460ff16155b8015611ecb57506001600160a01b0386166000908152600f602052604090205460ff16155b8015611ee05750602354600160a81b900460ff165b15611f0657602354600160b01b900460ff1615611efd5760215491505b611f068261234c565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0389166000908152600a9091529190912054611f58918690612129565b6001600160a01b0387166000908152600a6020908152604080832093909355600c90529081205460ff1680611fa557506001600160a01b0386166000908152600c602052604090205460ff165b15611fb1575083612036565b60085460ff16611ff35760405162461bcd60e51b815260206004820152600d60248201526c29bbb0b8103737ba1037b832b760991b6044820152606401610cde565b6023546001600160a01b0388811691161415612028576007546006546120199190612ba3565b43116120285761202886612487565b6120338787876124ce565b90505b602354600160b81b900460ff16801561206857506001600160a01b0386166000908152600d602052604090205460ff16155b1561209e5760205461209382610dd3896001600160a01b03166000908152600a602052604090205490565b111561209e57600080fd5b6001600160a01b0386166000908152600a60205260409020546120c19082611a5e565b6001600160a01b038088166000818152600a602052604090819020939093559151908916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906121159085815260200190565b60405180910390a360019350505050610f2f565b6000818484111561214d5760405162461bcd60e51b8152600401610cde9190612abc565b50600061215a8486612bfc565b95945050505050565b6000610f2f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612129565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600a909152918220546121f6918490612129565b6001600160a01b038086166000908152600a602052604080822093909355908516815220546122259083611a5e565b6001600160a01b038085166000818152600a602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906122799086815260200190565b60405180910390a35060019392505050565b6000610f2f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506125d4565b6000826122dc57506000610df2565b60006122e88385612bdd565b9050826122f58583612bbb565b14610f2f5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610cde565b6023805460ff60a01b1916600160a01b179055601d546018546000916123829160029161237c91829087906122cd565b9061228b565b905060006123908383612163565b905061239b81612602565b60185447906000906123bb906123b290600261228b565b601d5490612163565b905060006123dd600261237c8461237c601854886122cd90919063ffffffff16565b905060006123fa8361237c601a54876122cd90919063ffffffff16565b905060006124128261240c8786612163565b90612163565b90508015612435576008546124359061010090046001600160a01b0316826127a4565b811561245157600954612451906001600160a01b0316836127a4565b6000831180156124615750600087115b156124705761247087846127df565b50506023805460ff60a01b19169055505050505050565b6001600160a01b03811660009081526010602052604090205460ff166124cb576001600160a01b0381166000908152601060205260409020805460ff191660011790555b50565b6001600160a01b0383166000908152600f6020526040812054819060ff16156125125761250b606461237c601b54866122cd90919063ffffffff16565b9050612550565b6001600160a01b0384166000908152600f602052604090205460ff16156125505761254d606461237c601c54866122cd90919063ffffffff16565b90505b80156125ca57306000908152600a60205260409020546125709082611a5e565b306000818152600a6020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906125c19085815260200190565b60405180910390a35b61215a8382612163565b600081836125f55760405162461bcd60e51b8152600401610cde9190612abc565b50600061215a8486612bbb565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061263757612637612c64565b6001600160a01b03928316602091820292909201810191909152602254604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561268b57600080fd5b505afa15801561269f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126c391906128f2565b816001815181106126d6576126d6612c64565b6001600160a01b0392831660209182029290920101526022546126fc9130911684611abd565b60225460405163791ac94760e01b81526001600160a01b039091169063791ac94790612735908590600090869030904290600401612b67565b600060405180830381600087803b15801561274f57600080fd5b505af1158015612763573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051612798929190612b46565b60405180910390a15050565b6040516001600160a01b0383169082156108fc029083906000818181858888f193505050501580156127da573d6000803e3d6000fd5b505050565b6022546127f79030906001600160a01b031684611abd565b60225460405163f305d71960e01b81523060048201526024810184905260006044820181905260648201526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660848301524260a48301529091169063f305d71990839060c4016060604051808303818588803b15801561288057600080fd5b505af1158015612894573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906128b99190612a4a565b5050505050565b803580151581146128d057600080fd5b919050565b6000602082840312156128e757600080fd5b8135610f2f81612c7a565b60006020828403121561290457600080fd5b8151610f2f81612c7a565b6000806040838503121561292257600080fd5b823561292d81612c7a565b9150602083013561293d81612c7a565b809150509250929050565b60008060006060848603121561295d57600080fd5b833561296881612c7a565b9250602084013561297881612c7a565b929592945050506040919091013590565b6000806040838503121561299c57600080fd5b82356129a781612c7a565b91506129b5602084016128c0565b90509250929050565b600080604083850312156129d157600080fd5b82356129dc81612c7a565b946020939093013593505050565b6000602082840312156129fc57600080fd5b610f2f826128c0565b600060208284031215612a1757600080fd5b5035919050565b600080600060608486031215612a3357600080fd5b505081359360208301359350604090920135919050565b600080600060608486031215612a5f57600080fd5b8351925060208401519150604084015190509250925092565b600081518084526020808501945080840160005b83811015612ab15781516001600160a01b031687529582019590820190600101612a8c565b509495945050505050565b600060208083528351808285015260005b81811015612ae957858101830151858201604001528201612acd565b81811115612afb576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b828152604060208201526000612b5f6040830184612a78565b949350505050565b85815284602082015260a060408201526000612b8660a0830186612a78565b6001600160a01b0394909416606083015250608001529392505050565b60008219821115612bb657612bb6612c4e565b500190565b600082612bd857634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615612bf757612bf7612c4e565b500290565b600082821015612c0e57612c0e612c4e565b500390565b600181811c90821680612c2757607f821691505b60208210811415612c4857634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03811681146124cb57600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e045524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220ed43a91387813c02d102eae4b9c3c344b9031df77859eba04f0bb6c3fd14e37464736f6c63430008070033

Deployed Bytecode

0x6080604052600436106104095760003560e01c80638b42507f11610213578063c5d2418911610123578063dd62ed3e116100ab578063f1d5f5171161007a578063f1d5f51714610c19578063f2fde38b14610c39578063f5d588f514610c59578063f84ba65d14610c73578063f872858a14610c9357600080fd5b8063dd62ed3e14610b7d578063ec28438a14610bc3578063ef422a1814610be3578063f0cd1dac14610c0357600080fd5b8063cab03471116100f2578063cab0347114610aeb578063d158272d14610b01578063da00097d14610b26578063dc44b6a014610b47578063dd46706414610b5d57600080fd5b8063c5d2418914610a6f578063c816841b14610a85578063c860795214610aa5578063c867d60b14610abb57600080fd5b8063a5d69d1f116101a6578063a9059cbb11610175578063a9059cbb146109d9578063b0ce7400146109f9578063c2d4640e14610a19578063c469b6dd14610a39578063c49b9a8014610a4f57600080fd5b8063a5d69d1f14610955578063a69df4b514610975578063a83f53a71461098a578063a85551f4146109a057600080fd5b806395d89b41116101e257806395d89b41146108f5578063a073d37f1461090a578063a08e671f1461091f578063a457c2d71461093557600080fd5b80638b42507f1461087c5780638da5cb5b146108ac578063914eb66a146108ca57806391b05ca3146108df57600080fd5b806339509351116103195780635881f3ef116102a15780637d1db4a5116102705780637d1db4a514610804578063807c2d9c1461081a57806382eefb4314610830578063844d591c1461084657806388790a681461086657600080fd5b80635881f3ef14610783578063602bc62b146107a357806361a23c69146107b857806370a08231146107ce57600080fd5b80634cb80fd5116102e85780634cb80fd5146106f45780635342acb41461071457806355724fc214610744578063557ed1ba1461075a57806357a5802f1461076d57600080fd5b806339509351146106635780633b97084a146106835780633ecad271146106a35780634a74bb02146106d357600080fd5b806318160ddd1161039c5780632563ae831161036b5780632563ae83146105b857806327c8f835146105d85780632b112e491461060c5780632c4b233414610621578063313ce5671461064157600080fd5b806318160ddd146105435780631870517a146105585780632198cf6c1461057857806323b872dd1461059857600080fd5b8063108c336d116103d8578063108c336d146104a75780631245e347146104c75780631694505e146104ff578063170e45f11461051f57600080fd5b806302ac81681461041557806306fdde031461042c5780630873321414610457578063095ea7b31461047757600080fd5b3661041057005b600080fd5b34801561042157600080fd5b5061042a610cb4565b005b34801561043857600080fd5b50610441610cfa565b60405161044e9190612abc565b60405180910390f35b34801561046357600080fd5b5061042a610472366004612a1e565b610d8c565b34801561048357600080fd5b506104976104923660046129be565b610de1565b604051901515815260200161044e565b3480156104b357600080fd5b5061042a6104c2366004612a05565b610df8565b3480156104d357600080fd5b506009546104e7906001600160a01b031681565b6040516001600160a01b03909116815260200161044e565b34801561050b57600080fd5b506022546104e7906001600160a01b031681565b34801561052b57600080fd5b5061053560075481565b60405190815260200161044e565b34801561054f57600080fd5b50601e54610535565b34801561056457600080fd5b5061042a610573366004612a1e565b610e27565b34801561058457600080fd5b5061042a610593366004612989565b610e76565b3480156105a457600080fd5b506104976105b3366004612948565b610ecb565b3480156105c457600080fd5b5061042a6105d33660046129ea565b610f36565b3480156105e457600080fd5b506104e77f000000000000000000000000000000000000000000000000000000000000dead81565b34801561061857600080fd5b50610535610f7e565b34801561062d57600080fd5b5061042a61063c3660046128d5565b610fc8565b34801561064d57600080fd5b5060055460405160ff909116815260200161044e565b34801561066f57600080fd5b5061049761067e3660046129be565b611014565b34801561068f57600080fd5b5061042a61069e366004612a05565b61104a565b3480156106af57600080fd5b506104976106be3660046128d5565b600f6020526000908152604090205460ff1681565b3480156106df57600080fd5b5060235461049790600160a81b900460ff1681565b34801561070057600080fd5b5061042a61070f3660046128d5565b611079565b34801561072057600080fd5b5061049761072f3660046128d5565b600c6020526000908152604090205460ff1681565b34801561075057600080fd5b5061053560175481565b34801561076657600080fd5b5042610535565b34801561077957600080fd5b5061053560185481565b34801561078f57600080fd5b506104e761079e3660046128d5565b6110cb565b3480156107af57600080fd5b50600254610535565b3480156107c457600080fd5b5061053560195481565b3480156107da57600080fd5b506105356107e93660046128d5565b6001600160a01b03166000908152600a602052604090205490565b34801561081057600080fd5b50610535601f5481565b34801561082657600080fd5b5061053560205481565b34801561083c57600080fd5b50610535601c5481565b34801561085257600080fd5b5061042a610861366004612989565b61145d565b34801561087257600080fd5b5061053560145481565b34801561088857600080fd5b506104976108973660046128d5565b600e6020526000908152604090205460ff1681565b3480156108b857600080fd5b506000546001600160a01b03166104e7565b3480156108d657600080fd5b5061042a6114b2565b3480156108eb57600080fd5b5061053560065481565b34801561090157600080fd5b5061044161151a565b34801561091657600080fd5b50602154610535565b34801561092b57600080fd5b50610535601d5481565b34801561094157600080fd5b506104976109503660046129be565b611529565b34801561096157600080fd5b5061042a6109703660046129ea565b611578565b34801561098157600080fd5b5061042a6115c0565b34801561099657600080fd5b50610535601a5481565b3480156109ac57600080fd5b506104976109bb3660046128d5565b6001600160a01b031660009081526010602052604090205460ff1690565b3480156109e557600080fd5b506104976109f43660046129be565b6116c6565b348015610a0557600080fd5b5061042a610a14366004612989565b6116d3565b348015610a2557600080fd5b5061042a610a34366004612a1e565b611728565b348015610a4557600080fd5b5061053560135481565b348015610a5b57600080fd5b5061042a610a6a3660046129ea565b611777565b348015610a7b57600080fd5b5061053560125481565b348015610a9157600080fd5b506023546104e7906001600160a01b031681565b348015610ab157600080fd5b5061053560155481565b348015610ac757600080fd5b50610497610ad63660046128d5565b600d6020526000908152604090205460ff1681565b348015610af757600080fd5b5061053560165481565b348015610b0d57600080fd5b506008546104e79061010090046001600160a01b031681565b348015610b3257600080fd5b5060235461049790600160b01b900460ff1681565b348015610b5357600080fd5b5061053560115481565b348015610b6957600080fd5b5061042a610b78366004612a05565b6117f9565b348015610b8957600080fd5b50610535610b9836600461290f565b6001600160a01b039182166000908152600b6020908152604080832093909416825291909152205490565b348015610bcf57600080fd5b5061042a610bde366004612a05565b61187e565b348015610bef57600080fd5b5061042a610bfe366004612989565b6118ad565b348015610c0f57600080fd5b50610535601b5481565b348015610c2557600080fd5b5061042a610c34366004612a05565b611902565b348015610c4557600080fd5b5061042a610c543660046128d5565b611931565b348015610c6557600080fd5b506008546104979060ff1681565b348015610c7f57600080fd5b5061042a610c8e366004612989565b611a09565b348015610c9f57600080fd5b5060235461049790600160b81b900460ff1681565b6000546001600160a01b03163314610ce75760405162461bcd60e51b8152600401610cde90612b11565b60405180910390fd5b6008805460ff1916600117905543600655565b606060038054610d0990612c13565b80601f0160208091040260200160405190810160405280929190818152602001828054610d3590612c13565b8015610d825780601f10610d5757610100808354040283529160200191610d82565b820191906000526020600020905b815481529060010190602001808311610d6557829003601f168201915b5050505050905090565b6000546001600160a01b03163314610db65760405162461bcd60e51b8152600401610cde90612b11565b601483905560158290556016819055610dd981610dd38585611a5e565b90611a5e565b601c55505050565b6000610dee338484611abd565b5060015b92915050565b6000546001600160a01b03163314610e225760405162461bcd60e51b8152600401610cde90612b11565b600755565b6000546001600160a01b03163314610e515760405162461bcd60e51b8152600401610cde90612b11565b601183905560128290556013819055610e6e81610dd38585611a5e565b601b55505050565b6000546001600160a01b03163314610ea05760405162461bcd60e51b8152600401610cde90612b11565b6001600160a01b03919091166000908152600d60205260409020805460ff1916911515919091179055565b6000610ed8848484611be1565b50610f2b8433610f2685604051806060016040528060288152602001612c90602891396001600160a01b038a166000908152600b602090815260408083203384529091529020549190612129565b611abd565b5060015b9392505050565b6000546001600160a01b03163314610f605760405162461bcd60e51b8152600401610cde90612b11565b60238054911515600160b81b0260ff60b81b19909216919091179055565b7f000000000000000000000000000000000000000000000000000000000000dead6001600160a01b03166000908152600a6020526040812054601e54610fc391612163565b905090565b6000546001600160a01b03163314610ff25760405162461bcd60e51b8152600401610cde90612b11565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b336000818152600b602090815260408083206001600160a01b03871684529091528120549091610dee918590610f269086611a5e565b6000546001600160a01b031633146110745760405162461bcd60e51b8152600401610cde90612b11565b602155565b6000546001600160a01b031633146110a35760405162461bcd60e51b8152600401610cde90612b11565b600880546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b600080546001600160a01b031633146110f65760405162461bcd60e51b8152600401610cde90612b11565b6000829050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561113457600080fd5b505afa158015611148573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116c91906128f2565b6001600160a01b031663e6a4390530836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156111b457600080fd5b505afa1580156111c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ec91906128f2565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b15801561123257600080fd5b505afa158015611246573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061126a91906128f2565b91506001600160a01b0382166113ee57806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156112b357600080fd5b505afa1580156112c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112eb91906128f2565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561133357600080fd5b505afa158015611347573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061136b91906128f2565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156113b357600080fd5b505af11580156113c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113eb91906128f2565b91505b602380546001600160a01b03199081166001600160a01b03858116918217845560228054909316948116949094179091556000908152600d60209081526040808320805460ff19908116600190811790925594549095168352600f909152902080549091169091179055919050565b6000546001600160a01b031633146114875760405162461bcd60e51b8152600401610cde90612b11565b6001600160a01b03919091166000908152600f60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146114dc5760405162461bcd60e51b8152600401610cde90612b11565b6000805460405161dead926001600160a01b0390921691600080516020612cb883398151915291a3600080546001600160a01b03191661dead179055565b606060048054610d0990612c13565b6000610dee3384610f2685604051806060016040528060258152602001612cd860259139336000908152600b602090815260408083206001600160a01b038d1684529091529020549190612129565b6000546001600160a01b031633146115a25760405162461bcd60e51b8152600401610cde90612b11565b60238054911515600160b01b0260ff60b01b19909216919091179055565b6001546001600160a01b031633146116265760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b6064820152608401610cde565b60025442116116775760405162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374206973206c6f636b656420756e74696c20372064617973006044820152606401610cde565b600154600080546040516001600160a01b039384169390911691600080516020612cb883398151915291a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b6000610f2b338484611be1565b6000546001600160a01b031633146116fd5760405162461bcd60e51b8152600401610cde90612b11565b6001600160a01b03919091166000908152601060205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146117525760405162461bcd60e51b8152600401610cde90612b11565b60188390556019829055601a81905561176f81610dd38585611a5e565b601d55505050565b6000546001600160a01b031633146117a15760405162461bcd60e51b8152600401610cde90612b11565b60238054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159906117ee90831515815260200190565b60405180910390a150565b6000546001600160a01b031633146118235760405162461bcd60e51b8152600401610cde90612b11565b60008054600180546001600160a01b03199081166001600160a01b038416179091551690556118528142612ba3565b600255600080546040516001600160a01b0390911690600080516020612cb8833981519152908390a350565b6000546001600160a01b031633146118a85760405162461bcd60e51b8152600401610cde90612b11565b601f55565b6000546001600160a01b031633146118d75760405162461bcd60e51b8152600401610cde90612b11565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461192c5760405162461bcd60e51b8152600401610cde90612b11565b602055565b6000546001600160a01b0316331461195b5760405162461bcd60e51b8152600401610cde90612b11565b6001600160a01b0381166119c05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610cde565b600080546040516001600160a01b0380851693921691600080516020612cb883398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611a335760405162461bcd60e51b8152600401610cde90612b11565b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b600080611a6b8385612ba3565b905083811015610f2f5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610cde565b6001600160a01b038316611b1f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610cde565b6001600160a01b038216611b805760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610cde565b6001600160a01b038381166000818152600b602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416611c475760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610cde565b6001600160a01b038316611ca95760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610cde565b6001600160a01b03831660009081526010602052604090205460ff16158015611ceb57506001600160a01b03841660009081526010602052604090205460ff16155b611d2a5760405162461bcd60e51b815260206004820152601060248201526f62636c6973746564206164647265737360801b6044820152606401610cde565b602354600160a01b900460ff1615611d4e57611d478484846121a5565b9050610f2f565b6001600160a01b0384166000908152600c602052604090205460ff16158015611d9057506001600160a01b0383166000908152600c602052604090205460ff16155b8015611d9e57506000601754115b15611dce57601754600090611dbe90611db885606461228b565b906122cd565b9050611dca8382612163565b9250505b6001600160a01b0384166000908152600e602052604090205460ff16158015611e1057506001600160a01b0383166000908152600e602052604090205460ff16155b15611e7857601f54821115611e785760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610cde565b306000908152600a602052604090205460215481108015908190611ea65750602354600160a01b900460ff16155b8015611ecb57506001600160a01b0386166000908152600f602052604090205460ff16155b8015611ee05750602354600160a81b900460ff165b15611f0657602354600160b01b900460ff1615611efd5760215491505b611f068261234c565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0389166000908152600a9091529190912054611f58918690612129565b6001600160a01b0387166000908152600a6020908152604080832093909355600c90529081205460ff1680611fa557506001600160a01b0386166000908152600c602052604090205460ff165b15611fb1575083612036565b60085460ff16611ff35760405162461bcd60e51b815260206004820152600d60248201526c29bbb0b8103737ba1037b832b760991b6044820152606401610cde565b6023546001600160a01b0388811691161415612028576007546006546120199190612ba3565b43116120285761202886612487565b6120338787876124ce565b90505b602354600160b81b900460ff16801561206857506001600160a01b0386166000908152600d602052604090205460ff16155b1561209e5760205461209382610dd3896001600160a01b03166000908152600a602052604090205490565b111561209e57600080fd5b6001600160a01b0386166000908152600a60205260409020546120c19082611a5e565b6001600160a01b038088166000818152600a602052604090819020939093559151908916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906121159085815260200190565b60405180910390a360019350505050610f2f565b6000818484111561214d5760405162461bcd60e51b8152600401610cde9190612abc565b50600061215a8486612bfc565b95945050505050565b6000610f2f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612129565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600a909152918220546121f6918490612129565b6001600160a01b038086166000908152600a602052604080822093909355908516815220546122259083611a5e565b6001600160a01b038085166000818152600a602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906122799086815260200190565b60405180910390a35060019392505050565b6000610f2f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506125d4565b6000826122dc57506000610df2565b60006122e88385612bdd565b9050826122f58583612bbb565b14610f2f5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610cde565b6023805460ff60a01b1916600160a01b179055601d546018546000916123829160029161237c91829087906122cd565b9061228b565b905060006123908383612163565b905061239b81612602565b60185447906000906123bb906123b290600261228b565b601d5490612163565b905060006123dd600261237c8461237c601854886122cd90919063ffffffff16565b905060006123fa8361237c601a54876122cd90919063ffffffff16565b905060006124128261240c8786612163565b90612163565b90508015612435576008546124359061010090046001600160a01b0316826127a4565b811561245157600954612451906001600160a01b0316836127a4565b6000831180156124615750600087115b156124705761247087846127df565b50506023805460ff60a01b19169055505050505050565b6001600160a01b03811660009081526010602052604090205460ff166124cb576001600160a01b0381166000908152601060205260409020805460ff191660011790555b50565b6001600160a01b0383166000908152600f6020526040812054819060ff16156125125761250b606461237c601b54866122cd90919063ffffffff16565b9050612550565b6001600160a01b0384166000908152600f602052604090205460ff16156125505761254d606461237c601c54866122cd90919063ffffffff16565b90505b80156125ca57306000908152600a60205260409020546125709082611a5e565b306000818152600a6020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906125c19085815260200190565b60405180910390a35b61215a8382612163565b600081836125f55760405162461bcd60e51b8152600401610cde9190612abc565b50600061215a8486612bbb565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061263757612637612c64565b6001600160a01b03928316602091820292909201810191909152602254604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561268b57600080fd5b505afa15801561269f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126c391906128f2565b816001815181106126d6576126d6612c64565b6001600160a01b0392831660209182029290920101526022546126fc9130911684611abd565b60225460405163791ac94760e01b81526001600160a01b039091169063791ac94790612735908590600090869030904290600401612b67565b600060405180830381600087803b15801561274f57600080fd5b505af1158015612763573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051612798929190612b46565b60405180910390a15050565b6040516001600160a01b0383169082156108fc029083906000818181858888f193505050501580156127da573d6000803e3d6000fd5b505050565b6022546127f79030906001600160a01b031684611abd565b60225460405163f305d71960e01b81523060048201526024810184905260006044820181905260648201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000dead811660848301524260a48301529091169063f305d71990839060c4016060604051808303818588803b15801561288057600080fd5b505af1158015612894573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906128b99190612a4a565b5050505050565b803580151581146128d057600080fd5b919050565b6000602082840312156128e757600080fd5b8135610f2f81612c7a565b60006020828403121561290457600080fd5b8151610f2f81612c7a565b6000806040838503121561292257600080fd5b823561292d81612c7a565b9150602083013561293d81612c7a565b809150509250929050565b60008060006060848603121561295d57600080fd5b833561296881612c7a565b9250602084013561297881612c7a565b929592945050506040919091013590565b6000806040838503121561299c57600080fd5b82356129a781612c7a565b91506129b5602084016128c0565b90509250929050565b600080604083850312156129d157600080fd5b82356129dc81612c7a565b946020939093013593505050565b6000602082840312156129fc57600080fd5b610f2f826128c0565b600060208284031215612a1757600080fd5b5035919050565b600080600060608486031215612a3357600080fd5b505081359360208301359350604090920135919050565b600080600060608486031215612a5f57600080fd5b8351925060208401519150604084015190509250925092565b600081518084526020808501945080840160005b83811015612ab15781516001600160a01b031687529582019590820190600101612a8c565b509495945050505050565b600060208083528351808285015260005b81811015612ae957858101830151858201604001528201612acd565b81811115612afb576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b828152604060208201526000612b5f6040830184612a78565b949350505050565b85815284602082015260a060408201526000612b8660a0830186612a78565b6001600160a01b0394909416606083015250608001529392505050565b60008219821115612bb657612bb6612c4e565b500190565b600082612bd857634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615612bf757612bf7612c4e565b500290565b600082821015612c0e57612c0e612c4e565b500390565b600181811c90821680612c2757607f821691505b60208210811415612c4857634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03811681146124cb57600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e045524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220ed43a91387813c02d102eae4b9c3c344b9031df77859eba04f0bb6c3fd14e37464736f6c63430008070033

Deployed Bytecode Sourcemap

15081:16343:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20785:108;;;;;;;;;;;;;:::i;:::-;;18977:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21661:341;;;;;;;;;;-1:-1:-1;21661:341:0;;;;;:::i;:::-;;:::i;20271:161::-;;;;;;;;;;-1:-1:-1;20271:161:0;;;;;:::i;:::-;;:::i;:::-;;;5167:14:1;;5160:22;5142:41;;5130:2;5115:18;20271:161:0;5002:187:1;25532:83:0;;;;;;;;;;-1:-1:-1;25532:83:0;;;;;:::i;:::-;;:::i;15546:94::-;;;;;;;;;;-1:-1:-1;15546:94:0;;;;-1:-1:-1;;;;;15546:94:0;;;;;;-1:-1:-1;;;;;3813:32:1;;;3795:51;;3783:2;3768:18;15546:94:0;3649:203:1;17000:41:0;;;;;;;;;;-1:-1:-1;17000:41:0;;;;-1:-1:-1;;;;;17000:41:0;;;15353:25;;;;;;;;;;;;;;;;;;;11181::1;;;11169:2;11154:18;15353:25:0;11035:177:1;19254:100:0;;;;;;;;;;-1:-1:-1;19334:12:0;;19254:100;;21320:333;;;;;;;;;;-1:-1:-1;21320:333:0;;;;;:::i;:::-;;:::i;22624:135::-;;;;;;;;;;-1:-1:-1;22624:135:0;;;;;:::i;:::-;;:::i;24967:313::-;;;;;;;;;;-1:-1:-1;24967:313:0;;;;;:::i;:::-;;:::i;22503:113::-;;;;;;;;;;-1:-1:-1;22503:113:0;;;;;:::i;:::-;;:::i;15663:81::-;;;;;;;;;;;;;;;23609:128;;;;;;;;;;;;;:::i;23156:129::-;;;;;;;;;;-1:-1:-1;23156:129:0;;;;;:::i;:::-;;:::i;19163:83::-;;;;;;;;;;-1:-1:-1;19229:9:0;;19163:83;;19229:9;;;;12283:36:1;;12271:2;12256:18;19163:83:0;12141:184:1;19640:218:0;;;;;;;;;;-1:-1:-1;19640:218:0;;;;;:::i;:::-;;:::i;22877:124::-;;;;;;;;;;-1:-1:-1;22877:124:0;;;;;:::i;:::-;;:::i;16055:45::-;;;;;;;;;;-1:-1:-1;16055:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;17115:40;;;;;;;;;;-1:-1:-1;17115:40:0;;;;-1:-1:-1;;;17115:40:0;;;;;;23009:139;;;;;;;;;;-1:-1:-1;23009:139:0;;;;;:::i;:::-;;:::i;15884:50::-;;;;;;;;;;-1:-1:-1;15884:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;16421:34;;;;;;;;;;;;;;;;6603:90;;;;;;;;;;-1:-1:-1;6670:15:0;6603:90;;16464:34;;;;;;;;;;;;;;;;23883:807;;;;;;;;;;-1:-1:-1;23883:807:0;;;;;:::i;:::-;;:::i;6501:90::-;;;;;;;;;;-1:-1:-1;6574:9:0;;6501:90;;16505:35;;;;;;;;;;;;;;;;19362:119;;;;;;;;;;-1:-1:-1;19362:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;19455:18:0;19428:7;19455:18;;;:9;:18;;;;;;;19362:119;16795:57;;;;;;;;;;;;;;;;16860:55;;;;;;;;;;;;;;;;16630:37;;;;;;;;;;;;;;;;20901:129;;;;;;;;;;-1:-1:-1;20901:129:0;;;;;:::i;:::-;;:::i;16291:36::-;;;;;;;;;;;;;;;;16000:48;;;;;;;;;;-1:-1:-1;16000:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;5861:79;;;;;;;;;;-1:-1:-1;5899:7:0;5926:6;-1:-1:-1;;;;;5926:6:0;5861:79;;6086:155;;;;;;;;;;;;;:::i;15321:25::-;;;;;;;;;;;;;;;;19068:87;;;;;;;;;;;;;:::i;20143:120::-;;;;;;;;;;-1:-1:-1;20232:23:0;;20143:120;;16674:44;;;;;;;;;;;;;;;;19866:269;;;;;;;;;;-1:-1:-1;19866:269:0;;;;;:::i;:::-;;:::i;23472:125::-;;;;;;;;;;-1:-1:-1;23472:125:0;;;;;:::i;:::-;;:::i;6939:305::-;;;;;;;;;;;;;:::i;16547:30::-;;;;;;;;;;;;;;;;25288:107;;;;;;;;;;-1:-1:-1;25288:107:0;;;;;:::i;:::-;-1:-1:-1;;;;;25367:20:0;25343:4;25367:20;;;:11;:20;;;;;;;;;25288:107;24792:167;;;;;;;;;;-1:-1:-1;24792:167:0;;;;;:::i;:::-;;:::i;25623:116::-;;;;;;;;;;-1:-1:-1;25623:116:0;;;;;:::i;:::-;;:::i;22014:358::-;;;;;;;;;;-1:-1:-1;22014:358:0;;;;;:::i;:::-;;:::i;16247:31::-;;;;;;;;;;;;;;;;23293:171;;;;;;;;;;-1:-1:-1;23293:171:0;;;;;:::i;:::-;;:::i;16204:36::-;;;;;;;;;;;;;;;;17048:26;;;;;;;;;;-1:-1:-1;17048:26:0;;;;-1:-1:-1;;;;;17048:26:0;;;16334:36;;;;;;;;;;;;;;;;15941:52;;;;;;;;;;-1:-1:-1;15941:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;16377:31;;;;;;;;;;;;;;;;15419:99;;;;;;;;;;-1:-1:-1;15419:99:0;;;;;;;-1:-1:-1;;;;;15419:99:0;;;17162:45;;;;;;;;;;-1:-1:-1;17162:45:0;;;;-1:-1:-1;;;17162:45:0;;;;;;16161:36;;;;;;;;;;;;;;;;6701:226;;;;;;;;;;-1:-1:-1;6701:226:0;;;;;:::i;:::-;;:::i;19489:143::-;;;;;;;;;;-1:-1:-1;19489:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;19597:18:0;;;19570:7;19597:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;19489:143;22384:111;;;;;;;;;;-1:-1:-1;22384:111:0;;;;;:::i;:::-;;:::i;21177:135::-;;;;;;;;;;-1:-1:-1;21177:135:0;;;;;:::i;:::-;;:::i;16586:37::-;;;;;;;;;;;;;;;;22767:102;;;;;;;;;;-1:-1:-1;22767:102:0;;;;;:::i;:::-;;:::i;6249:244::-;;;;;;;;;;-1:-1:-1;6249:244:0;;;;;:::i;:::-;;:::i;15385:27::-;;;;;;;;;;-1:-1:-1;15385:27:0;;;;;;;;21038:127;;;;;;;;;;-1:-1:-1;21038:127:0;;;;;:::i;:::-;;:::i;17214:35::-;;;;;;;;;;-1:-1:-1;17214:35:0;;;;-1:-1:-1;;;17214:35:0;;;;;;20785:108;5995:6;;-1:-1:-1;;;;;5995:6:0;259:10;5995:22;5987:67;;;;-1:-1:-1;;;5987:67:0;;;;;;;:::i;:::-;;;;;;;;;20831:8:::1;:15:::0;;-1:-1:-1;;20831:15:0::1;20842:4;20831:15;::::0;;20873:12:::1;20857:13;:28:::0;20785:108::o;18977:83::-;19014:13;19047:5;19040:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18977:83;:::o;21661:341::-;5995:6;;-1:-1:-1;;;;;5995:6:0;259:10;5995:22;5987:67;;;;-1:-1:-1;;;5987:67:0;;;;;;;:::i;:::-;21785:17:::1;:35:::0;;;21831:17:::1;:35:::0;;;21877:12:::1;:25:::0;;;21936:58:::1;21892:10:::0;21936:40:::1;21805:15:::0;21851;21936:21:::1;:40::i;:::-;:44:::0;::::1;:58::i;:::-;21915:18;:79:::0;-1:-1:-1;;;21661:341:0:o;20271:161::-;20346:4;20363:39;259:10;20386:7;20395:6;20363:8;:39::i;:::-;-1:-1:-1;20420:4:0;20271:161;;;;;:::o;25532:83::-;5995:6;;-1:-1:-1;;;;;5995:6:0;259:10;5995:22;5987:67;;;;-1:-1:-1;;;5987:67:0;;;;;;;:::i;:::-;25592:9:::1;:15:::0;25532:83::o;21320:333::-;5995:6;;-1:-1:-1;;;;;5995:6:0;259:10;5995:22;5987:67;;;;-1:-1:-1;;;5987:67:0;;;;;;;:::i;:::-;21443:16:::1;:34:::0;;;21488:16:::1;:34:::0;;;21533:11:::1;:24:::0;;;21590:55:::1;21547:10:::0;21590:38:::1;21462:15:::0;21507;21590:20:::1;:38::i;:55::-;21570:17;:75:::0;-1:-1:-1;;;21320:333:0:o;22624:135::-;5995:6;;-1:-1:-1;;;;;5995:6:0;259:10;5995:22;5987:67;;;;-1:-1:-1;;;5987:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22715:27:0;;;::::1;;::::0;;;:19:::1;:27;::::0;;;;:36;;-1:-1:-1;;22715:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22624:135::o;24967:313::-;25065:4;25082:36;25092:6;25100:9;25111:6;25082:9;:36::i;:::-;-1:-1:-1;25129:121:0;25138:6;259:10;25160:89;25198:6;25160:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;25160:19:0;;;;;;:11;:19;;;;;;;;259:10;25160:33;;;;;;;;;;:37;:89::i;:::-;25129:8;:121::i;:::-;-1:-1:-1;25268:4:0;24967:313;;;;;;:::o;22503:113::-;5995:6;;-1:-1:-1;;;;;5995:6:0;259:10;5995:22;5987:67;;;;-1:-1:-1;;;5987:67:0;;;;;;;:::i;:::-;22581:16:::1;:27:::0;;;::::1;;-1:-1:-1::0;;;22581:27:0::1;-1:-1:-1::0;;;;22581:27:0;;::::1;::::0;;;::::1;::::0;;22503:113::o;23609:128::-;23716:11;-1:-1:-1;;;;;19455:18:0;23662:7;19455:18;;;:9;:18;;;;;;23689:12;;:40;;:16;:40::i;:::-;23682:47;;23609:128;:::o;23156:129::-;5995:6;;-1:-1:-1;;;;;5995:6:0;259:10;5995:22;5987:67;;;;-1:-1:-1;;;5987:67:0;;;;;;;:::i;:::-;23238:17:::1;:39:::0;;-1:-1:-1;;;;;;23238:39:0::1;-1:-1:-1::0;;;;;23238:39:0;;;::::1;::::0;;;::::1;::::0;;23156:129::o;19640:218::-;259:10;19728:4;19777:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;19777:34:0;;;;;;;;;;19728:4;;19745:83;;19768:7;;19777:50;;19816:10;19777:38;:50::i;22877:124::-;5995:6;;-1:-1:-1;;;;;5995:6:0;259:10;5995:22;5987:67;;;;-1:-1:-1;;;5987:67:0;;;;;;;:::i;:::-;22959:23:::1;:34:::0;22877:124::o;23009:139::-;5995:6;;-1:-1:-1;;;;;5995:6:0;259:10;5995:22;5987:67;;;;-1:-1:-1;;;5987:67:0;;;;;;;:::i;:::-;23096:22:::1;:44:::0;;-1:-1:-1;;;;;23096:44:0;;::::1;;;-1:-1:-1::0;;;;;;23096:44:0;;::::1;::::0;;;::::1;::::0;;23009:139::o;23883:807::-;23963:22;5995:6;;-1:-1:-1;;;;;5995:6:0;259:10;5995:22;5987:67;;;;-1:-1:-1;;;5987:67:0;;;;;;;:::i;:::-;24000:35:::1;24057:16;24000:74;;24123:16;-1:-1:-1::0;;;;;24123:24:0::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;24105:53:0::1;;24167:4;24174:16;-1:-1:-1::0;;;;;24174:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24105:93;::::0;-1:-1:-1;;;;;;24105:93:0::1;::::0;;;;;;-1:-1:-1;;;;;4311:15:1;;;24105:93:0::1;::::0;::::1;4293:34:1::0;4363:15;;4343:18;;;4336:43;4228:18;;24105:93:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24088:110:::0;-1:-1:-1;;;;;;24214:28:0;::::1;24211:225;;24328:16;-1:-1:-1::0;;;;;24328:24:0::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;24310:74:0::1;;24393:4;24400:16;-1:-1:-1::0;;;;;24400:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24310:114;::::0;-1:-1:-1;;;;;;24310:114:0::1;::::0;;;;;;-1:-1:-1;;;;;4311:15:1;;;24310:114:0::1;::::0;::::1;4293:34:1::0;4363:15;;4343:18;;;4336:43;4228:18;;24310:114:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24293:131;;24211:225;24448:11;:28:::0;;-1:-1:-1;;;;;;24448:28:0;;::::1;-1:-1:-1::0;;;;;24448:28:0;;::::1;::::0;;::::1;::::0;;24510:15:::1;:34:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;-1:-1:-1;24582:41:0;;;:19:::1;:41;::::0;;;;;;;:48;;-1:-1:-1;;24582:48:0;;::::1;-1:-1:-1::0;24582:48:0;;::::1;::::0;;;24662:11;;;;::::1;24641:34:::0;;:12:::1;:34:::0;;;;;:41;;;;::::1;::::0;;::::1;::::0;;24448:28;24462:14;-1:-1:-1;23883:807:0:o;20901:129::-;5995:6;;-1:-1:-1;;;;;5995:6:0;259:10;5995:22;5987:67;;;;-1:-1:-1;;;5987:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20990:21:0;;;::::1;;::::0;;;:12:::1;:21;::::0;;;;:32;;-1:-1:-1;;20990:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20901:129::o;6086:155::-;5995:6;;-1:-1:-1;;;;;5995:6:0;259:10;5995:22;5987:67;;;;-1:-1:-1;;;5987:67:0;;;;;;;:::i;:::-;6174:6:::1;::::0;;6153:45:::1;::::0;6190:6:::1;::::0;-1:-1:-1;;;;;6174:6:0;;::::1;::::0;-1:-1:-1;;;;;;;;;;;6153:45:0;::::1;6209:6;:24:::0;;-1:-1:-1;;;;;;6209:24:0::1;6226:6;6209:24;::::0;;6086:155::o;19068:87::-;19107:13;19140:7;19133:14;;;;;:::i;19866:269::-;19959:4;19976:129;259:10;19999:7;20008:96;20047:15;20008:96;;;;;;;;;;;;;;;;;259:10;20008:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;20008:34:0;;;;;;;;;;;;:38;:96::i;23472:125::-;5995:6;;-1:-1:-1;;;;;5995:6:0;259:10;5995:22;5987:67;;;;-1:-1:-1;;;5987:67:0;;;;;;;:::i;:::-;23553:25:::1;:36:::0;;;::::1;;-1:-1:-1::0;;;23553:36:0::1;-1:-1:-1::0;;;;23553:36:0;;::::1;::::0;;;::::1;::::0;;23472:125::o;6939:305::-;6991:14;;-1:-1:-1;;;;;6991:14:0;7009:10;6991:28;6983:76;;;;-1:-1:-1;;;6983:76:0;;10833:2:1;6983:76:0;;;10815:21:1;10872:2;10852:18;;;10845:30;10911:34;10891:18;;;10884:62;-1:-1:-1;;;10962:18:1;;;10955:33;11005:19;;6983:76:0;10631:399:1;6983:76:0;7096:9;;7078:15;:27;7070:72;;;;-1:-1:-1;;;7070:72:0;;10473:2:1;7070:72:0;;;10455:21:1;10512:2;10492:18;;;10485:30;10551:33;10531:18;;;10524:61;10602:18;;7070:72:0;10271:355:1;7070:72:0;7187:14;;;7179:6;;7158:44;;-1:-1:-1;;;;;7187:14:0;;;;7179:6;;;;-1:-1:-1;;;;;;;;;;;7158:44:0;;7222:14;;;7213:23;;-1:-1:-1;;;;;;7213:23:0;-1:-1:-1;;;;;7222:14:0;;;7213:23;;;;;;6939:305::o;24792:167::-;24870:4;24887:42;259:10;24911:9;24922:6;24887:9;:42::i;25623:116::-;5995:6;;-1:-1:-1;;;;;5995:6:0;259:10;5995:22;5987:67;;;;-1:-1:-1;;;5987:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;25702:22:0;;;::::1;;::::0;;;:11:::1;:22;::::0;;;;:29;;-1:-1:-1;;25702:29:0::1;::::0;::::1;;::::0;;;::::1;::::0;;25623:116::o;22014:358::-;5995:6;;-1:-1:-1;;;;;5995:6:0;259:10;5995:22;5987:67;;;;-1:-1:-1;;;5987:67:0;;;;;;;:::i;:::-;22155:15:::1;:35:::0;;;22201:15:::1;:35:::0;;;22247:10:::1;:25:::0;;;22312:52:::1;22260:12:::0;22312:36:::1;22173:17:::0;22219;22312:19:::1;:36::i;:52::-;22285:24;:79:::0;-1:-1:-1;;;22014:358:0:o;23293:171::-;5995:6;;-1:-1:-1;;;;;5995:6:0;259:10;5995:22;5987:67;;;;-1:-1:-1;;;5987:67:0;;;;;;;:::i;:::-;23370:21:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;23370:32:0::1;-1:-1:-1::0;;;;23370:32:0;;::::1;;::::0;;23418:38:::1;::::0;::::1;::::0;::::1;::::0;23394:8;5167:14:1;5160:22;5142:41;;5130:2;5115:18;;5002:187;23418:38:0::1;;;;;;;;23293:171:::0;:::o;6701:226::-;5995:6;;-1:-1:-1;;;;;5995:6:0;259:10;5995:22;5987:67;;;;-1:-1:-1;;;5987:67:0;;;;;;;:::i;:::-;6782:6:::1;::::0;;;6765:23;;-1:-1:-1;;;;;;6765:23:0;;::::1;-1:-1:-1::0;;;;;6782:6:0;::::1;6765:23;::::0;;;6799:19:::1;::::0;;6841:22:::1;6859:4:::0;6841:15:::1;:22;:::i;:::-;6829:9;:34:::0;6916:1:::1;6900:6:::0;;6879:40:::1;::::0;-1:-1:-1;;;;;6900:6:0;;::::1;::::0;-1:-1:-1;;;;;;;;;;;6879:40:0;6916:1;;6879:40:::1;6701:226:::0;:::o;22384:111::-;5995:6;;-1:-1:-1;;;;;5995:6:0;259:10;5995:22;5987:67;;;;-1:-1:-1;;;5987:67:0;;;;;;;:::i;:::-;22461:12:::1;:26:::0;22384:111::o;21177:135::-;5995:6;;-1:-1:-1;;;;;5995:6:0;259:10;5995:22;5987:67;;;;-1:-1:-1;;;5987:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21267:26:0;;;::::1;;::::0;;;:17:::1;:26;::::0;;;;:37;;-1:-1:-1;;21267:37:0::1;::::0;::::1;;::::0;;;::::1;::::0;;21177:135::o;22767:102::-;5995:6;;-1:-1:-1;;;;;5995:6:0;259:10;5995:22;5987:67;;;;-1:-1:-1;;;5987:67:0;;;;;;;:::i;:::-;22839:10:::1;:22:::0;22767:102::o;6249:244::-;5995:6;;-1:-1:-1;;;;;5995:6:0;259:10;5995:22;5987:67;;;;-1:-1:-1;;;5987:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6338:22:0;::::1;6330:73;;;::::0;-1:-1:-1;;;6330:73:0;;6979:2:1;6330:73:0::1;::::0;::::1;6961:21:1::0;7018:2;6998:18;;;6991:30;7057:34;7037:18;;;7030:62;-1:-1:-1;;;7108:18:1;;;7101:36;7154:19;;6330:73:0::1;6777:402:1::0;6330:73:0::1;6440:6;::::0;;6419:38:::1;::::0;-1:-1:-1;;;;;6419:38:0;;::::1;::::0;6440:6;::::1;::::0;-1:-1:-1;;;;;;;;;;;6419:38:0;::::1;6468:6;:17:::0;;-1:-1:-1;;;;;;6468:17:0::1;-1:-1:-1::0;;;;;6468:17:0;;;::::1;::::0;;;::::1;::::0;;6249:244::o;21038:127::-;5995:6;;-1:-1:-1;;;;;5995:6:0;259:10;5995:22;5987:67;;;;-1:-1:-1;;;5987:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21125:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;21125:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;21038:127::o;1231:181::-;1289:7;;1321:5;1325:1;1321;:5;:::i;:::-;1309:17;;1350:1;1345;:6;;1337:46;;;;-1:-1:-1;;;1337:46:0;;7789:2:1;1337:46:0;;;7771:21:1;7828:2;7808:18;;;7801:30;7867:29;7847:18;;;7840:57;7914:18;;1337:46:0;7587:351:1;20440:337:0;-1:-1:-1;;;;;20533:19:0;;20525:68;;;;-1:-1:-1;;;20525:68:0;;10068:2:1;20525:68:0;;;10050:21:1;10107:2;10087:18;;;10080:30;10146:34;10126:18;;;10119:62;-1:-1:-1;;;10197:18:1;;;10190:34;10241:19;;20525:68:0;9866:400:1;20525:68:0;-1:-1:-1;;;;;20612:21:0;;20604:68;;;;-1:-1:-1;;;20604:68:0;;7386:2:1;20604:68:0;;;7368:21:1;7425:2;7405:18;;;7398:30;7464:34;7444:18;;;7437:62;-1:-1:-1;;;7515:18:1;;;7508:32;7557:19;;20604:68:0;7184:398:1;20604:68:0;-1:-1:-1;;;;;20685:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;20737:32;;11181:25:1;;;20737:32:0;;11154:18:1;20737:32:0;;;;;;;20440:337;;;:::o;25747:2441::-;25834:4;-1:-1:-1;;;;;25861:20:0;;25853:70;;;;-1:-1:-1;;;25853:70:0;;9662:2:1;25853:70:0;;;9644:21:1;9701:2;9681:18;;;9674:30;9740:34;9720:18;;;9713:62;-1:-1:-1;;;9791:18:1;;;9784:35;9836:19;;25853:70:0;9460:401:1;25853:70:0;-1:-1:-1;;;;;25942:23:0;;25934:71;;;;-1:-1:-1;;;25934:71:0;;6233:2:1;25934:71:0;;;6215:21:1;6272:2;6252:18;;;6245:30;6311:34;6291:18;;;6284:62;-1:-1:-1;;;6362:18:1;;;6355:33;6405:19;;25934:71:0;6031:399:1;25934:71:0;-1:-1:-1;;;;;26025:22:0;;;;;;:11;:22;;;;;;;;26024:23;:47;;;;-1:-1:-1;;;;;;26052:19:0;;;;;;:11;:19;;;;;;;;26051:20;26024:47;26016:76;;;;-1:-1:-1;;;26016:76:0;;8145:2:1;26016:76:0;;;8127:21:1;8184:2;8164:18;;;8157:30;-1:-1:-1;;;8203:18:1;;;8196:46;8259:18;;26016:76:0;7943:340:1;26016:76:0;26108:16;;-1:-1:-1;;;26108:16:0;;;;26105:2076;;;26158:41;26173:6;26181:9;26192:6;26158:14;:41::i;:::-;26151:48;;;;26105:2076;-1:-1:-1;;;;;26256:25:0;;;;;;:17;:25;;;;;;;;26255:26;:59;;;;-1:-1:-1;;;;;;26286:28:0;;;;;;:17;:28;;;;;;;;26285:29;26255:59;:82;;;;;26336:1;26318:15;;:19;26255:82;26251:249;;;26407:15;;26358:26;;26387:36;;:15;:6;26398:3;26387:10;:15::i;:::-;:19;;:36::i;:::-;26358:65;-1:-1:-1;26451:33:0;:6;26358:65;26451:10;:33::i;:::-;26442:42;;26339:161;26251:249;-1:-1:-1;;;;;26520:23:0;;;;;;:15;:23;;;;;;;;26519:24;:55;;;;-1:-1:-1;;;;;;26548:26:0;;;;;;:15;:26;;;;;;;;26547:27;26519:55;26516:170;;;26613:12;;26603:6;:22;;26595:75;;;;-1:-1:-1;;;26595:75:0;;8490:2:1;26595:75:0;;;8472:21:1;8529:2;8509:18;;;8502:30;8568:34;8548:18;;;8541:62;-1:-1:-1;;;8619:18:1;;;8612:38;8667:19;;26595:75:0;8288:404:1;26595:75:0;26791:4;26742:28;19455:18;;;:9;:18;;;;;;26867:23;;26843:47;;;;;;;26923:44;;-1:-1:-1;26951:16:0;;-1:-1:-1;;;26951:16:0;;;;26950:17;26923:44;:69;;;;-1:-1:-1;;;;;;26972:20:0;;;;;;:12;:20;;;;;;;;26971:21;26923:69;:94;;;;-1:-1:-1;26996:21:0;;-1:-1:-1;;;26996:21:0;;;;26923:94;26919:305;;;27055:25;;-1:-1:-1;;;27055:25:0;;;;27052:97;;;27126:23;;27103:46;;27052:97;27168:36;27183:20;27168:14;:36::i;:::-;27260:53;;;;;;;;;;;-1:-1:-1;;;27260:53:0;;;;;;;;-1:-1:-1;;;;;27260:17:0;;-1:-1:-1;27260:17:0;;;:9;:17;;;;;;;;:53;;27282:6;;27260:21;:53::i;:::-;-1:-1:-1;;;;;27240:17:0;;;;;;:9;:17;;;;;;;;:73;;;;27366:17;:25;;;;;;;;;:57;;-1:-1:-1;;;;;;27395:28:0;;;;;;:17;:28;;;;;;;;27366:57;27362:479;;;-1:-1:-1;27458:6:0;27362:479;;;27513:8;;;;27505:34;;;;-1:-1:-1;;;27505:34:0;;6637:2:1;27505:34:0;;;6619:21:1;6676:2;6656:18;;;6649:30;-1:-1:-1;;;6695:18:1;;;6688:43;6748:18;;27505:34:0;6435:337:1;27505:34:0;27571:11;;-1:-1:-1;;;;;27561:21:0;;;27571:11;;27561:21;27558:201;;;27643:9;;27627:13;;:25;;;;:::i;:::-;27611:12;:41;27607:133;;27699:17;27706:9;27699:6;:17::i;:::-;27791:34;27799:6;27807:9;27818:6;27791:7;:34::i;:::-;27777:48;;27362:479;27860:16;;-1:-1:-1;;;27860:16:0;;;;:51;;;;-1:-1:-1;;;;;;27881:30:0;;;;;;:19;:30;;;;;;;;27880:31;27860:51;27857:133;;;27979:10;;27938:37;27963:11;27938:20;27948:9;-1:-1:-1;;;;;19455:18:0;19428:7;19455:18;;;:9;:18;;;;;;;19362:119;27938:37;:51;;27930:60;;;;;;-1:-1:-1;;;;;28030:20:0;;;;;;:9;:20;;;;;;:37;;28055:11;28030:24;:37::i;:::-;-1:-1:-1;;;;;28007:20:0;;;;;;;:9;:20;;;;;;;:60;;;;28089:40;;;;;;;;;;28117:11;11181:25:1;;11169:2;11154:18;;11035:177;28089:40:0;;;;;;;;28151:4;28144:11;;;;;;;1564:192;1650:7;1686:12;1678:6;;;;1670:29;;;;-1:-1:-1;;;1670:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1710:9:0;1722:5;1726:1;1722;:5;:::i;:::-;1710:17;1564:192;-1:-1:-1;;;;;1564:192:0:o;1420:136::-;1478:7;1505:43;1509:1;1512;1505:43;;;;;;;;;;;;;;;;;:3;:43::i;28196:330::-;28326:53;;;;;;;;;;;-1:-1:-1;;;28326:53:0;;;;;;;;-1:-1:-1;;;;;28326:17:0;;28289:4;28326:17;;;:9;:17;;;;;;;:53;;28348:6;;28326:21;:53::i;:::-;-1:-1:-1;;;;;28306:17:0;;;;;;;:9;:17;;;;;;:73;;;;28413:20;;;;;;;:32;;28438:6;28413:24;:32::i;:::-;-1:-1:-1;;;;;28390:20:0;;;;;;;:9;:20;;;;;;;:55;;;;28461:35;;;;;;;;;;28489:6;11181:25:1;;11169:2;11154:18;;11035:177;28461:35:0;;;;;;;;-1:-1:-1;28514:4:0;28196:330;;;;;:::o;2022:132::-;2080:7;2107:39;2111:1;2114;2107:39;;;;;;;;;;;;;;;;;:3;:39::i;1764:250::-;1822:7;1846:6;1842:47;;-1:-1:-1;1876:1:0;1869:8;;1842:47;1901:9;1913:5;1917:1;1913;:5;:::i;:::-;1901:17;-1:-1:-1;1946:1:0;1937:5;1941:1;1901:17;1937:5;:::i;:::-;:10;1929:56;;;;-1:-1:-1;;;1929:56:0;;8899:2:1;1929:56:0;;;8881:21:1;8938:2;8918:18;;;8911:30;8977:34;8957:18;;;8950:62;-1:-1:-1;;;9028:18:1;;;9021:31;9069:19;;1929:56:0;8697:397:1;28534:1048:0;17672:16;:23;;-1:-1:-1;;;;17672:23:0;-1:-1:-1;;;17672:23:0;;;28671:24:::1;::::0;28650:15:::1;::::0;17672:23;;28638:65:::1;::::0;28701:1:::1;::::0;28638:58:::1;::::0;;;:7;;:11:::1;:28::i;:::-;:32:::0;::::1;:58::i;:65::-;28616:87:::0;-1:-1:-1;28714:21:0::1;28738:24;:7:::0;28616:87;28738:11:::1;:24::i;:::-;28714:48;;28775:31;28792:13;28775:16;:31::i;:::-;28927:15;::::0;28842:21:::1;::::0;28817:22:::1;::::0;28898:52:::1;::::0;28927:22:::1;::::0;28947:1:::1;28927:19;:22::i;:::-;28898:24;::::0;;:28:::1;:52::i;:::-;28876:74;;28971:26;29000:59;29057:1;29000:52;29040:11;29000:35;29019:15;;29000:14;:18;;:35;;;;:::i;:59::-;28971:88;;29070:21;29094:47;29129:11;29094:30;29113:10;;29094:14;:18;;:30;;;;:::i;:47::-;29070:71:::0;-1:-1:-1;29152:26:0::1;29181:57;29070:71:::0;29181:38:::1;:14:::0;29200:18;29181::::1;:38::i;:::-;:42:::0;::::1;:57::i;:::-;29152:86:::0;-1:-1:-1;29254:22:0;;29251:104:::1;;29312:22;::::0;29291:64:::1;::::0;29312:22:::1;::::0;::::1;-1:-1:-1::0;;;;;29312:22:0::1;29336:18:::0;29291:20:::1;:64::i;:::-;29371:17:::0;;29368:89:::1;;29424:17;::::0;29403:54:::1;::::0;-1:-1:-1;;;;;29424:17:0::1;29443:13:::0;29403:20:::1;:54::i;:::-;29494:1;29473:18;:22;:41;;;;;29513:1;29499:11;:15;29473:41;29470:104;;;29529:45;29542:11;29555:18;29529:12;:45::i;:::-;-1:-1:-1::0;;17718:16:0;:24;;-1:-1:-1;;;;17718:24:0;;;-1:-1:-1;;;;;;28534:1048:0:o;25403:121::-;-1:-1:-1;;;;;25463:22:0;;;;;;:11;:22;;;;;;;;25458:58;;-1:-1:-1;;;;;25487:22:0;;;;;;:11;:22;;;;;:29;;-1:-1:-1;;25487:29:0;25512:4;25487:29;;;25458:58;25403:121;:::o;30793:622::-;-1:-1:-1;;;;;30954:20:0;;30879:7;30954:20;;;:12;:20;;;;;;30879:7;;30954:20;;30951:223;;;31003:38;31037:3;31003:29;31014:17;;31003:6;:10;;:29;;;;:::i;:38::-;30991:50;;30951:223;;;-1:-1:-1;;;;;31071:23:0;;;;;;:12;:23;;;;;;;;31068:106;;;31123:39;31158:3;31123:30;31134:18;;31123:6;:10;;:30;;;;:::i;:39::-;31111:51;;31068:106;31197:13;;31194:173;;31272:4;31254:24;;;;:9;:24;;;;;;:39;;31283:9;31254:28;:39::i;:::-;31245:4;31227:24;;;;:9;:24;;;;;;;:66;;;;31313:42;;-1:-1:-1;;;;;31313:42:0;;;;;;;31345:9;11181:25:1;;11169:2;11154:18;;11035:177;31313:42:0;;;;;;;;31194:173;31386:21;:6;31397:9;31386:10;:21::i;2162:278::-;2248:7;2283:12;2276:5;2268:28;;;;-1:-1:-1;;;2268:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2307:9:0;2319:5;2323:1;2319;:5;:::i;29594:666::-;29744:16;;;29758:1;29744:16;;;;;;;;29720:21;;29744:16;;;;;;;;;;-1:-1:-1;29744:16:0;29720:40;;29789:4;29771;29776:1;29771:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;29771:23:0;;;:7;;;;;;;;;;:23;;;;29815:15;;:22;;;-1:-1:-1;;;29815:22:0;;;;:15;;;;;:20;;:22;;;;;29771:7;;29815:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29805:4;29810:1;29805:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;29805:32:0;;;:7;;;;;;;;;:32;29882:15;;29850:62;;29867:4;;29882:15;29900:11;29850:8;:62::i;:::-;29951:15;;:240;;-1:-1:-1;;;29951:240:0;;-1:-1:-1;;;;;29951:15:0;;;;:66;;:240;;30032:11;;29951:15;;30102:4;;30129;;30165:15;;29951:240;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30217:35;30234:11;30247:4;30217:35;;;;;;;:::i;:::-;;;;;;;;29649:611;29594:666;:::o;23745:126::-;23837:26;;-1:-1:-1;;;;;23837:18:0;;;:26;;;;;23856:6;;23837:26;;;;23856:6;23837:18;:26;;;;;;;;;;;;;;;;;;;;;23745:126;;:::o;30268:517::-;30448:15;;30416:62;;30433:4;;-1:-1:-1;;;;;30448:15:0;30466:11;30416:8;:62::i;:::-;30521:15;;:256;;-1:-1:-1;;;30521:256:0;;30593:4;30521:256;;;4731:34:1;4781:18;;;4774:34;;;-1:-1:-1;4824:18:1;;;4817:34;;;4867:18;;;4860:34;-1:-1:-1;;;;;30725:11:0;4931:15:1;;4910:19;;;4903:44;30751:15:0;4963:19:1;;;4956:35;30521:15:0;;;;:31;;30560:9;;4665:19:1;;30521:256:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;30268:517;;:::o;14:160:1:-;79:20;;135:13;;128:21;118:32;;108:60;;164:1;161;154:12;108:60;14:160;;;:::o;179:247::-;238:6;291:2;279:9;270:7;266:23;262:32;259:52;;;307:1;304;297:12;259:52;346:9;333:23;365:31;390:5;365:31;:::i;431:251::-;501:6;554:2;542:9;533:7;529:23;525:32;522:52;;;570:1;567;560:12;522:52;602:9;596:16;621:31;646:5;621:31;:::i;687:388::-;755:6;763;816:2;804:9;795:7;791:23;787:32;784:52;;;832:1;829;822:12;784:52;871:9;858:23;890:31;915:5;890:31;:::i;:::-;940:5;-1:-1:-1;997:2:1;982:18;;969:32;1010:33;969:32;1010:33;:::i;:::-;1062:7;1052:17;;;687:388;;;;;:::o;1080:456::-;1157:6;1165;1173;1226:2;1214:9;1205:7;1201:23;1197:32;1194:52;;;1242:1;1239;1232:12;1194:52;1281:9;1268:23;1300:31;1325:5;1300:31;:::i;:::-;1350:5;-1:-1:-1;1407:2:1;1392:18;;1379:32;1420:33;1379:32;1420:33;:::i;:::-;1080:456;;1472:7;;-1:-1:-1;;;1526:2:1;1511:18;;;;1498:32;;1080:456::o;1541:315::-;1606:6;1614;1667:2;1655:9;1646:7;1642:23;1638:32;1635:52;;;1683:1;1680;1673:12;1635:52;1722:9;1709:23;1741:31;1766:5;1741:31;:::i;:::-;1791:5;-1:-1:-1;1815:35:1;1846:2;1831:18;;1815:35;:::i;:::-;1805:45;;1541:315;;;;;:::o;1861:::-;1929:6;1937;1990:2;1978:9;1969:7;1965:23;1961:32;1958:52;;;2006:1;2003;1996:12;1958:52;2045:9;2032:23;2064:31;2089:5;2064:31;:::i;:::-;2114:5;2166:2;2151:18;;;;2138:32;;-1:-1:-1;;;1861:315:1:o;2181:180::-;2237:6;2290:2;2278:9;2269:7;2265:23;2261:32;2258:52;;;2306:1;2303;2296:12;2258:52;2329:26;2345:9;2329:26;:::i;2366:180::-;2425:6;2478:2;2466:9;2457:7;2453:23;2449:32;2446:52;;;2494:1;2491;2484:12;2446:52;-1:-1:-1;2517:23:1;;2366:180;-1:-1:-1;2366:180:1:o;2551:316::-;2628:6;2636;2644;2697:2;2685:9;2676:7;2672:23;2668:32;2665:52;;;2713:1;2710;2703:12;2665:52;-1:-1:-1;;2736:23:1;;;2806:2;2791:18;;2778:32;;-1:-1:-1;2857:2:1;2842:18;;;2829:32;;2551:316;-1:-1:-1;2551:316:1:o;2872:306::-;2960:6;2968;2976;3029:2;3017:9;3008:7;3004:23;3000:32;2997:52;;;3045:1;3042;3035:12;2997:52;3074:9;3068:16;3058:26;;3124:2;3113:9;3109:18;3103:25;3093:35;;3168:2;3157:9;3153:18;3147:25;3137:35;;2872:306;;;;;:::o;3183:461::-;3236:3;3274:5;3268:12;3301:6;3296:3;3289:19;3327:4;3356:2;3351:3;3347:12;3340:19;;3393:2;3386:5;3382:14;3414:1;3424:195;3438:6;3435:1;3432:13;3424:195;;;3503:13;;-1:-1:-1;;;;;3499:39:1;3487:52;;3559:12;;;;3594:15;;;;3535:1;3453:9;3424:195;;;-1:-1:-1;3635:3:1;;3183:461;-1:-1:-1;;;;;3183:461:1:o;5429:597::-;5541:4;5570:2;5599;5588:9;5581:21;5631:6;5625:13;5674:6;5669:2;5658:9;5654:18;5647:34;5699:1;5709:140;5723:6;5720:1;5717:13;5709:140;;;5818:14;;;5814:23;;5808:30;5784:17;;;5803:2;5780:26;5773:66;5738:10;;5709:140;;;5867:6;5864:1;5861:13;5858:91;;;5937:1;5932:2;5923:6;5912:9;5908:22;5904:31;5897:42;5858:91;-1:-1:-1;6010:2:1;5989:15;-1:-1:-1;;5985:29:1;5970:45;;;;6017:2;5966:54;;5429:597;-1:-1:-1;;;5429:597:1:o;9099:356::-;9301:2;9283:21;;;9320:18;;;9313:30;9379:34;9374:2;9359:18;;9352:62;9446:2;9431:18;;9099:356::o;11217:332::-;11424:6;11413:9;11406:25;11467:2;11462;11451:9;11447:18;11440:30;11387:4;11487:56;11539:2;11528:9;11524:18;11516:6;11487:56;:::i;:::-;11479:64;11217:332;-1:-1:-1;;;;11217:332:1:o;11554:582::-;11853:6;11842:9;11835:25;11896:6;11891:2;11880:9;11876:18;11869:34;11939:3;11934:2;11923:9;11919:18;11912:31;11816:4;11960:57;12012:3;12001:9;11997:19;11989:6;11960:57;:::i;:::-;-1:-1:-1;;;;;12053:32:1;;;;12048:2;12033:18;;12026:60;-1:-1:-1;12117:3:1;12102:19;12095:35;11952:65;11554:582;-1:-1:-1;;;11554:582:1:o;12330:128::-;12370:3;12401:1;12397:6;12394:1;12391:13;12388:39;;;12407:18;;:::i;:::-;-1:-1:-1;12443:9:1;;12330:128::o;12463:217::-;12503:1;12529;12519:132;;12573:10;12568:3;12564:20;12561:1;12554:31;12608:4;12605:1;12598:15;12636:4;12633:1;12626:15;12519:132;-1:-1:-1;12665:9:1;;12463:217::o;12685:168::-;12725:7;12791:1;12787;12783:6;12779:14;12776:1;12773:21;12768:1;12761:9;12754:17;12750:45;12747:71;;;12798:18;;:::i;:::-;-1:-1:-1;12838:9:1;;12685:168::o;12858:125::-;12898:4;12926:1;12923;12920:8;12917:34;;;12931:18;;:::i;:::-;-1:-1:-1;12968:9:1;;12858:125::o;12988:380::-;13067:1;13063:12;;;;13110;;;13131:61;;13185:4;13177:6;13173:17;13163:27;;13131:61;13238:2;13230:6;13227:14;13207:18;13204:38;13201:161;;;13284:10;13279:3;13275:20;13272:1;13265:31;13319:4;13316:1;13309:15;13347:4;13344:1;13337:15;13201:161;;12988:380;;;:::o;13373:127::-;13434:10;13429:3;13425:20;13422:1;13415:31;13465:4;13462:1;13455:15;13489:4;13486:1;13479:15;13505:127;13566:10;13561:3;13557:20;13554:1;13547:31;13597:4;13594:1;13587:15;13621:4;13618:1;13611:15;13769:131;-1:-1:-1;;;;;13844:31:1;;13834:42;;13824:70;;13890:1;13887;13880:12

Swarm Source

ipfs://ed43a91387813c02d102eae4b9c3c344b9031df77859eba04f0bb6c3fd14e374
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.