Token ALIEN

Overview CRC20

Price
$0.00 @ 0.000000 CRO
Fully Diluted Market Cap
Total Supply:
100,000,000 ALIEN

Holders:
612 addresses
Contract:
0x8a207b11177d9029ebb04ba86b4a9d2cf74835b70x8a207b11177d9029eBB04BA86b4a9D2cF74835b7

Decimals:
9

Social Profiles:
Not Available, Update ?

Balance
10 ALIEN

Value
$0.00
0x7dae8fbcc37f67cb1ca02b959fa97c1473bd3a63
Loading
[ Download CSV Export  ] 
Loading
[ Download CSV Export  ] 
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
CROALIEN

Compiler Version
v0.8.12+commit.f00d7308

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at cronoscan.com on 2022-03-16
*/

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

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount) external returns (bool);

    function allowance(address owner, address spender) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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

    function _msgData() internal view virtual returns (bytes calldata) {
        this;
        return msg.data;
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _setOwner(_msgSender());
    }

    function owner() public view virtual returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

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

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

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 swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline) external;
}

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

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
}

 contract CROALIEN is Context, IERC20, Ownable {
    using Address for address payable;

    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private _isExcluded;
    mapping (address => bool) public allowedTransfer;
    mapping (address => bool) private _isBlacklisted;

    address[] private _excluded;

    bool public tradingEnabled = false;
    bool public swapEnabled = true;
    bool private swapping;

    //Anti Dump
    mapping(address => uint256) private _lastSell;
    bool public coolDownEnabled = true;
    uint256 public coolDownTime = 30 seconds;

    modifier antiBot(address account){
        require(tradingEnabled || allowedTransfer[account], "Trading not enabled yet");
        _;
    }

    IRouter public router;
    address public pair;

    uint8 private constant _decimals = 9;
    uint256 private constant MAX = ~uint256(0);

    uint256 private _tTotal = 1 * 10**8 * (10 ** _decimals); // 100.000.000
    uint256 private _rTotal = (MAX - (MAX % _tTotal));

    uint256 public swapTokensAtAmount = _tTotal * 1 / 1000; // 100.000 = 0.1%
    uint256 public maxBuyLimit = _tTotal * 1 / 200; // 500.000  = 0.5%
    uint256 public maxSellLimit = _tTotal * 1 / 200; // 500.000  = 0.5%
    uint256 public maxWalletLimit = _tTotal * 2 / 100; // 2.000.000 = 2%

    uint256 public genesis_block;

    uint256 public buytotaltaxes;
    uint256 public selltotaltaxes;
    //nais!
    address public marketingWallet = 0xD7A3f00b4387Dc8570236131De55094bEeDDD2d1;
    address public buybackWallet = 0xd90d8FcB20530a014A53e0928a091ae4964D5171;

    string private constant _name = "ALIEN";
    string private constant _symbol = "ALIEN";

    struct Taxes {
        uint256 rfi;
        uint256 marketing;
        uint256 liquidity;
        uint256 buyback;
    }

    Taxes public taxes = Taxes(0, 3, 2, 20);
    Taxes public sellTaxes = Taxes(0, 3, 2, 20);

    struct TotFeesPaidStruct{
        uint256 rfi;
        uint256 marketing;
        uint256 liquidity;
        uint256 buyback;
    }

    TotFeesPaidStruct public totFeesPaid;

    struct valuesFromGetValues{
      uint256 rAmount;
      uint256 rTransferAmount;
      uint256 rRfi;
      uint256 rMarketing;
      uint256 rLiquidity;
      uint256 rBuyback;
      uint256 tTransferAmount;
      uint256 tRfi;
      uint256 tMarketing;
      uint256 tLiquidity;
      uint256 tBuyback;
    }

    event FeesChanged();
    event UpdatedRouter(address oldRouter, address newRouter);

    modifier lockTheSwap {
        swapping = true;
        _;
        swapping = false;
    }

    constructor (address routerAddress) {
        IRouter _router = IRouter(routerAddress);
        address _pair = IFactory(_router.factory())
            .createPair(address(this), _router.WETH());

        router = _router;
        pair = _pair;

        excludeFromReward(pair);

        _rOwned[owner()] = _rTotal;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[marketingWallet] = true;
        _isExcludedFromFee[buybackWallet] = true;

        allowedTransfer[address(this)] = true;
        allowedTransfer[owner()] = true;
        allowedTransfer[pair] = true;
        allowedTransfer[marketingWallet] = true;
        allowedTransfer[buybackWallet] = true;

        emit Transfer(address(0), owner(), _tTotal);
    }

    function name() public pure returns (string memory) {
        return _name;
    }
    function symbol() public pure returns (string memory) {
        return _symbol;
    }
    function decimals() public pure returns (uint8) {
        return _decimals;
    }

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

    function balanceOf(address account) public view override returns (uint256) {
        if (_isExcluded[account]) return _tOwned[account];
        return tokenFromReflection(_rOwned[account]);
    }

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

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

    function transferFrom(address sender, address recipient, uint256 amount) public override antiBot(sender) returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        _approve(sender, _msgSender(), currentAllowance - amount);

        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public  antiBot(msg.sender) returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public  antiBot(msg.sender) returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);

        return true;
    }

    function transfer(address recipient, uint256 amount) public override antiBot(msg.sender) returns (bool)
    {
      _transfer(msg.sender, recipient, amount);
      return true;
    }

    function isExcludedFromReward(address account) public view returns (bool) {
        return _isExcluded[account];
    }

    function reflectionFromToken(uint256 tAmount, bool deductTransferRfi) public view returns(uint256) {
        require(tAmount <= _tTotal, "Amount must be less than supply");
        if (!deductTransferRfi) {
            valuesFromGetValues memory s = _getValues(tAmount, true, false);
            return s.rAmount;
        } else {
            valuesFromGetValues memory s = _getValues(tAmount, true, false);
            return s.rTransferAmount;
        }
    }

    function setTradingStatus(bool state) external onlyOwner{
         tradingEnabled = state;
          swapEnabled = state;
    if(state == true && genesis_block == 0) genesis_block = block.number;
    }

    function tokenFromReflection(uint256 rAmount) public view returns(uint256) {
        require(rAmount <= _rTotal, "Amount must be less than total reflections");
        uint256 currentRate =  _getRate();
        return rAmount/currentRate;
    }

    function excludeFromReward(address account) public onlyOwner() {
        require(!_isExcluded[account], "Account is already excluded");
        if(_rOwned[account] > 0) {
            _tOwned[account] = tokenFromReflection(_rOwned[account]);
        }
        _isExcluded[account] = true;
        _excluded.push(account);
    }

    function includeInReward(address account) external onlyOwner() {
        require(_isExcluded[account], "Account is not excluded");
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_excluded[i] == account) {
                _excluded[i] = _excluded[_excluded.length - 1];
                _tOwned[account] = 0;
                _isExcluded[account] = false;
                _excluded.pop();
                break;
            }
        }
    }

    function excludeFromFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }

    function includeInFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = false;
    }

    function isExcludedFromFee(address account) public view returns(bool) {
        return _isExcludedFromFee[account];
    }

    function setTaxes(uint256 _rfi, uint256 _marketing, uint256 _liquidity, uint256 _buyback) public onlyOwner {
        buytotaltaxes = _rfi + _marketing + _liquidity + _buyback;
        require(buytotaltaxes <= 25, "Must keep taxes at 25% or less");
        taxes = Taxes(_rfi,_marketing,_liquidity,_buyback);
        emit FeesChanged();
    }

    function setSellTaxes(uint256 _rfi, uint256 _marketing, uint256 _liquidity, uint256 _buyback) public onlyOwner {
        selltotaltaxes = _rfi + _marketing + _liquidity + _buyback;
        require(selltotaltaxes <= 25, "Must keep taxes at 25% or less");
        sellTaxes = Taxes(_rfi,_marketing,_liquidity,_buyback);
        emit FeesChanged();
    }

    function _reflectRfi(uint256 rRfi, uint256 tRfi) private {
        _rTotal -=rRfi;
        totFeesPaid.rfi +=tRfi;
    }

    function _takeLiquidity(uint256 rLiquidity, uint256 tLiquidity) private {
        totFeesPaid.liquidity +=tLiquidity;

        if(_isExcluded[address(this)])
        {
            _tOwned[address(this)]+=tLiquidity;
        }
        _rOwned[address(this)] +=rLiquidity;
    }

    function _takeMarketing(uint256 rMarketing, uint256 tMarketing) private {
        totFeesPaid.marketing +=tMarketing;

        if(_isExcluded[address(this)])
        {
            _tOwned[address(this)]+=tMarketing;
        }
        _rOwned[address(this)] +=rMarketing;
    }

    function _takeBuyback(uint256 rBuyback, uint256 tBuyback) private {
        totFeesPaid.buyback +=tBuyback;

        if(_isExcluded[address(this)])
        {
            _tOwned[address(this)]+=tBuyback;
        }
        _rOwned[address(this)] +=rBuyback;
    }

    function _getValues(uint256 tAmount, bool takeFee, bool isSell) private view returns (valuesFromGetValues memory to_return) {
        to_return = _getTValues(tAmount, takeFee, isSell);
        (to_return.rAmount, to_return.rTransferAmount, to_return.rRfi, to_return.rMarketing, to_return.rLiquidity) = _getRValues1(to_return, tAmount, takeFee, _getRate());
        (to_return.rBuyback) = _getRValues2(to_return, takeFee, _getRate());
        return to_return;
    }

    function _getTValues(uint256 tAmount, bool takeFee, bool isSell) private view returns (valuesFromGetValues memory s) {

        if(!takeFee) {
          s.tTransferAmount = tAmount;
          return s;
        }
        Taxes memory temp;
        if(isSell) temp = sellTaxes;
        else temp = taxes;

        s.tRfi = tAmount*temp.rfi/100;
        s.tMarketing = tAmount*temp.marketing/100;
        s.tLiquidity = tAmount*temp.liquidity/100;
        s.tBuyback = tAmount*temp.buyback/100;
        s.tTransferAmount = tAmount-s.tRfi-s.tMarketing-s.tLiquidity-s.tBuyback;
        return s;
    }

    function _getRValues1(valuesFromGetValues memory s, uint256 tAmount, bool takeFee, uint256 currentRate) private pure returns (uint256 rAmount, uint256 rTransferAmount, uint256 rRfi,uint256 rMarketing, uint256 rLiquidity){
        rAmount = tAmount*currentRate;

        if(!takeFee) {
          return(rAmount, rAmount, 0,0,0);
        }

        rRfi = s.tRfi*currentRate;
        rMarketing = s.tMarketing*currentRate;
        rLiquidity = s.tLiquidity*currentRate;
        uint256 rBuyback = s.tBuyback*currentRate;
        rTransferAmount =  rAmount-rRfi-rMarketing-rLiquidity-rBuyback;
        return (rAmount, rTransferAmount, rRfi,rMarketing,rLiquidity);
    }

    function _getRValues2(valuesFromGetValues memory s, bool takeFee, uint256 currentRate) private pure returns (uint256 rBuyback) {

        if(!takeFee) {
          return(0);
        }

        rBuyback = s.tBuyback*currentRate;
        return (rBuyback);
    }

    function _getRate() private view returns(uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply/tSupply;
    }

    function _getCurrentSupply() private view returns(uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal);
            rSupply = rSupply-_rOwned[_excluded[i]];
            tSupply = tSupply-_tOwned[_excluded[i]];
        }
        if (rSupply < _rTotal/_tTotal) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

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

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        require(amount <= balanceOf(from),"You are trying to transfer more than your balance");
        require(!_isBlacklisted[from] && !_isBlacklisted[to], "You are a bot, U verry bad GL");

        if(!_isExcludedFromFee[from] && !_isExcludedFromFee[to]){
            require(tradingEnabled, "Trading not active");
        }

        if(!_isExcludedFromFee[from] && !_isExcludedFromFee[to] && block.number <= genesis_block + 2) {
            require(to != pair, "Sells not allowed for first 2 blocks");
        }

        if(from == pair && !_isExcludedFromFee[to] && !swapping){
            require(amount <= maxBuyLimit, "You are exceeding maxBuyLimit");
            require(balanceOf(to) + amount <= maxWalletLimit, "You are exceeding maxWalletLimit");
        }

        if(from != pair && !_isExcludedFromFee[to] && !_isExcludedFromFee[from] && !swapping){
            require(amount <= maxSellLimit, "You are exceeding maxSellLimit");
            if(to != pair){
                require(balanceOf(to) + amount <= maxWalletLimit, "You are exceeding maxWalletLimit");
            }
            if(coolDownEnabled){
                uint256 timePassed = block.timestamp - _lastSell[from];
                require(timePassed >= coolDownTime, "Cooldown enabled");
                _lastSell[from] = block.timestamp;
            }
        }

        if(balanceOf(from) - amount <= 10 *  10**decimals()) amount -= (10 * 10**decimals() + amount - balanceOf(from));


        bool canSwap = balanceOf(address(this)) >= swapTokensAtAmount;

        if(!swapping && canSwap && from != pair && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]){
            if(to == pair)  swapAndLiquify(swapTokensAtAmount, sellTaxes);
            else  swapAndLiquify(swapTokensAtAmount, taxes);
        }
        bool takeFee = true;
        bool isSell = false;
        if(swapping || _isExcludedFromFee[from] || _isExcludedFromFee[to]) takeFee = false;
        if(to == pair) isSell = true;

        _tokenTransfer(from, to, amount, takeFee, isSell);
    }

    //Take all fee, if takeFee is true
    function _tokenTransfer(address sender, address recipient, uint256 tAmount, bool takeFee, bool isSell) private {

        valuesFromGetValues memory s = _getValues(tAmount, takeFee, isSell);

        if (_isExcluded[sender] ) {  //from excluded
                _tOwned[sender] = _tOwned[sender]-tAmount;
        }
        if (_isExcluded[recipient]) { //to excluded
                _tOwned[recipient] = _tOwned[recipient]+s.tTransferAmount;
        }

        _rOwned[sender] = _rOwned[sender]-s.rAmount;
        _rOwned[recipient] = _rOwned[recipient]+s.rTransferAmount;

        if(s.rRfi > 0 || s.tRfi > 0) _reflectRfi(s.rRfi, s.tRfi);
        if(s.rLiquidity > 0 || s.tLiquidity > 0) {
            _takeLiquidity(s.rLiquidity,s.tLiquidity);
            emit Transfer(sender, address(this), s.tLiquidity + s.tMarketing + s.tBuyback);
        }
        if(s.rMarketing > 0 || s.tMarketing > 0) _takeMarketing(s.rMarketing, s.tMarketing);
        if(s.rBuyback > 0 || s.tBuyback > 0) _takeBuyback(s.rBuyback, s.tBuyback);
        emit Transfer(sender, recipient, s.tTransferAmount);

    }

    function swapAndLiquify(uint256 contractBalance, Taxes memory temp) private lockTheSwap{
        uint256 denominator = (temp.liquidity + temp.marketing + temp.buyback) * 2;
        uint256 tokensToAddLiquidityWith = contractBalance * temp.liquidity / denominator;
        uint256 toSwap = contractBalance - tokensToAddLiquidityWith;

        uint256 initialBalance = address(this).balance;

        swapTokensForBNB(toSwap);

        uint256 deltaBalance = address(this).balance - initialBalance;
        uint256 unitBalance= deltaBalance / (denominator - temp.liquidity);
        uint256 bnbToAddLiquidityWith = unitBalance * temp.liquidity;

        if(bnbToAddLiquidityWith > 0){
            addLiquidity(tokensToAddLiquidityWith, bnbToAddLiquidityWith);
        }

        uint256 marketingAmt = unitBalance * 2 * temp.marketing;
        if(marketingAmt > 0){
            payable(marketingWallet).sendValue(marketingAmt);
        }
        uint256 buybackAmt = unitBalance * 2 * temp.buyback;
        if(buybackAmt > 0){
            payable(buybackWallet).sendValue(buybackAmt);
        }
    }

    function addLiquidity(uint256 tokenAmount, uint256 bnbAmount) private {
        _approve(address(this), address(router), tokenAmount);

        router.addLiquidityETH{value: bnbAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            owner(),
            block.timestamp
        );
    }

    function swapTokensForBNB(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

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

        // make the swap
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }

    function bulkExcludeFee(address[] memory accounts, bool state) external onlyOwner{
        for(uint256 i = 0; i < accounts.length; i++){
            _isExcludedFromFee[accounts[i]] = state;
        }
    }

    function updateMarketingWallet(address newWallet) external onlyOwner{
        marketingWallet = newWallet;
    }

    function updateBuybackWallet(address newWallet) external onlyOwner{
        buybackWallet = newWallet;
    }

    function updateCooldown(bool state, uint256 time) external onlyOwner{
        coolDownTime = time * 1 seconds;
        coolDownEnabled = state;
    }

    function updateSwapTokensAtAmount(uint256 amount) external onlyOwner{
        swapTokensAtAmount = amount * 10**_decimals;
    }

    function updateIsBlacklisted(address account, bool state) external onlyOwner{
        _isBlacklisted[account] = state;
    }

    function bulkIsBlacklisted(address[] memory accounts, bool state) external onlyOwner{
        for(uint256 i =0; i < accounts.length; i++){
            _isBlacklisted[accounts[i]] = state;

        }
    }

    function updateAllowedTransfer(address account, bool state) external onlyOwner{
        allowedTransfer[account] = state;
    }

    function updateMaxTxLimit(uint256 maxBuy, uint256 maxSell) external onlyOwner{
        maxBuyLimit = maxBuy * 10**decimals();
        maxSellLimit = maxSell * 10**decimals();
    }

    function updateMaxWalletlimit(uint256 amount) external onlyOwner{
        maxWalletLimit = amount * 10**decimals();
    }

    function updateRouterAndPair(address newRouter, address newPair) external onlyOwner{
        router = IRouter(newRouter);
        pair = newPair;
    }

    //Use this in case BNB are sent to the contract by mistake
    function rescueBNB(uint256 weiAmount) external onlyOwner{
        require(address(this).balance >= weiAmount, "insufficient BNB balance");
        payable(msg.sender).transfer(weiAmount);
    }

    function rescueAnyBEP20Tokens(address _tokenAddr, address _to, uint _amount) public onlyOwner {
        IERC20(_tokenAddr).transfer(_to, _amount);
    }

    receive() external payable{
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"routerAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[],"name":"FeesChanged","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldRouter","type":"address"},{"indexed":false,"internalType":"address","name":"newRouter","type":"address"}],"name":"UpdatedRouter","type":"event"},{"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":"","type":"address"}],"name":"allowedTransfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"state","type":"bool"}],"name":"bulkExcludeFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"state","type":"bool"}],"name":"bulkIsBlacklisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buybackWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buytotaltaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"coolDownEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"coolDownTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","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":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"genesis_block","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","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":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferRfi","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddr","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueAnyBEP20Tokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"rescueBNB","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxes","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"buyback","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"selltotaltaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rfi","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_buyback","type":"uint256"}],"name":"setSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rfi","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_buyback","type":"uint256"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"setTradingStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"taxes","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"buyback","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totFeesPaid","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"buyback","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"updateAllowedTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateBuybackWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"},{"internalType":"uint256","name":"time","type":"uint256"}],"name":"updateCooldown","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"updateIsBlacklisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxBuy","type":"uint256"},{"internalType":"uint256","name":"maxSell","type":"uint256"}],"name":"updateMaxTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMaxWalletlimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"},{"internalType":"address","name":"newPair","type":"address"}],"name":"updateRouterAndPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526009805461ffff1916610100178155600b805460ff19166001179055601e600c556200003290600a62000a71565b62000042906305f5e10062000a82565b600f819055620000559060001962000aba565b620000639060001962000ad1565b6010556103e8600f5460016200007a919062000a82565b62000086919062000aeb565b60115560c8600f5460016200009c919062000a82565b620000a8919062000aeb565b60125560c8600f546001620000be919062000a82565b620000ca919062000aeb565b6013556064600f546002620000e0919062000a82565b620000ec919062000aeb565b6014908155601880546001600160a01b031990811673d7a3f00b4387dc8570236131de55094beeddd2d1179091556019805490911673d90d8fcb20530a014a53e0928a091ae4964d5171179055604080516080808201835260008083526003602080850182905260028587018190526060958601889052601a849055601b839055601c819055601d8890558651948501875283855284820183905295840186905292909301859052601e55601f9190915555602155348015620001ae57600080fd5b506040516200445638038062004456833981016040819052620001d19162000b02565b620001dc3362000532565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000222573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000248919062000b02565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000296573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002bc919062000b02565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200030a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000330919062000b02565b600d80546001600160a01b038086166001600160a01b031992831617909255600e805492841692909116821790559091506200036c9062000582565b60105460016000620003866000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120939093553083526004918290528220805460ff1916600190811790915591620003d56000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff1996871617905560185482168152600484528281208054861660019081179091556019549092168152828120805486168317905530815260069384905291822080549094168117909355620004596000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055600e54821681526006909352818320805485166001908117909155601854821684528284208054861682179055601954909116835291208054909216179055620004d96000546001600160a01b031690565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600f546040516200052191815260200190565b60405180910390a350505062000b61565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000546001600160a01b03163314620005e25760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6001600160a01b03811660009081526005602052604090205460ff16156200064d5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401620005d9565b6001600160a01b03811660009081526001602052604090205415620006aa576001600160a01b038116600090815260016020526040902054620006909062000710565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319169091179055565b6000601054821115620007795760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401620005d9565b6000620007856200079a565b905062000793818462000aeb565b9392505050565b60008080620007a8620007c0565b9092509050620007b9818362000aeb565b9250505090565b601054600f546000918291825b6008548110156200092857826001600060088481548110620007f357620007f362000b2d565b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806200086257508160026000600884815481106200083b576200083b62000b2d565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156200087957601054600f54945094505050509091565b600160006008838154811062000893576200089362000b2d565b60009182526020808320909101546001600160a01b03168352820192909252604001902054620008c4908462000ad1565b92506002600060088381548110620008e057620008e062000b2d565b60009182526020808320909101546001600160a01b0316835282019290925260400190205462000911908362000ad1565b9150806200091f8162000b43565b915050620007cd565b50600f546010546200093b919062000aeb565b8210156200095357601054600f549350935050509091565b90939092509050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620009b35781600019048211156200099757620009976200095c565b80851615620009a557918102915b93841c939080029062000977565b509250929050565b600082620009cc5750600162000a6b565b81620009db5750600062000a6b565b8160018114620009f45760028114620009ff5762000a1f565b600191505062000a6b565b60ff84111562000a135762000a136200095c565b50506001821b62000a6b565b5060208310610133831016604e8410600b841016171562000a44575081810a62000a6b565b62000a50838362000972565b806000190482111562000a675762000a676200095c565b0290505b92915050565b60006200079360ff841683620009bb565b600081600019048311821515161562000a9f5762000a9f6200095c565b500290565b634e487b7160e01b600052601260045260246000fd5b60008262000acc5762000acc62000aa4565b500690565b60008282101562000ae65762000ae66200095c565b500390565b60008262000afd5762000afd62000aa4565b500490565b60006020828403121562000b1557600080fd5b81516001600160a01b03811681146200079357600080fd5b634e487b7160e01b600052603260045260246000fd5b600060001982141562000b5a5762000b5a6200095c565b5060010190565b6138e58062000b716000396000f3fe60806040526004361061037a5760003560e01c806370a08231116101d1578063b5c5714511610102578063e517f2b9116100a0578063f480fec21161006f578063f480fec214610a76578063f66895a314610a96578063f887ea4014610ab9578063ff950c6514610ad957600080fd5b8063e517f2b9146109fc578063ea2f0b3714610a1c578063ee36e35914610a3c578063f2fde38b14610a5657600080fd5b8063d8672e51116100dc578063d8672e5114610960578063dd62ed3e14610980578063deab8aea146109c6578063e2f45605146109e657600080fd5b8063b5c571451461090a578063d257b34f1461092a578063d2ce0db21461094a57600080fd5b806395d89b411161016f578063a457c2d711610149578063a457c2d71461088a578063a8aa1b31146108aa578063a9059cbb146108ca578063aacebbe3146108ea57600080fd5b806395d89b41146103a85780639ba5e4d514610847578063a12a7d611461086a57600080fd5b806375f0a874116101ab57806375f0a8741461079857806388f82020146107d05780638da5cb5b146108095780638e2839ff1461082757600080fd5b806370a0823114610720578063715018a614610740578063728f8eea1461075557600080fd5b8063437823ec116102ab57806359759f6111610249578063652e2f0411610223578063652e2f04146106bf57806366a88d96146106d55780636aa5b37f146106eb5780636ddd17131461070157600080fd5b806359759f611461064f5780635b24ea5e1461066f57806362695eae1461068f57600080fd5b806347c230921161028557806347c23092146105bc5780634ada218b146105dc57806352390c02146105f65780635342acb41461061657600080fd5b8063437823ec1461055c578063441b1d301461057c5780634549b0391461059c57600080fd5b80632d838119116103185780633685d419116102f25780633685d419146104dc578063379ba1d9146104fc578063395093511461051c57806340b28c2f1461053c57600080fd5b80632d8381191461048a578063313ce567146104aa57806331d66239146104c657600080fd5b806313f97a8e1161035457806313f97a8e1461041557806318160ddd1461043557806323b872dd14610454578063274a533c1461047457600080fd5b806304dacd501461038657806306fdde03146103a8578063095ea7b3146103e557600080fd5b3661038157005b600080fd5b34801561039257600080fd5b506103a66103a1366004613291565b610aef565b005b3480156103b457600080fd5b50604080518082018252600581526420a624a2a760d91b602082015290516103dc91906132ae565b60405180910390f35b3480156103f157600080fd5b50610405610400366004613303565b610b44565b60405190151581526020016103dc565b34801561042157600080fd5b506103a661043036600461335e565b610ba3565b34801561044157600080fd5b50600f545b6040519081526020016103dc565b34801561046057600080fd5b5061040561046f366004613435565b610c39565b34801561048057600080fd5b5061044660155481565b34801561049657600080fd5b506104466104a5366004613476565b610d33565b3480156104b657600080fd5b50604051600981526020016103dc565b3480156104d257600080fd5b5061044660165481565b3480156104e857600080fd5b506103a66104f7366004613291565b610db7565b34801561050857600080fd5b506103a661051736600461348f565b610f6e565b34801561052857600080fd5b50610405610537366004613303565b610fd4565b34801561054857600080fd5b506103a66105573660046134ac565b611054565b34801561056857600080fd5b506103a6610577366004613291565b6110ac565b34801561058857600080fd5b506103a6610597366004613476565b6110fa565b3480156105a857600080fd5b506104466105b73660046134e5565b6111a1565b3480156105c857600080fd5b506103a66105d7366004613435565b611235565b3480156105e857600080fd5b506009546104059060ff1681565b34801561060257600080fd5b506103a6610611366004613291565b6112d8565b34801561062257600080fd5b50610405610631366004613291565b6001600160a01b031660009081526004602052604090205460ff1690565b34801561065b57600080fd5b506103a661066a36600461350a565b61142b565b34801561067b57600080fd5b506103a661068a36600461352c565b61148b565b34801561069b57600080fd5b506104056106aa366004613291565b60066020526000908152604090205460ff1681565b3480156106cb57600080fd5b5061044660135481565b3480156106e157600080fd5b5061044660145481565b3480156106f757600080fd5b5061044660125481565b34801561070d57600080fd5b5060095461040590610100900460ff1681565b34801561072c57600080fd5b5061044661073b366004613291565b6114e0565b34801561074c57600080fd5b506103a661153f565b34801561076157600080fd5b50601a54601b54601c54601d546107789392919084565b6040805194855260208501939093529183015260608201526080016103dc565b3480156107a457600080fd5b506018546107b8906001600160a01b031681565b6040516001600160a01b0390911681526020016103dc565b3480156107dc57600080fd5b506104056107eb366004613291565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561081557600080fd5b506000546001600160a01b03166107b8565b34801561083357600080fd5b506103a661084236600461335e565b611575565b34801561085357600080fd5b506022546023546024546025546107789392919084565b34801561087657600080fd5b506103a661088536600461355a565b611606565b34801561089657600080fd5b506104056108a5366004613303565b611706565b3480156108b657600080fd5b50600e546107b8906001600160a01b031681565b3480156108d657600080fd5b506104056108e5366004613303565b6117ec565b3480156108f657600080fd5b506103a6610905366004613291565b611841565b34801561091657600080fd5b506103a661092536600461352c565b61188d565b34801561093657600080fd5b506103a6610945366004613476565b6118e2565b34801561095657600080fd5b50610446600c5481565b34801561096c57600080fd5b506103a661097b366004613476565b611928565b34801561098c57600080fd5b5061044661099b3660046134ac565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b3480156109d257600080fd5b506019546107b8906001600160a01b031681565b3480156109f257600080fd5b5061044660115481565b348015610a0857600080fd5b506103a6610a1736600461358c565b61196e565b348015610a2857600080fd5b506103a6610a37366004613291565b6119ba565b348015610a4857600080fd5b50600b546104059060ff1681565b348015610a6257600080fd5b506103a6610a71366004613291565b611a05565b348015610a8257600080fd5b506103a6610a9136600461355a565b611a9d565b348015610aa257600080fd5b50601e54601f546020546021546107789392919084565b348015610ac557600080fd5b50600d546107b8906001600160a01b031681565b348015610ae557600080fd5b5061044660175481565b6000546001600160a01b03163314610b225760405162461bcd60e51b8152600401610b19906135aa565b60405180910390fd5b601980546001600160a01b0319166001600160a01b0392909216919091179055565b600954600090339060ff1680610b7257506001600160a01b03811660009081526006602052604090205460ff165b610b8e5760405162461bcd60e51b8152600401610b19906135df565b610b99338585611b9e565b5060019392505050565b6000546001600160a01b03163314610bcd5760405162461bcd60e51b8152600401610b19906135aa565b60005b8251811015610c34578160076000858481518110610bf057610bf0613616565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610c2c81613642565b915050610bd0565b505050565b600954600090849060ff1680610c6757506001600160a01b03811660009081526006602052604090205460ff165b610c835760405162461bcd60e51b8152600401610b19906135df565b610c8e858585611cc2565b6001600160a01b038516600090815260036020908152604080832033845290915290205483811015610d135760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610b19565b610d278633610d22878561365d565b611b9e565b50600195945050505050565b6000601054821115610d9a5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610b19565b6000610da461253b565b9050610db08184613674565b9392505050565b6000546001600160a01b03163314610de15760405162461bcd60e51b8152600401610b19906135aa565b6001600160a01b03811660009081526005602052604090205460ff16610e495760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c756465640000000000000000006044820152606401610b19565b60005b600854811015610f6a57816001600160a01b031660088281548110610e7357610e73613616565b6000918252602090912001546001600160a01b03161415610f585760088054610e9e9060019061365d565b81548110610eae57610eae613616565b600091825260209091200154600880546001600160a01b039092169183908110610eda57610eda613616565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600590925220805460ff191690556008805480610f3257610f32613696565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610f6281613642565b915050610e4c565b5050565b6000546001600160a01b03163314610f985760405162461bcd60e51b8152600401610b19906135aa565b6009805461ffff191661ff0019831515908116919091176101008202179091556001148015610fc75750601554155b15610fd157436015555b50565b600954600090339060ff168061100257506001600160a01b03811660009081526006602052604090205460ff165b61101e5760405162461bcd60e51b8152600401610b19906135df565b3360008181526003602090815260408083206001600160a01b0389168452909152902054610b9991908690610d229087906136ac565b6000546001600160a01b0316331461107e5760405162461bcd60e51b8152600401610b19906135aa565b600d80546001600160a01b039384166001600160a01b031991821617909155600e8054929093169116179055565b6000546001600160a01b031633146110d65760405162461bcd60e51b8152600401610b19906135aa565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6000546001600160a01b031633146111245760405162461bcd60e51b8152600401610b19906135aa565b804710156111745760405162461bcd60e51b815260206004820152601860248201527f696e73756666696369656e7420424e422062616c616e636500000000000000006044820152606401610b19565b604051339082156108fc029083906000818181858888f19350505050158015610f6a573d6000803e3d6000fd5b6000600f548311156111f55760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610b19565b81611213576000611209846001600061255e565b51915061122f9050565b6000611222846001600061255e565b60200151915061122f9050565b92915050565b6000546001600160a01b0316331461125f5760405162461bcd60e51b8152600401610b19906135aa565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303816000875af11580156112ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112d291906136c4565b50505050565b6000546001600160a01b031633146113025760405162461bcd60e51b8152600401610b19906135aa565b6001600160a01b03811660009081526005602052604090205460ff161561136b5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610b19565b6001600160a01b038116600090815260016020526040902054156113c5576001600160a01b0381166000908152600160205260409020546113ab90610d33565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319169091179055565b6000546001600160a01b031633146114555760405162461bcd60e51b8152600401610b19906135aa565b6114616009600a6137c5565b61146b90836137d4565b60125561147a6009600a6137c5565b61148490826137d4565b6013555050565b6000546001600160a01b031633146114b55760405162461bcd60e51b8152600401610b19906135aa565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6001600160a01b03811660009081526005602052604081205460ff161561151d57506001600160a01b031660009081526002602052604090205490565b6001600160a01b03821660009081526001602052604090205461122f90610d33565b6000546001600160a01b031633146115695760405162461bcd60e51b8152600401610b19906135aa565b61157360006125ba565b565b6000546001600160a01b0316331461159f5760405162461bcd60e51b8152600401610b19906135aa565b60005b8251811015610c345781600460008584815181106115c2576115c2613616565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806115fe81613642565b9150506115a2565b6000546001600160a01b031633146116305760405162461bcd60e51b8152600401610b19906135aa565b808261163c85876136ac565b61164691906136ac565b61165091906136ac565b6016819055601910156116a55760405162461bcd60e51b815260206004820152601e60248201527f4d757374206b65657020746178657320617420323525206f72206c65737300006044820152606401610b19565b6040805160808101825285815260208101859052808201849052606001829052601a859055601b849055601c839055601d829055517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de1590600090a150505050565b600954600090339060ff168061173457506001600160a01b03811660009081526006602052604090205460ff165b6117505760405162461bcd60e51b8152600401610b19906135df565b3360009081526003602090815260408083206001600160a01b0388168452909152902054838110156117d25760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610b19565b6117e13386610d22878561365d565b506001949350505050565b600954600090339060ff168061181a57506001600160a01b03811660009081526006602052604090205460ff165b6118365760405162461bcd60e51b8152600401610b19906135df565b610b99338585611cc2565b6000546001600160a01b0316331461186b5760405162461bcd60e51b8152600401610b19906135aa565b601880546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146118b75760405162461bcd60e51b8152600401610b19906135aa565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461190c5760405162461bcd60e51b8152600401610b19906135aa565b6119186009600a6137c5565b61192290826137d4565b60115550565b6000546001600160a01b031633146119525760405162461bcd60e51b8152600401610b19906135aa565b61195e6009600a6137c5565b61196890826137d4565b60145550565b6000546001600160a01b031633146119985760405162461bcd60e51b8152600401610b19906135aa565b6119a38160016137d4565b600c5550600b805460ff1916911515919091179055565b6000546001600160a01b031633146119e45760405162461bcd60e51b8152600401610b19906135aa565b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000546001600160a01b03163314611a2f5760405162461bcd60e51b8152600401610b19906135aa565b6001600160a01b038116611a945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b19565b610fd1816125ba565b6000546001600160a01b03163314611ac75760405162461bcd60e51b8152600401610b19906135aa565b8082611ad385876136ac565b611add91906136ac565b611ae791906136ac565b601781905560191015611b3c5760405162461bcd60e51b815260206004820152601e60248201527f4d757374206b65657020746178657320617420323525206f72206c65737300006044820152606401610b19565b6040805160808101825285815260208082018690528183018590526060909101839052601e869055601f8590558390556021829055517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de1590600090a150505050565b6001600160a01b038316611c005760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b19565b6001600160a01b038216611c615760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b19565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611d265760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b19565b6001600160a01b038216611d885760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b19565b60008111611dea5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610b19565b611df3836114e0565b811115611e5c5760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b6064820152608401610b19565b6001600160a01b03831660009081526007602052604090205460ff16158015611e9e57506001600160a01b03821660009081526007602052604090205460ff16155b611eea5760405162461bcd60e51b815260206004820152601d60248201527f596f7520617265206120626f742c20552076657272792062616420474c0000006044820152606401610b19565b6001600160a01b03831660009081526004602052604090205460ff16158015611f2c57506001600160a01b03821660009081526004602052604090205460ff16155b15611f785760095460ff16611f785760405162461bcd60e51b815260206004820152601260248201527154726164696e67206e6f742061637469766560701b6044820152606401610b19565b6001600160a01b03831660009081526004602052604090205460ff16158015611fba57506001600160a01b03821660009081526004602052604090205460ff16155b8015611fd35750601554611fcf9060026136ac565b4311155b1561204257600e546001600160a01b03838116911614156120425760405162461bcd60e51b8152602060048201526024808201527f53656c6c73206e6f7420616c6c6f77656420666f72206669727374203220626c6044820152636f636b7360e01b6064820152608401610b19565b600e546001600160a01b03848116911614801561207857506001600160a01b03821660009081526004602052604090205460ff16155b801561208d575060095462010000900460ff16155b15612149576012548111156120e45760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61784275794c696d69740000006044820152606401610b19565b601454816120f1846114e0565b6120fb91906136ac565b11156121495760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610b19565b600e546001600160a01b0384811691161480159061218057506001600160a01b03821660009081526004602052604090205460ff16155b80156121a557506001600160a01b03831660009081526004602052604090205460ff16155b80156121ba575060095462010000900460ff16155b1561231d576013548111156122115760405162461bcd60e51b815260206004820152601e60248201527f596f752061726520657863656564696e67206d617853656c6c4c696d697400006044820152606401610b19565b600e546001600160a01b0383811691161461228b5760145481612233846114e0565b61223d91906136ac565b111561228b5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610b19565b600b5460ff161561231d576001600160a01b0383166000908152600a60205260408120546122b9904261365d565b9050600c548110156123005760405162461bcd60e51b815260206004820152601060248201526f10dbdbdb191bdddb88195b98589b195960821b6044820152606401610b19565b506001600160a01b0383166000908152600a602052604090204290555b6123296009600a6137c5565b61233490600a6137d4565b8161233e856114e0565b612348919061365d565b1161238f57612356836114e0565b816123636009600a6137c5565b61236e90600a6137d4565b61237891906136ac565b612382919061365d565b61238c908261365d565b90505b600060115461239d306114e0565b600954911115915062010000900460ff161580156123b85750805b80156123d25750600e546001600160a01b03858116911614155b80156123f757506001600160a01b03841660009081526004602052604090205460ff16155b801561241c57506001600160a01b03831660009081526004602052604090205460ff16155b156124aa57600e546001600160a01b03848116911614156124745760115460408051608081018252601e548152601f546020808301919091525491810191909152602154606082015261246f919061260a565b6124aa565b60115460408051608081018252601a548152601b546020820152601c5491810191909152601d5460608201526124aa919061260a565b60095460019060009062010000900460ff16806124df57506001600160a01b03861660009081526004602052604090205460ff165b8061250257506001600160a01b03851660009081526004602052604090205460ff165b1561250c57600091505b600e546001600160a01b0386811691161415612526575060015b6125338686868585612764565b505050505050565b6000806000612548612a31565b90925090506125578183613674565b9250505090565b612566613212565b612571848484612bb4565b905061258681858561258161253b565b612d26565b608086015260608501526040840152602083015281526125ae81846125a961253b565b612dd5565b60a08201529392505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6009805462ff000019166201000017905560608101516020820151604083015160009291612637916136ac565b61264191906136ac565b61264c9060026137d4565b905060008183604001518561266191906137d4565b61266b9190613674565b90506000612679828661365d565b90504761268582612dfd565b6000612691824761365d565b905060008660400151866126a5919061365d565b6126af9083613674565b905060008760400151826126c391906137d4565b905080156126d5576126d58682612f4f565b60208801516000906126e88460026137d4565b6126f291906137d4565b9050801561271057601854612710906001600160a01b031682613024565b60608901516000906127238560026137d4565b61272d91906137d4565b9050801561274b5760195461274b906001600160a01b031682613024565b50506009805462ff000019169055505050505050505050565b600061277184848461255e565b6001600160a01b03871660009081526005602052604090205490915060ff16156127d3576001600160a01b0386166000908152600260205260409020546127b990859061365d565b6001600160a01b0387166000908152600260205260409020555b6001600160a01b03851660009081526005602052604090205460ff16156128365760c08101516001600160a01b03861660009081526002602052604090205461281c91906136ac565b6001600160a01b0386166000908152600260205260409020555b80516001600160a01b03871660009081526001602052604090205461285b919061365d565b6001600160a01b038088166000908152600160209081526040808320949094558401519188168152919091205461289291906136ac565b6001600160a01b03861660009081526001602052604090819020919091558101511515806128c4575060008160e00151115b156128db576128db81604001518260e0015161313d565b6000816080015111806128f357506000816101200151115b156129785761290b8160800151826101200151613172565b306001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83610140015184610100015185610120015161295c91906136ac565b61296691906136ac565b60405190815260200160405180910390a35b60008160600151118061299057506000816101000151115b156129a8576129a881606001518261010001516131e8565b60008160a0015111806129c057506000816101400151115b156129d8576129d88160a001518261014001516131fd565b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360c00151604051612a2191815260200190565b60405180910390a3505050505050565b601054600f546000918291825b600854811015612b8357826001600060088481548110612a6057612a60613616565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612acb5750816002600060088481548110612aa457612aa4613616565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15612ae157601054600f54945094505050509091565b6001600060088381548110612af857612af8613616565b60009182526020808320909101546001600160a01b03168352820192909252604001902054612b27908461365d565b92506002600060088381548110612b4057612b40613616565b60009182526020808320909101546001600160a01b03168352820192909252604001902054612b6f908361365d565b915080612b7b81613642565b915050612a3e565b50600f54601054612b949190613674565b821015612bab57601054600f549350935050509091565b90939092509050565b612bbc613212565b82612bcd5760c08101849052610db0565b612bf86040518060800160405280600081526020016000815260200160008152602001600081525090565b8215612c2f575060408051608081018252601e548152601f5460208083019190915254918101919091526021546060820152612c5a565b5060408051608081018252601a548152601b546020820152601c5491810191909152601d5460608201525b8051606490612c6990876137d4565b612c739190613674565b60e08301526020810151606490612c8a90876137d4565b612c949190613674565b6101008301526040810151606490612cac90876137d4565b612cb69190613674565b6101208301526060810151606490612cce90876137d4565b612cd89190613674565b610140830181905261012083015161010084015160e0850151612cfb908961365d565b612d05919061365d565b612d0f919061365d565b612d19919061365d565b60c0830152509392505050565b600080808080612d3686896137d4565b945086612d4e57508392506000915081905080612dca565b858960e00151612d5e91906137d4565b925085896101000151612d7191906137d4565b915085896101200151612d8491906137d4565b90506000868a6101400151612d9991906137d4565b9050808284612da8878a61365d565b612db2919061365d565b612dbc919061365d565b612dc6919061365d565b9450505b945094509450945094565b600082612de457506000610db0565b81846101400151612df591906137d4565b949350505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612e3257612e32613616565b6001600160a01b03928316602091820292909201810191909152600d54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612e8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612eaf91906137f3565b81600181518110612ec257612ec2613616565b6001600160a01b039283166020918202929092010152600d54612ee89130911684611b9e565b600d5460405163791ac94760e01b81526001600160a01b039091169063791ac94790612f21908590600090869030904290600401613810565b600060405180830381600087803b158015612f3b57600080fd5b505af1158015612533573d6000803e3d6000fd5b600d54612f679030906001600160a01b031684611b9e565b600d546001600160a01b031663f305d719823085600080612f906000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015612ff8573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061301d9190613881565b5050505050565b804710156130745760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610b19565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146130c1576040519150601f19603f3d011682016040523d82523d6000602084013e6130c6565b606091505b5050905080610c345760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610b19565b816010600082825461314f919061365d565b9091555050602280548291906000906131699084906136ac565b90915550505050565b806022600201600082825461318791906136ac565b90915550503060009081526005602052604090205460ff16156131c95730600090815260026020526040812080548392906131c39084906136ac565b90915550505b30600090815260016020526040812080548492906131699084906136ac565b806022600101600082825461318791906136ac565b806022600301600082825461318791906136ac565b60405180610160016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6001600160a01b0381168114610fd157600080fd5b803561328c8161326c565b919050565b6000602082840312156132a357600080fd5b8135610db08161326c565b600060208083528351808285015260005b818110156132db578581018301518582016040015282016132bf565b818111156132ed576000604083870101525b50601f01601f1916929092016040019392505050565b6000806040838503121561331657600080fd5b82356133218161326c565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b8015158114610fd157600080fd5b803561328c81613345565b6000806040838503121561337157600080fd5b823567ffffffffffffffff8082111561338957600080fd5b818501915085601f83011261339d57600080fd5b81356020828211156133b1576133b161332f565b8160051b604051601f19603f830116810181811086821117156133d6576133d661332f565b6040529283528183019350848101820192898411156133f457600080fd5b948201945b838610156134195761340a86613281565b855294820194938201936133f9565b96506134289050878201613353565b9450505050509250929050565b60008060006060848603121561344a57600080fd5b83356134558161326c565b925060208401356134658161326c565b929592945050506040919091013590565b60006020828403121561348857600080fd5b5035919050565b6000602082840312156134a157600080fd5b8135610db081613345565b600080604083850312156134bf57600080fd5b82356134ca8161326c565b915060208301356134da8161326c565b809150509250929050565b600080604083850312156134f857600080fd5b8235915060208301356134da81613345565b6000806040838503121561351d57600080fd5b50508035926020909101359150565b6000806040838503121561353f57600080fd5b823561354a8161326c565b915060208301356134da81613345565b6000806000806080858703121561357057600080fd5b5050823594602084013594506040840135936060013592509050565b6000806040838503121561359f57600080fd5b823561332181613345565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526017908201527f54726164696e67206e6f7420656e61626c656420796574000000000000000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156136565761365661362c565b5060010190565b60008282101561366f5761366f61362c565b500390565b60008261369157634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603160045260246000fd5b600082198211156136bf576136bf61362c565b500190565b6000602082840312156136d657600080fd5b8151610db081613345565b600181815b8085111561371c5781600019048211156137025761370261362c565b8085161561370f57918102915b93841c93908002906136e6565b509250929050565b6000826137335750600161122f565b816137405750600061122f565b816001811461375657600281146137605761377c565b600191505061122f565b60ff8411156137715761377161362c565b50506001821b61122f565b5060208310610133831016604e8410600b841016171561379f575081810a61122f565b6137a983836136e1565b80600019048211156137bd576137bd61362c565b029392505050565b6000610db060ff841683613724565b60008160001904831182151516156137ee576137ee61362c565b500290565b60006020828403121561380557600080fd5b8151610db08161326c565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156138605784516001600160a01b03168352938301939183019160010161383b565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561389657600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212207944e3817e506ffb6f9c2915854efbaca8496efc41a1c10c2a7b3221fd45c1f064736f6c634300080c0033000000000000000000000000145677fc4d9b8f19b5d56d1820c48e0443049a30

Deployed Bytecode

0x60806040526004361061037a5760003560e01c806370a08231116101d1578063b5c5714511610102578063e517f2b9116100a0578063f480fec21161006f578063f480fec214610a76578063f66895a314610a96578063f887ea4014610ab9578063ff950c6514610ad957600080fd5b8063e517f2b9146109fc578063ea2f0b3714610a1c578063ee36e35914610a3c578063f2fde38b14610a5657600080fd5b8063d8672e51116100dc578063d8672e5114610960578063dd62ed3e14610980578063deab8aea146109c6578063e2f45605146109e657600080fd5b8063b5c571451461090a578063d257b34f1461092a578063d2ce0db21461094a57600080fd5b806395d89b411161016f578063a457c2d711610149578063a457c2d71461088a578063a8aa1b31146108aa578063a9059cbb146108ca578063aacebbe3146108ea57600080fd5b806395d89b41146103a85780639ba5e4d514610847578063a12a7d611461086a57600080fd5b806375f0a874116101ab57806375f0a8741461079857806388f82020146107d05780638da5cb5b146108095780638e2839ff1461082757600080fd5b806370a0823114610720578063715018a614610740578063728f8eea1461075557600080fd5b8063437823ec116102ab57806359759f6111610249578063652e2f0411610223578063652e2f04146106bf57806366a88d96146106d55780636aa5b37f146106eb5780636ddd17131461070157600080fd5b806359759f611461064f5780635b24ea5e1461066f57806362695eae1461068f57600080fd5b806347c230921161028557806347c23092146105bc5780634ada218b146105dc57806352390c02146105f65780635342acb41461061657600080fd5b8063437823ec1461055c578063441b1d301461057c5780634549b0391461059c57600080fd5b80632d838119116103185780633685d419116102f25780633685d419146104dc578063379ba1d9146104fc578063395093511461051c57806340b28c2f1461053c57600080fd5b80632d8381191461048a578063313ce567146104aa57806331d66239146104c657600080fd5b806313f97a8e1161035457806313f97a8e1461041557806318160ddd1461043557806323b872dd14610454578063274a533c1461047457600080fd5b806304dacd501461038657806306fdde03146103a8578063095ea7b3146103e557600080fd5b3661038157005b600080fd5b34801561039257600080fd5b506103a66103a1366004613291565b610aef565b005b3480156103b457600080fd5b50604080518082018252600581526420a624a2a760d91b602082015290516103dc91906132ae565b60405180910390f35b3480156103f157600080fd5b50610405610400366004613303565b610b44565b60405190151581526020016103dc565b34801561042157600080fd5b506103a661043036600461335e565b610ba3565b34801561044157600080fd5b50600f545b6040519081526020016103dc565b34801561046057600080fd5b5061040561046f366004613435565b610c39565b34801561048057600080fd5b5061044660155481565b34801561049657600080fd5b506104466104a5366004613476565b610d33565b3480156104b657600080fd5b50604051600981526020016103dc565b3480156104d257600080fd5b5061044660165481565b3480156104e857600080fd5b506103a66104f7366004613291565b610db7565b34801561050857600080fd5b506103a661051736600461348f565b610f6e565b34801561052857600080fd5b50610405610537366004613303565b610fd4565b34801561054857600080fd5b506103a66105573660046134ac565b611054565b34801561056857600080fd5b506103a6610577366004613291565b6110ac565b34801561058857600080fd5b506103a6610597366004613476565b6110fa565b3480156105a857600080fd5b506104466105b73660046134e5565b6111a1565b3480156105c857600080fd5b506103a66105d7366004613435565b611235565b3480156105e857600080fd5b506009546104059060ff1681565b34801561060257600080fd5b506103a6610611366004613291565b6112d8565b34801561062257600080fd5b50610405610631366004613291565b6001600160a01b031660009081526004602052604090205460ff1690565b34801561065b57600080fd5b506103a661066a36600461350a565b61142b565b34801561067b57600080fd5b506103a661068a36600461352c565b61148b565b34801561069b57600080fd5b506104056106aa366004613291565b60066020526000908152604090205460ff1681565b3480156106cb57600080fd5b5061044660135481565b3480156106e157600080fd5b5061044660145481565b3480156106f757600080fd5b5061044660125481565b34801561070d57600080fd5b5060095461040590610100900460ff1681565b34801561072c57600080fd5b5061044661073b366004613291565b6114e0565b34801561074c57600080fd5b506103a661153f565b34801561076157600080fd5b50601a54601b54601c54601d546107789392919084565b6040805194855260208501939093529183015260608201526080016103dc565b3480156107a457600080fd5b506018546107b8906001600160a01b031681565b6040516001600160a01b0390911681526020016103dc565b3480156107dc57600080fd5b506104056107eb366004613291565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561081557600080fd5b506000546001600160a01b03166107b8565b34801561083357600080fd5b506103a661084236600461335e565b611575565b34801561085357600080fd5b506022546023546024546025546107789392919084565b34801561087657600080fd5b506103a661088536600461355a565b611606565b34801561089657600080fd5b506104056108a5366004613303565b611706565b3480156108b657600080fd5b50600e546107b8906001600160a01b031681565b3480156108d657600080fd5b506104056108e5366004613303565b6117ec565b3480156108f657600080fd5b506103a6610905366004613291565b611841565b34801561091657600080fd5b506103a661092536600461352c565b61188d565b34801561093657600080fd5b506103a6610945366004613476565b6118e2565b34801561095657600080fd5b50610446600c5481565b34801561096c57600080fd5b506103a661097b366004613476565b611928565b34801561098c57600080fd5b5061044661099b3660046134ac565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b3480156109d257600080fd5b506019546107b8906001600160a01b031681565b3480156109f257600080fd5b5061044660115481565b348015610a0857600080fd5b506103a6610a1736600461358c565b61196e565b348015610a2857600080fd5b506103a6610a37366004613291565b6119ba565b348015610a4857600080fd5b50600b546104059060ff1681565b348015610a6257600080fd5b506103a6610a71366004613291565b611a05565b348015610a8257600080fd5b506103a6610a9136600461355a565b611a9d565b348015610aa257600080fd5b50601e54601f546020546021546107789392919084565b348015610ac557600080fd5b50600d546107b8906001600160a01b031681565b348015610ae557600080fd5b5061044660175481565b6000546001600160a01b03163314610b225760405162461bcd60e51b8152600401610b19906135aa565b60405180910390fd5b601980546001600160a01b0319166001600160a01b0392909216919091179055565b600954600090339060ff1680610b7257506001600160a01b03811660009081526006602052604090205460ff165b610b8e5760405162461bcd60e51b8152600401610b19906135df565b610b99338585611b9e565b5060019392505050565b6000546001600160a01b03163314610bcd5760405162461bcd60e51b8152600401610b19906135aa565b60005b8251811015610c34578160076000858481518110610bf057610bf0613616565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610c2c81613642565b915050610bd0565b505050565b600954600090849060ff1680610c6757506001600160a01b03811660009081526006602052604090205460ff165b610c835760405162461bcd60e51b8152600401610b19906135df565b610c8e858585611cc2565b6001600160a01b038516600090815260036020908152604080832033845290915290205483811015610d135760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610b19565b610d278633610d22878561365d565b611b9e565b50600195945050505050565b6000601054821115610d9a5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610b19565b6000610da461253b565b9050610db08184613674565b9392505050565b6000546001600160a01b03163314610de15760405162461bcd60e51b8152600401610b19906135aa565b6001600160a01b03811660009081526005602052604090205460ff16610e495760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c756465640000000000000000006044820152606401610b19565b60005b600854811015610f6a57816001600160a01b031660088281548110610e7357610e73613616565b6000918252602090912001546001600160a01b03161415610f585760088054610e9e9060019061365d565b81548110610eae57610eae613616565b600091825260209091200154600880546001600160a01b039092169183908110610eda57610eda613616565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600590925220805460ff191690556008805480610f3257610f32613696565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610f6281613642565b915050610e4c565b5050565b6000546001600160a01b03163314610f985760405162461bcd60e51b8152600401610b19906135aa565b6009805461ffff191661ff0019831515908116919091176101008202179091556001148015610fc75750601554155b15610fd157436015555b50565b600954600090339060ff168061100257506001600160a01b03811660009081526006602052604090205460ff165b61101e5760405162461bcd60e51b8152600401610b19906135df565b3360008181526003602090815260408083206001600160a01b0389168452909152902054610b9991908690610d229087906136ac565b6000546001600160a01b0316331461107e5760405162461bcd60e51b8152600401610b19906135aa565b600d80546001600160a01b039384166001600160a01b031991821617909155600e8054929093169116179055565b6000546001600160a01b031633146110d65760405162461bcd60e51b8152600401610b19906135aa565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6000546001600160a01b031633146111245760405162461bcd60e51b8152600401610b19906135aa565b804710156111745760405162461bcd60e51b815260206004820152601860248201527f696e73756666696369656e7420424e422062616c616e636500000000000000006044820152606401610b19565b604051339082156108fc029083906000818181858888f19350505050158015610f6a573d6000803e3d6000fd5b6000600f548311156111f55760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610b19565b81611213576000611209846001600061255e565b51915061122f9050565b6000611222846001600061255e565b60200151915061122f9050565b92915050565b6000546001600160a01b0316331461125f5760405162461bcd60e51b8152600401610b19906135aa565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303816000875af11580156112ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112d291906136c4565b50505050565b6000546001600160a01b031633146113025760405162461bcd60e51b8152600401610b19906135aa565b6001600160a01b03811660009081526005602052604090205460ff161561136b5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610b19565b6001600160a01b038116600090815260016020526040902054156113c5576001600160a01b0381166000908152600160205260409020546113ab90610d33565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319169091179055565b6000546001600160a01b031633146114555760405162461bcd60e51b8152600401610b19906135aa565b6114616009600a6137c5565b61146b90836137d4565b60125561147a6009600a6137c5565b61148490826137d4565b6013555050565b6000546001600160a01b031633146114b55760405162461bcd60e51b8152600401610b19906135aa565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6001600160a01b03811660009081526005602052604081205460ff161561151d57506001600160a01b031660009081526002602052604090205490565b6001600160a01b03821660009081526001602052604090205461122f90610d33565b6000546001600160a01b031633146115695760405162461bcd60e51b8152600401610b19906135aa565b61157360006125ba565b565b6000546001600160a01b0316331461159f5760405162461bcd60e51b8152600401610b19906135aa565b60005b8251811015610c345781600460008584815181106115c2576115c2613616565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806115fe81613642565b9150506115a2565b6000546001600160a01b031633146116305760405162461bcd60e51b8152600401610b19906135aa565b808261163c85876136ac565b61164691906136ac565b61165091906136ac565b6016819055601910156116a55760405162461bcd60e51b815260206004820152601e60248201527f4d757374206b65657020746178657320617420323525206f72206c65737300006044820152606401610b19565b6040805160808101825285815260208101859052808201849052606001829052601a859055601b849055601c839055601d829055517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de1590600090a150505050565b600954600090339060ff168061173457506001600160a01b03811660009081526006602052604090205460ff165b6117505760405162461bcd60e51b8152600401610b19906135df565b3360009081526003602090815260408083206001600160a01b0388168452909152902054838110156117d25760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610b19565b6117e13386610d22878561365d565b506001949350505050565b600954600090339060ff168061181a57506001600160a01b03811660009081526006602052604090205460ff165b6118365760405162461bcd60e51b8152600401610b19906135df565b610b99338585611cc2565b6000546001600160a01b0316331461186b5760405162461bcd60e51b8152600401610b19906135aa565b601880546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146118b75760405162461bcd60e51b8152600401610b19906135aa565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461190c5760405162461bcd60e51b8152600401610b19906135aa565b6119186009600a6137c5565b61192290826137d4565b60115550565b6000546001600160a01b031633146119525760405162461bcd60e51b8152600401610b19906135aa565b61195e6009600a6137c5565b61196890826137d4565b60145550565b6000546001600160a01b031633146119985760405162461bcd60e51b8152600401610b19906135aa565b6119a38160016137d4565b600c5550600b805460ff1916911515919091179055565b6000546001600160a01b031633146119e45760405162461bcd60e51b8152600401610b19906135aa565b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000546001600160a01b03163314611a2f5760405162461bcd60e51b8152600401610b19906135aa565b6001600160a01b038116611a945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b19565b610fd1816125ba565b6000546001600160a01b03163314611ac75760405162461bcd60e51b8152600401610b19906135aa565b8082611ad385876136ac565b611add91906136ac565b611ae791906136ac565b601781905560191015611b3c5760405162461bcd60e51b815260206004820152601e60248201527f4d757374206b65657020746178657320617420323525206f72206c65737300006044820152606401610b19565b6040805160808101825285815260208082018690528183018590526060909101839052601e869055601f8590558390556021829055517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de1590600090a150505050565b6001600160a01b038316611c005760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b19565b6001600160a01b038216611c615760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b19565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611d265760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b19565b6001600160a01b038216611d885760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b19565b60008111611dea5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610b19565b611df3836114e0565b811115611e5c5760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b6064820152608401610b19565b6001600160a01b03831660009081526007602052604090205460ff16158015611e9e57506001600160a01b03821660009081526007602052604090205460ff16155b611eea5760405162461bcd60e51b815260206004820152601d60248201527f596f7520617265206120626f742c20552076657272792062616420474c0000006044820152606401610b19565b6001600160a01b03831660009081526004602052604090205460ff16158015611f2c57506001600160a01b03821660009081526004602052604090205460ff16155b15611f785760095460ff16611f785760405162461bcd60e51b815260206004820152601260248201527154726164696e67206e6f742061637469766560701b6044820152606401610b19565b6001600160a01b03831660009081526004602052604090205460ff16158015611fba57506001600160a01b03821660009081526004602052604090205460ff16155b8015611fd35750601554611fcf9060026136ac565b4311155b1561204257600e546001600160a01b03838116911614156120425760405162461bcd60e51b8152602060048201526024808201527f53656c6c73206e6f7420616c6c6f77656420666f72206669727374203220626c6044820152636f636b7360e01b6064820152608401610b19565b600e546001600160a01b03848116911614801561207857506001600160a01b03821660009081526004602052604090205460ff16155b801561208d575060095462010000900460ff16155b15612149576012548111156120e45760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61784275794c696d69740000006044820152606401610b19565b601454816120f1846114e0565b6120fb91906136ac565b11156121495760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610b19565b600e546001600160a01b0384811691161480159061218057506001600160a01b03821660009081526004602052604090205460ff16155b80156121a557506001600160a01b03831660009081526004602052604090205460ff16155b80156121ba575060095462010000900460ff16155b1561231d576013548111156122115760405162461bcd60e51b815260206004820152601e60248201527f596f752061726520657863656564696e67206d617853656c6c4c696d697400006044820152606401610b19565b600e546001600160a01b0383811691161461228b5760145481612233846114e0565b61223d91906136ac565b111561228b5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610b19565b600b5460ff161561231d576001600160a01b0383166000908152600a60205260408120546122b9904261365d565b9050600c548110156123005760405162461bcd60e51b815260206004820152601060248201526f10dbdbdb191bdddb88195b98589b195960821b6044820152606401610b19565b506001600160a01b0383166000908152600a602052604090204290555b6123296009600a6137c5565b61233490600a6137d4565b8161233e856114e0565b612348919061365d565b1161238f57612356836114e0565b816123636009600a6137c5565b61236e90600a6137d4565b61237891906136ac565b612382919061365d565b61238c908261365d565b90505b600060115461239d306114e0565b600954911115915062010000900460ff161580156123b85750805b80156123d25750600e546001600160a01b03858116911614155b80156123f757506001600160a01b03841660009081526004602052604090205460ff16155b801561241c57506001600160a01b03831660009081526004602052604090205460ff16155b156124aa57600e546001600160a01b03848116911614156124745760115460408051608081018252601e548152601f546020808301919091525491810191909152602154606082015261246f919061260a565b6124aa565b60115460408051608081018252601a548152601b546020820152601c5491810191909152601d5460608201526124aa919061260a565b60095460019060009062010000900460ff16806124df57506001600160a01b03861660009081526004602052604090205460ff165b8061250257506001600160a01b03851660009081526004602052604090205460ff165b1561250c57600091505b600e546001600160a01b0386811691161415612526575060015b6125338686868585612764565b505050505050565b6000806000612548612a31565b90925090506125578183613674565b9250505090565b612566613212565b612571848484612bb4565b905061258681858561258161253b565b612d26565b608086015260608501526040840152602083015281526125ae81846125a961253b565b612dd5565b60a08201529392505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6009805462ff000019166201000017905560608101516020820151604083015160009291612637916136ac565b61264191906136ac565b61264c9060026137d4565b905060008183604001518561266191906137d4565b61266b9190613674565b90506000612679828661365d565b90504761268582612dfd565b6000612691824761365d565b905060008660400151866126a5919061365d565b6126af9083613674565b905060008760400151826126c391906137d4565b905080156126d5576126d58682612f4f565b60208801516000906126e88460026137d4565b6126f291906137d4565b9050801561271057601854612710906001600160a01b031682613024565b60608901516000906127238560026137d4565b61272d91906137d4565b9050801561274b5760195461274b906001600160a01b031682613024565b50506009805462ff000019169055505050505050505050565b600061277184848461255e565b6001600160a01b03871660009081526005602052604090205490915060ff16156127d3576001600160a01b0386166000908152600260205260409020546127b990859061365d565b6001600160a01b0387166000908152600260205260409020555b6001600160a01b03851660009081526005602052604090205460ff16156128365760c08101516001600160a01b03861660009081526002602052604090205461281c91906136ac565b6001600160a01b0386166000908152600260205260409020555b80516001600160a01b03871660009081526001602052604090205461285b919061365d565b6001600160a01b038088166000908152600160209081526040808320949094558401519188168152919091205461289291906136ac565b6001600160a01b03861660009081526001602052604090819020919091558101511515806128c4575060008160e00151115b156128db576128db81604001518260e0015161313d565b6000816080015111806128f357506000816101200151115b156129785761290b8160800151826101200151613172565b306001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83610140015184610100015185610120015161295c91906136ac565b61296691906136ac565b60405190815260200160405180910390a35b60008160600151118061299057506000816101000151115b156129a8576129a881606001518261010001516131e8565b60008160a0015111806129c057506000816101400151115b156129d8576129d88160a001518261014001516131fd565b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360c00151604051612a2191815260200190565b60405180910390a3505050505050565b601054600f546000918291825b600854811015612b8357826001600060088481548110612a6057612a60613616565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612acb5750816002600060088481548110612aa457612aa4613616565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15612ae157601054600f54945094505050509091565b6001600060088381548110612af857612af8613616565b60009182526020808320909101546001600160a01b03168352820192909252604001902054612b27908461365d565b92506002600060088381548110612b4057612b40613616565b60009182526020808320909101546001600160a01b03168352820192909252604001902054612b6f908361365d565b915080612b7b81613642565b915050612a3e565b50600f54601054612b949190613674565b821015612bab57601054600f549350935050509091565b90939092509050565b612bbc613212565b82612bcd5760c08101849052610db0565b612bf86040518060800160405280600081526020016000815260200160008152602001600081525090565b8215612c2f575060408051608081018252601e548152601f5460208083019190915254918101919091526021546060820152612c5a565b5060408051608081018252601a548152601b546020820152601c5491810191909152601d5460608201525b8051606490612c6990876137d4565b612c739190613674565b60e08301526020810151606490612c8a90876137d4565b612c949190613674565b6101008301526040810151606490612cac90876137d4565b612cb69190613674565b6101208301526060810151606490612cce90876137d4565b612cd89190613674565b610140830181905261012083015161010084015160e0850151612cfb908961365d565b612d05919061365d565b612d0f919061365d565b612d19919061365d565b60c0830152509392505050565b600080808080612d3686896137d4565b945086612d4e57508392506000915081905080612dca565b858960e00151612d5e91906137d4565b925085896101000151612d7191906137d4565b915085896101200151612d8491906137d4565b90506000868a6101400151612d9991906137d4565b9050808284612da8878a61365d565b612db2919061365d565b612dbc919061365d565b612dc6919061365d565b9450505b945094509450945094565b600082612de457506000610db0565b81846101400151612df591906137d4565b949350505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612e3257612e32613616565b6001600160a01b03928316602091820292909201810191909152600d54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612e8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612eaf91906137f3565b81600181518110612ec257612ec2613616565b6001600160a01b039283166020918202929092010152600d54612ee89130911684611b9e565b600d5460405163791ac94760e01b81526001600160a01b039091169063791ac94790612f21908590600090869030904290600401613810565b600060405180830381600087803b158015612f3b57600080fd5b505af1158015612533573d6000803e3d6000fd5b600d54612f679030906001600160a01b031684611b9e565b600d546001600160a01b031663f305d719823085600080612f906000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015612ff8573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061301d9190613881565b5050505050565b804710156130745760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610b19565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146130c1576040519150601f19603f3d011682016040523d82523d6000602084013e6130c6565b606091505b5050905080610c345760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610b19565b816010600082825461314f919061365d565b9091555050602280548291906000906131699084906136ac565b90915550505050565b806022600201600082825461318791906136ac565b90915550503060009081526005602052604090205460ff16156131c95730600090815260026020526040812080548392906131c39084906136ac565b90915550505b30600090815260016020526040812080548492906131699084906136ac565b806022600101600082825461318791906136ac565b806022600301600082825461318791906136ac565b60405180610160016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6001600160a01b0381168114610fd157600080fd5b803561328c8161326c565b919050565b6000602082840312156132a357600080fd5b8135610db08161326c565b600060208083528351808285015260005b818110156132db578581018301518582016040015282016132bf565b818111156132ed576000604083870101525b50601f01601f1916929092016040019392505050565b6000806040838503121561331657600080fd5b82356133218161326c565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b8015158114610fd157600080fd5b803561328c81613345565b6000806040838503121561337157600080fd5b823567ffffffffffffffff8082111561338957600080fd5b818501915085601f83011261339d57600080fd5b81356020828211156133b1576133b161332f565b8160051b604051601f19603f830116810181811086821117156133d6576133d661332f565b6040529283528183019350848101820192898411156133f457600080fd5b948201945b838610156134195761340a86613281565b855294820194938201936133f9565b96506134289050878201613353565b9450505050509250929050565b60008060006060848603121561344a57600080fd5b83356134558161326c565b925060208401356134658161326c565b929592945050506040919091013590565b60006020828403121561348857600080fd5b5035919050565b6000602082840312156134a157600080fd5b8135610db081613345565b600080604083850312156134bf57600080fd5b82356134ca8161326c565b915060208301356134da8161326c565b809150509250929050565b600080604083850312156134f857600080fd5b8235915060208301356134da81613345565b6000806040838503121561351d57600080fd5b50508035926020909101359150565b6000806040838503121561353f57600080fd5b823561354a8161326c565b915060208301356134da81613345565b6000806000806080858703121561357057600080fd5b5050823594602084013594506040840135936060013592509050565b6000806040838503121561359f57600080fd5b823561332181613345565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526017908201527f54726164696e67206e6f7420656e61626c656420796574000000000000000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156136565761365661362c565b5060010190565b60008282101561366f5761366f61362c565b500390565b60008261369157634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603160045260246000fd5b600082198211156136bf576136bf61362c565b500190565b6000602082840312156136d657600080fd5b8151610db081613345565b600181815b8085111561371c5781600019048211156137025761370261362c565b8085161561370f57918102915b93841c93908002906136e6565b509250929050565b6000826137335750600161122f565b816137405750600061122f565b816001811461375657600281146137605761377c565b600191505061122f565b60ff8411156137715761377161362c565b50506001821b61122f565b5060208310610133831016604e8410600b841016171561379f575081810a61122f565b6137a983836136e1565b80600019048211156137bd576137bd61362c565b029392505050565b6000610db060ff841683613724565b60008160001904831182151516156137ee576137ee61362c565b500290565b60006020828403121561380557600080fd5b8151610db08161326c565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156138605784516001600160a01b03168352938301939183019160010161383b565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561389657600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212207944e3817e506ffb6f9c2915854efbaca8496efc41a1c10c2a7b3221fd45c1f064736f6c634300080c0033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000145677fc4d9b8f19b5d56d1820c48e0443049a30

-----Decoded View---------------
Arg [0] : routerAddress (address): 0x145677fc4d9b8f19b5d56d1820c48e0443049a30

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000145677fc4d9b8f19b5d56d1820c48e0443049a30


Deployed ByteCode Sourcemap

3077:20826:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22048:110;;;;;;;;;;-1:-1:-1;22048:110:0;;;;;:::i;:::-;;:::i;:::-;;6761:83;;;;;;;;;;-1:-1:-1;6831:5:0;;;;;;;;;;;-1:-1:-1;;;6831:5:0;;;;6761:83;;;;6831:5;6761:83;:::i;:::-;;;;;;;;7494:181;;;;;;;;;;-1:-1:-1;7494:181:0;;;;;:::i;:::-;;:::i;:::-;;;1628:14:1;;1621:22;1603:41;;1591:2;1576:18;7494:181:0;1463:187:1;22598:209:0;;;;;;;;;;-1:-1:-1;22598:209:0;;;;;:::i;:::-;;:::i;7034:95::-;;;;;;;;;;-1:-1:-1;7114:7:0;;7034:95;;;3385:25:1;;;3373:2;3358:18;7034:95:0;3239:177:1;7683:430:0;;;;;;;;;;-1:-1:-1;7683:430:0;;;;;:::i;:::-;;:::i;4611:28::-;;;;;;;;;;;;;;;;9768:248;;;;;;;;;;-1:-1:-1;9768:248:0;;;;;:::i;:::-;;:::i;6943:83::-;;;;;;;;;;-1:-1:-1;6943:83:0;;4117:1;4209:36:1;;4197:2;4182:18;6943:83:0;4067:184:1;4648:28:0;;;;;;;;;;;;;;;;10365:475;;;;;;;;;;-1:-1:-1;10365:475:0;;;;;:::i;:::-;;:::i;9555:205::-;;;;;;;;;;-1:-1:-1;9555:205:0;;;;;:::i;:::-;;:::i;8121:228::-;;;;;;;;;;-1:-1:-1;8121:228:0;;;;;:::i;:::-;;:::i;23274:154::-;;;;;;;;;;-1:-1:-1;23274:154:0;;;;;:::i;:::-;;:::i;10848:111::-;;;;;;;;;;-1:-1:-1;10848:111:0;;;;;:::i;:::-;;:::i;23500:196::-;;;;;;;;;;-1:-1:-1;23500:196:0;;;;;:::i;:::-;;:::i;9077:470::-;;;;;;;;;;-1:-1:-1;9077:470:0;;;;;:::i;:::-;;:::i;23704:154::-;;;;;;;;;;-1:-1:-1;23704:154:0;;;;;:::i;:::-;;:::i;3609:34::-;;;;;;;;;;-1:-1:-1;3609:34:0;;;;;;;;10024:333;;;;;;;;;;-1:-1:-1;10024:333:0;;;;;:::i;:::-;;:::i;11085:123::-;;;;;;;;;;-1:-1:-1;11085:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;11173:27:0;11149:4;11173:27;;;:18;:27;;;;;;;;;11085:123;22952:183;;;;;;;;;;-1:-1:-1;22952:183:0;;;;;:::i;:::-;;:::i;22464:126::-;;;;;;;;;;-1:-1:-1;22464:126:0;;;;;:::i;:::-;;:::i;3461:48::-;;;;;;;;;;-1:-1:-1;3461:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;4462:47;;;;;;;;;;;;;;;;4535:49;;;;;;;;;;;;;;;;4390:46;;;;;;;;;;;;;;;;3650:30;;;;;;;;;;-1:-1:-1;3650:30:0;;;;;;;;;;;7137:198;;;;;;;;;;-1:-1:-1;7137:198:0;;;;;:::i;:::-;;:::i;1507:94::-;;;;;;;;;;;;;:::i;5125:39::-;;;;;;;;;;-1:-1:-1;5125:39:0;;;;;;;;;;;;;;;;;;;6080:25:1;;;6136:2;6121:18;;6114:34;;;;6164:18;;;6157:34;6222:2;6207:18;;6200:34;6067:3;6052:19;5125:39:0;5849:391:1;4732:75:0;;;;;;;;;;-1:-1:-1;4732:75:0;;;;-1:-1:-1;;;;;4732:75:0;;;;;;-1:-1:-1;;;;;6409:32:1;;;6391:51;;6379:2;6364:18;4732:75:0;6245:203:1;8949:120:0;;;;;;;;;;-1:-1:-1;8949:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;9041:20:0;9017:4;9041:20;;;:11;:20;;;;;;;;;8949:120;1284:87;;;;;;;;;;-1:-1:-1;1330:7:0;1357:6;-1:-1:-1;;;;;1357:6:0;1284:87;;21709:209;;;;;;;;;;-1:-1:-1;21709:209:0;;;;;:::i;:::-;;:::i;5367:36::-;;;;;;;;;;-1:-1:-1;5367:36:0;;;;;;;;;;;;;;;11216:346;;;;;;;;;;-1:-1:-1;11216:346:0;;;;;:::i;:::-;;:::i;8357:390::-;;;;;;;;;;-1:-1:-1;8357:390:0;;;;;:::i;:::-;;:::i;4054:19::-;;;;;;;;;;-1:-1:-1;4054:19:0;;;;-1:-1:-1;;;;;4054:19:0;;;8755:186;;;;;;;;;;-1:-1:-1;8755:186:0;;;;;:::i;:::-;;:::i;21926:114::-;;;;;;;;;;-1:-1:-1;21926:114:0;;;;;:::i;:::-;;:::i;22815:129::-;;;;;;;;;;-1:-1:-1;22815:129:0;;;;;:::i;:::-;;:::i;22326:130::-;;;;;;;;;;-1:-1:-1;22326:130:0;;;;;:::i;:::-;;:::i;3827:40::-;;;;;;;;;;;;;;;;23143:123;;;;;;;;;;-1:-1:-1;23143:123:0;;;;;:::i;:::-;;:::i;7343:143::-;;;;;;;;;;-1:-1:-1;7343:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;7451:18:0;;;7424:7;7451:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7343:143;4814:73;;;;;;;;;;-1:-1:-1;4814:73:0;;;;-1:-1:-1;;;;;4814:73:0;;;4311:54;;;;;;;;;;;;;;;;22166:152;;;;;;;;;;-1:-1:-1;22166:152:0;;;;;:::i;:::-;;:::i;10967:110::-;;;;;;;;;;-1:-1:-1;10967:110:0;;;;;:::i;:::-;;:::i;3786:34::-;;;;;;;;;;-1:-1:-1;3786:34:0;;;;;;;;1609:192;;;;;;;;;;-1:-1:-1;1609:192:0;;;;;:::i;:::-;;:::i;11570:356::-;;;;;;;;;;-1:-1:-1;11570:356:0;;;;;:::i;:::-;;:::i;5171:43::-;;;;;;;;;;-1:-1:-1;5171:43:0;;;;;;;;;;;;;;;4026:21;;;;;;;;;;-1:-1:-1;4026:21:0;;;;-1:-1:-1;;;;;4026:21:0;;;4683:29;;;;;;;;;;;;;;;;22048:110;1330:7;1357:6;-1:-1:-1;;;;;1357:6:0;904:10;1419:23;1411:68;;;;-1:-1:-1;;;1411:68:0;;;;;;;:::i;:::-;;;;;;;;;22125:13:::1;:25:::0;;-1:-1:-1;;;;;;22125:25:0::1;-1:-1:-1::0;;;;;22125:25:0;;;::::1;::::0;;;::::1;::::0;;22048:110::o;7494:181::-;3928:14;;7589:4;;7569:10;;3928:14;;;:42;;-1:-1:-1;;;;;;3946:24:0;;;;;;:15;:24;;;;;;;;3928:42;3920:78;;;;-1:-1:-1;;;3920:78:0;;;;;;;:::i;:::-;7606:39:::1;904:10:::0;7629:7:::1;7638:6;7606:8;:39::i;:::-;-1:-1:-1::0;7663:4:0::1;::::0;7494:181;-1:-1:-1;;;7494:181:0:o;22598:209::-;1330:7;1357:6;-1:-1:-1;;;;;1357:6:0;904:10;1419:23;1411:68;;;;-1:-1:-1;;;1411:68:0;;;;;;;:::i;:::-;22697:9:::1;22693:107;22715:8;:15;22711:1;:19;22693:107;;;22781:5;22751:14;:27;22766:8;22775:1;22766:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;22751:27:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;22751:27:0;:35;;-1:-1:-1;;22751:35:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22732:3;::::1;::::0;::::1;:::i;:::-;;;;22693:107;;;;22598:209:::0;;:::o;7683:430::-;3928:14;;7797:4;;7780:6;;3928:14;;;:42;;-1:-1:-1;;;;;;3946:24:0;;;;;;:15;:24;;;;;;;;3928:42;3920:78;;;;-1:-1:-1;;;3920:78:0;;;;;;;:::i;:::-;7814:36:::1;7824:6;7832:9;7843:6;7814:9;:36::i;:::-;-1:-1:-1::0;;;;;7890:19:0;::::1;7863:24;7890:19:::0;;;:11:::1;:19;::::0;;;;;;;904:10;7890:33;;;;;;;;7942:26;;::::1;;7934:79;;;::::0;-1:-1:-1;;;7934:79:0;;8699:2:1;7934:79:0::1;::::0;::::1;8681:21:1::0;8738:2;8718:18;;;8711:30;8777:34;8757:18;;;8750:62;-1:-1:-1;;;8828:18:1;;;8821:38;8876:19;;7934:79:0::1;8497:404:1::0;7934:79:0::1;8024:57;8033:6:::0;904:10;8055:25:::1;8074:6:::0;8055:16;:25:::1;:::i;:::-;8024:8;:57::i;:::-;-1:-1:-1::0;8101:4:0::1;::::0;7683:430;-1:-1:-1;;;;;7683:430:0:o;9768:248::-;9834:7;9873;;9862;:18;;9854:73;;;;-1:-1:-1;;;9854:73:0;;9238:2:1;9854:73:0;;;9220:21:1;9277:2;9257:18;;;9250:30;9316:34;9296:18;;;9289:62;-1:-1:-1;;;9367:18:1;;;9360:40;9417:19;;9854:73:0;9036:406:1;9854:73:0;9938:19;9961:10;:8;:10::i;:::-;9938:33;-1:-1:-1;9989:19:0;9938:33;9989:7;:19;:::i;:::-;9982:26;9768:248;-1:-1:-1;;;9768:248:0:o;10365:475::-;1330:7;1357:6;-1:-1:-1;;;;;1357:6:0;904:10;1419:23;1411:68;;;;-1:-1:-1;;;1411:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10447:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;10439:56;;;::::0;-1:-1:-1;;;10439:56:0;;9871:2:1;10439:56:0::1;::::0;::::1;9853:21:1::0;9910:2;9890:18;;;9883:30;9949:25;9929:18;;;9922:53;9992:18;;10439:56:0::1;9669:347:1::0;10439:56:0::1;10511:9;10506:327;10530:9;:16:::0;10526:20;::::1;10506:327;;;10588:7;-1:-1:-1::0;;;;;10572:23:0::1;:9;10582:1;10572:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;10572:12:0::1;:23;10568:254;;;10631:9;10641:16:::0;;:20:::1;::::0;10660:1:::1;::::0;10641:20:::1;:::i;:::-;10631:31;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;10616:9:::1;:12:::0;;-1:-1:-1;;;;;10631:31:0;;::::1;::::0;10626:1;;10616:12;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;10616:46:0::1;-1:-1:-1::0;;;;;10616:46:0;;::::1;;::::0;;10681:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;10720:11:::1;:20:::0;;;;:28;;-1:-1:-1;;10720:28:0::1;::::0;;10767:9:::1;:15:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;10767:15:0;;;;;-1:-1:-1;;;;;;10767:15:0::1;::::0;;;;;10506:327:::1;10365:475:::0;:::o;10568:254::-:1;10548:3:::0;::::1;::::0;::::1;:::i;:::-;;;;10506:327;;;;10365:475:::0;:::o;9555:205::-;1330:7;1357:6;-1:-1:-1;;;;;1357:6:0;904:10;1419:23;1411:68;;;;-1:-1:-1;;;1411:68:0;;;;;;;:::i;:::-;9623:14:::1;:22:::0;;-1:-1:-1;;9658:19:0;-1:-1:-1;;9623:22:0;::::1;;9658:19:::0;;;;;;;9623:22:::1;9658:19:::0;::::1;;::::0;;;-1:-1:-1;9687:13:0::1;:35:::0;::::1;;;-1:-1:-1::0;9704:13:0::1;::::0;:18;9687:35:::1;9684:68;;;9740:12;9724:13;:28:::0;9684:68:::1;9555:205:::0;:::o;8121:228::-;3928:14;;8222:4;;8201:10;;3928:14;;;:42;;-1:-1:-1;;;;;;3946:24:0;;;;;;:15;:24;;;;;;;;3928:42;3920:78;;;;-1:-1:-1;;;3920:78:0;;;;;;;:::i;:::-;904:10;8271:25:::1;::::0;;;:11:::1;:25;::::0;;;;;;;-1:-1:-1;;;;;8271:34:0;::::1;::::0;;;;;;;;8239:80:::1;::::0;904:10;8262:7;;8271:47:::1;::::0;8308:10;;8271:47:::1;:::i;23274:154::-:0;1330:7;1357:6;-1:-1:-1;;;;;1357:6:0;904:10;1419:23;1411:68;;;;-1:-1:-1;;;1411:68:0;;;;;;;:::i;:::-;23368:6:::1;:27:::0;;-1:-1:-1;;;;;23368:27:0;;::::1;-1:-1:-1::0;;;;;;23368:27:0;;::::1;;::::0;;;23406:4:::1;:14:::0;;;;;::::1;::::0;::::1;;::::0;;23274:154::o;10848:111::-;1330:7;1357:6;-1:-1:-1;;;;;1357:6:0;904:10;1419:23;1411:68;;;;-1:-1:-1;;;1411:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10917:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;10917:34:0::1;10947:4;10917:34;::::0;;10848:111::o;23500:196::-;1330:7;1357:6;-1:-1:-1;;;;;1357:6:0;904:10;1419:23;1411:68;;;;-1:-1:-1;;;1411:68:0;;;;;;;:::i;:::-;23600:9:::1;23575:21;:34;;23567:71;;;::::0;-1:-1:-1;;;23567:71:0;;10488:2:1;23567:71:0::1;::::0;::::1;10470:21:1::0;10527:2;10507:18;;;10500:30;10566:26;10546:18;;;10539:54;10610:18;;23567:71:0::1;10286:348:1::0;23567:71:0::1;23649:39;::::0;23657:10:::1;::::0;23649:39;::::1;;;::::0;23678:9;;23649:39:::1;::::0;;;23678:9;23657:10;23649:39;::::1;;;;;;;;;;;;;::::0;::::1;;;;9077:470:::0;9167:7;9206;;9195;:18;;9187:62;;;;-1:-1:-1;;;9187:62:0;;10841:2:1;9187:62:0;;;10823:21:1;10880:2;10860:18;;;10853:30;10919:33;10899:18;;;10892:61;10970:18;;9187:62:0;10639:355:1;9187:62:0;9265:17;9260:280;;9299:28;9330:32;9341:7;9350:4;9356:5;9330:10;:32::i;:::-;9384:9;;-1:-1:-1;9377:16:0;;-1:-1:-1;9377:16:0;9260:280;9426:28;9457:32;9468:7;9477:4;9483:5;9457:10;:32::i;:::-;9511:17;;;;-1:-1:-1;9504:24:0;;-1:-1:-1;9504:24:0;9260:280;9077:470;;;;:::o;23704:154::-;1330:7;1357:6;-1:-1:-1;;;;;1357:6:0;904:10;1419:23;1411:68;;;;-1:-1:-1;;;1411:68:0;;;;;;;:::i;:::-;23809:41:::1;::::0;-1:-1:-1;;;23809:41:0;;-1:-1:-1;;;;;11191:32:1;;;23809:41:0::1;::::0;::::1;11173:51:1::0;11240:18;;;11233:34;;;23809:27:0;::::1;::::0;::::1;::::0;11146:18:1;;23809:41:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23704:154:::0;;;:::o;10024:333::-;1330:7;1357:6;-1:-1:-1;;;;;1357:6:0;904:10;1419:23;1411:68;;;;-1:-1:-1;;;1411:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10107:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;10106:21;10098:61;;;::::0;-1:-1:-1;;;10098:61:0;;11730:2:1;10098:61:0::1;::::0;::::1;11712:21:1::0;11769:2;11749:18;;;11742:30;11808:29;11788:18;;;11781:57;11855:18;;10098:61:0::1;11528:351:1::0;10098:61:0::1;-1:-1:-1::0;;;;;10173:16:0;::::1;10192:1;10173:16:::0;;;:7:::1;:16;::::0;;;;;:20;10170:108:::1;;-1:-1:-1::0;;;;;10249:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;10229:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;10210:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;10170:108:::1;-1:-1:-1::0;;;;;10288:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;10288:27:0::1;10311:4;10288:27:::0;;::::1;::::0;;;10326:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;10326:23:0::1;::::0;;::::1;::::0;;10024:333::o;22952:183::-;1330:7;1357:6;-1:-1:-1;;;;;1357:6:0;904:10;1419:23;1411:68;;;;-1:-1:-1;;;1411:68:0;;;;;;;:::i;:::-;23063:14:::1;4117:1:::0;23063:2:::1;:14;:::i;:::-;23054:23;::::0;:6;:23:::1;:::i;:::-;23040:11;:37:::0;23113:14:::1;4117:1:::0;23113:2:::1;:14;:::i;:::-;23103:24;::::0;:7;:24:::1;:::i;:::-;23088:12;:39:::0;-1:-1:-1;;22952:183:0:o;22464:126::-;1330:7;1357:6;-1:-1:-1;;;;;1357:6:0;904:10;1419:23;1411:68;;;;-1:-1:-1;;;1411:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22551:23:0;;;::::1;;::::0;;;:14:::1;:23;::::0;;;;:31;;-1:-1:-1;;22551:31:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22464:126::o;7137:198::-;-1:-1:-1;;;;;7227:20:0;;7203:7;7227:20;;;:11;:20;;;;;;;;7223:49;;;-1:-1:-1;;;;;;7256:16:0;;;;;:7;:16;;;;;;;7137:198::o;7223:49::-;-1:-1:-1;;;;;7310:16:0;;;;;;:7;:16;;;;;;7290:37;;:19;:37::i;1507:94::-;1330:7;1357:6;-1:-1:-1;;;;;1357:6:0;904:10;1419:23;1411:68;;;;-1:-1:-1;;;1411:68:0;;;;;;;:::i;:::-;1572:21:::1;1590:1;1572:9;:21::i;:::-;1507:94::o:0;21709:209::-;1330:7;1357:6;-1:-1:-1;;;;;1357:6:0;904:10;1419:23;1411:68;;;;-1:-1:-1;;;1411:68:0;;;;;;;:::i;:::-;21805:9:::1;21801:110;21824:8;:15;21820:1;:19;21801:110;;;21894:5;21860:18;:31;21879:8;21888:1;21879:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;21860:31:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;21860:31:0;:39;;-1:-1:-1;;21860:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;21841:3;::::1;::::0;::::1;:::i;:::-;;;;21801:110;;11216:346:::0;1330:7;1357:6;-1:-1:-1;;;;;1357:6:0;904:10;1419:23;1411:68;;;;-1:-1:-1;;;1411:68:0;;;;;;;:::i;:::-;11383:8;11370:10;11350:17:::1;11357:10:::0;11350:4;:17:::1;:::i;:::-;:30;;;;:::i;:::-;:41;;;;:::i;:::-;11334:13;:57:::0;;;11427:2:::1;-1:-1:-1::0;11410:19:0::1;11402:62;;;::::0;-1:-1:-1;;;11402:62:0;;13642:2:1;11402:62:0::1;::::0;::::1;13624:21:1::0;13681:2;13661:18;;;13654:30;13720:32;13700:18;;;13693:60;13770:18;;11402:62:0::1;13440:354:1::0;11402:62:0::1;11483:42;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;11475:5:::1;:50:::0;;;;;;;;;;;;;;;11541:13;::::1;::::0;-1:-1:-1;;11541:13:0::1;11216:346:::0;;;;:::o;8357:390::-;3928:14;;8463:4;;8442:10;;3928:14;;;:42;;-1:-1:-1;;;;;;3946:24:0;;;;;;:15;:24;;;;;;;;3928:42;3920:78;;;;-1:-1:-1;;;3920:78:0;;;;;;;:::i;:::-;904:10;8480:24:::1;8507:25:::0;;;:11:::1;:25;::::0;;;;;;;-1:-1:-1;;;;;8507:34:0;::::1;::::0;;;;;;;;8560:35;;::::1;;8552:85;;;::::0;-1:-1:-1;;;8552:85:0;;14001:2:1;8552:85:0::1;::::0;::::1;13983:21:1::0;14040:2;14020:18;;;14013:30;14079:34;14059:18;;;14052:62;-1:-1:-1;;;14130:18:1;;;14123:35;14175:19;;8552:85:0::1;13799:401:1::0;8552:85:0::1;8648:67;904:10:::0;8671:7;8680:34:::1;8699:15:::0;8680:16;:34:::1;:::i;8648:67::-;-1:-1:-1::0;8735:4:0::1;::::0;8357:390;-1:-1:-1;;;;8357:390:0:o;8755:186::-;3928:14;;8853:4;;8832:10;;3928:14;;;:42;;-1:-1:-1;;;;;;3946:24:0;;;;;;:15;:24;;;;;;;;3928:42;3920:78;;;;-1:-1:-1;;;3920:78:0;;;;;;;:::i;:::-;8873:40:::1;8883:10;8895:9;8906:6;8873:9;:40::i;21926:114::-:0;1330:7;1357:6;-1:-1:-1;;;;;1357:6:0;904:10;1419:23;1411:68;;;;-1:-1:-1;;;1411:68:0;;;;;;;:::i;:::-;22005:15:::1;:27:::0;;-1:-1:-1;;;;;;22005:27:0::1;-1:-1:-1::0;;;;;22005:27:0;;;::::1;::::0;;;::::1;::::0;;21926:114::o;22815:129::-;1330:7;1357:6;-1:-1:-1;;;;;1357:6:0;904:10;1419:23;1411:68;;;;-1:-1:-1;;;1411:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22904:24:0;;;::::1;;::::0;;;:15:::1;:24;::::0;;;;:32;;-1:-1:-1;;22904:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22815:129::o;22326:130::-;1330:7;1357:6;-1:-1:-1;;;;;1357:6:0;904:10;1419:23;1411:68;;;;-1:-1:-1;;;1411:68:0;;;;;;;:::i;:::-;22435:13:::1;4117:1;22435:2;:13;:::i;:::-;22426:22;::::0;:6;:22:::1;:::i;:::-;22405:18;:43:::0;-1:-1:-1;22326:130:0:o;23143:123::-;1330:7;1357:6;-1:-1:-1;;;;;1357:6:0;904:10;1419:23;1411:68;;;;-1:-1:-1;;;1411:68:0;;;;;;;:::i;:::-;23244:14:::1;4117:1:::0;23244:2:::1;:14;:::i;:::-;23235:23;::::0;:6;:23:::1;:::i;:::-;23218:14;:40:::0;-1:-1:-1;23143:123:0:o;22166:152::-;1330:7;1357:6;-1:-1:-1;;;;;1357:6:0;904:10;1419:23;1411:68;;;;-1:-1:-1;;;1411:68:0;;;;;;;:::i;:::-;22260:16:::1;:4:::0;22267:9:::1;22260:16;:::i;:::-;22245:12;:31:::0;-1:-1:-1;22287:15:0::1;:23:::0;;-1:-1:-1;;22287:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22166:152::o;10967:110::-;1330:7;1357:6;-1:-1:-1;;;;;1357:6:0;904:10;1419:23;1411:68;;;;-1:-1:-1;;;1411:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11034:27:0::1;11064:5;11034:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;11034:35:0::1;::::0;;10967:110::o;1609:192::-;1330:7;1357:6;-1:-1:-1;;;;;1357:6:0;904:10;1419:23;1411:68;;;;-1:-1:-1;;;1411:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1698:22:0;::::1;1690:73;;;::::0;-1:-1:-1;;;1690:73:0;;14407:2:1;1690:73:0::1;::::0;::::1;14389:21:1::0;14446:2;14426:18;;;14419:30;14485:34;14465:18;;;14458:62;-1:-1:-1;;;14536:18:1;;;14529:36;14582:19;;1690:73:0::1;14205:402:1::0;1690:73:0::1;1774:19;1784:8;1774:9;:19::i;11570:356::-:0;1330:7;1357:6;-1:-1:-1;;;;;1357:6:0;904:10;1419:23;1411:68;;;;-1:-1:-1;;;1411:68:0;;;;;;;:::i;:::-;11742:8;11729:10;11709:17:::1;11716:10:::0;11709:4;:17:::1;:::i;:::-;:30;;;;:::i;:::-;:41;;;;:::i;:::-;11692:14;:58:::0;;;11787:2:::1;-1:-1:-1::0;11769:20:0::1;11761:63;;;::::0;-1:-1:-1;;;11761:63:0;;13642:2:1;11761:63:0::1;::::0;::::1;13624:21:1::0;13681:2;13661:18;;;13654:30;13720:32;13700:18;;;13693:60;13770:18;;11761:63:0::1;13440:354:1::0;11761:63:0::1;11847:42;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;;::::1;::::0;;;;;;;;;;;;;;;;11835:9:::1;:54:::0;;;;;;;;;;;;;;11905:13;::::1;::::0;-1:-1:-1;;11905:13:0::1;11570:356:::0;;;;:::o;15703:335::-;-1:-1:-1;;;;;15796:19:0;;15788:68;;;;-1:-1:-1;;;15788:68:0;;14814:2:1;15788:68:0;;;14796:21:1;14853:2;14833:18;;;14826:30;14892:34;14872:18;;;14865:62;-1:-1:-1;;;14943:18:1;;;14936:34;14987:19;;15788:68:0;14612:400:1;15788:68:0;-1:-1:-1;;;;;15875:21:0;;15867:68;;;;-1:-1:-1;;;15867:68:0;;15219:2:1;15867:68:0;;;15201:21:1;15258:2;15238:18;;;15231:30;15297:34;15277:18;;;15270:62;-1:-1:-1;;;15348:18:1;;;15341:32;15390:19;;15867:68:0;15017:398:1;15867:68:0;-1:-1:-1;;;;;15946:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;15998:32;;3385:25:1;;;15998:32:0;;3358:18:1;15998:32:0;;;;;;;15703:335;;;:::o;16046:2387::-;-1:-1:-1;;;;;16134:18:0;;16126:68;;;;-1:-1:-1;;;16126:68:0;;15622:2:1;16126:68:0;;;15604:21:1;15661:2;15641:18;;;15634:30;15700:34;15680:18;;;15673:62;-1:-1:-1;;;15751:18:1;;;15744:35;15796:19;;16126:68:0;15420:401:1;16126:68:0;-1:-1:-1;;;;;16213:16:0;;16205:64;;;;-1:-1:-1;;;16205:64:0;;16028:2:1;16205:64:0;;;16010:21:1;16067:2;16047:18;;;16040:30;16106:34;16086:18;;;16079:62;-1:-1:-1;;;16157:18:1;;;16150:33;16200:19;;16205:64:0;15826:399:1;16205:64:0;16297:1;16288:6;:10;16280:64;;;;-1:-1:-1;;;16280:64:0;;16432:2:1;16280:64:0;;;16414:21:1;16471:2;16451:18;;;16444:30;16510:34;16490:18;;;16483:62;-1:-1:-1;;;16561:18:1;;;16554:39;16610:19;;16280:64:0;16230:405:1;16280:64:0;16373:15;16383:4;16373:9;:15::i;:::-;16363:6;:25;;16355:86;;;;-1:-1:-1;;;16355:86:0;;16842:2:1;16355:86:0;;;16824:21:1;16881:2;16861:18;;;16854:30;16920:34;16900:18;;;16893:62;-1:-1:-1;;;16971:18:1;;;16964:47;17028:19;;16355:86:0;16640:413:1;16355:86:0;-1:-1:-1;;;;;16461:20:0;;;;;;:14;:20;;;;;;;;16460:21;:44;;;;-1:-1:-1;;;;;;16486:18:0;;;;;;:14;:18;;;;;;;;16485:19;16460:44;16452:86;;;;-1:-1:-1;;;16452:86:0;;17260:2:1;16452:86:0;;;17242:21:1;17299:2;17279:18;;;17272:30;17338:31;17318:18;;;17311:59;17387:18;;16452:86:0;17058:353:1;16452:86:0;-1:-1:-1;;;;;16555:24:0;;;;;;:18;:24;;;;;;;;16554:25;:52;;;;-1:-1:-1;;;;;;16584:22:0;;;;;;:18;:22;;;;;;;;16583:23;16554:52;16551:128;;;16630:14;;;;16622:45;;;;-1:-1:-1;;;16622:45:0;;17618:2:1;16622:45:0;;;17600:21:1;17657:2;17637:18;;;17630:30;-1:-1:-1;;;17676:18:1;;;17669:48;17734:18;;16622:45:0;17416:342:1;16622:45:0;-1:-1:-1;;;;;16695:24:0;;;;;;:18;:24;;;;;;;;16694:25;:52;;;;-1:-1:-1;;;;;;16724:22:0;;;;;;:18;:22;;;;;;;;16723:23;16694:52;:89;;;;-1:-1:-1;16766:13:0;;:17;;16782:1;16766:17;:::i;:::-;16750:12;:33;;16694:89;16691:180;;;16814:4;;-1:-1:-1;;;;;16808:10:0;;;16814:4;;16808:10;;16800:59;;;;-1:-1:-1;;;16800:59:0;;17965:2:1;16800:59:0;;;17947:21:1;18004:2;17984:18;;;17977:30;18043:34;18023:18;;;18016:62;-1:-1:-1;;;18094:18:1;;;18087:34;18138:19;;16800:59:0;17763:400:1;16800:59:0;16894:4;;-1:-1:-1;;;;;16886:12:0;;;16894:4;;16886:12;:39;;;;-1:-1:-1;;;;;;16903:22:0;;;;;;:18;:22;;;;;;;;16902:23;16886:39;:52;;;;-1:-1:-1;16930:8:0;;;;;;;16929:9;16886:52;16883:246;;;16972:11;;16962:6;:21;;16954:63;;;;-1:-1:-1;;;16954:63:0;;18370:2:1;16954:63:0;;;18352:21:1;18409:2;18389:18;;;18382:30;18448:31;18428:18;;;18421:59;18497:18;;16954:63:0;18168:353:1;16954:63:0;17066:14;;17056:6;17040:13;17050:2;17040:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;17032:85;;;;-1:-1:-1;;;17032:85:0;;18728:2:1;17032:85:0;;;18710:21:1;;;18747:18;;;18740:30;18806:34;18786:18;;;18779:62;18858:18;;17032:85:0;18526:356:1;17032:85:0;17152:4;;-1:-1:-1;;;;;17144:12:0;;;17152:4;;17144:12;;;;:39;;-1:-1:-1;;;;;;17161:22:0;;;;;;:18;:22;;;;;;;;17160:23;17144:39;:68;;;;-1:-1:-1;;;;;;17188:24:0;;;;;;:18;:24;;;;;;;;17187:25;17144:68;:81;;;;-1:-1:-1;17217:8:0;;;;;;;17216:9;17144:81;17141:573;;;17259:12;;17249:6;:22;;17241:65;;;;-1:-1:-1;;;17241:65:0;;19089:2:1;17241:65:0;;;19071:21:1;19128:2;19108:18;;;19101:30;19167:32;19147:18;;;19140:60;19217:18;;17241:65:0;18887:354:1;17241:65:0;17330:4;;-1:-1:-1;;;;;17324:10:0;;;17330:4;;17324:10;17321:134;;17388:14;;17378:6;17362:13;17372:2;17362:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;17354:85;;;;-1:-1:-1;;;17354:85:0;;18728:2:1;17354:85:0;;;18710:21:1;;;18747:18;;;18740:30;18806:34;18786:18;;;18779:62;18858:18;;17354:85:0;18526:356:1;17354:85:0;17472:15;;;;17469:234;;;-1:-1:-1;;;;;17546:15:0;;17507:18;17546:15;;;:9;:15;;;;;;17528:33;;:15;:33;:::i;:::-;17507:54;;17602:12;;17588:10;:26;;17580:55;;;;-1:-1:-1;;;17580:55:0;;19448:2:1;17580:55:0;;;19430:21:1;19487:2;19467:18;;;19460:30;-1:-1:-1;;;19506:18:1;;;19499:46;19562:18;;17580:55:0;19246:340:1;17580:55:0;-1:-1:-1;;;;;;17654:15:0;;;;;;:9;:15;;;;;17672;17654:33;;17469:234;17763:14;4117:1;17763:2;:14;:::i;:::-;17757:20;;:2;:20;:::i;:::-;17747:6;17729:15;17739:4;17729:9;:15::i;:::-;:24;;;;:::i;:::-;:48;17726:111;;17821:15;17831:4;17821:9;:15::i;:::-;17812:6;17795:14;4117:1;17795:2;:14;:::i;:::-;17790:19;;:2;:19;:::i;:::-;:28;;;;:::i;:::-;:46;;;;:::i;:::-;17779:58;;;;:::i;:::-;;;17726:111;17852:12;17895:18;;17867:24;17885:4;17867:9;:24::i;:::-;17930:8;;-1:-1:-1;;17867:46:0;;-1:-1:-1;17930:8:0;;;;;17929:9;:20;;;;;17942:7;17929:20;:36;;;;-1:-1:-1;17961:4:0;;-1:-1:-1;;;;;17953:12:0;;;17961:4;;17953:12;;17929:36;:65;;;;-1:-1:-1;;;;;;17970:24:0;;;;;;:18;:24;;;;;;;;17969:25;17929:65;:92;;;;-1:-1:-1;;;;;;17999:22:0;;;;;;:18;:22;;;;;;;;17998:23;17929:92;17926:246;;;18046:4;;-1:-1:-1;;;;;18040:10:0;;;18046:4;;18040:10;18037:123;;;18068:18;;18053:45;;;;;;;;18088:9;18053:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18068:18;18053:14;:45::i;:::-;18037:123;;;18134:18;;18119:41;;;;;;;;18154:5;18119:41;;;;;;;;;;;;;;;;;;;;;;;;;;18134:18;18119:14;:41::i;:::-;18245:8;;18197:4;;18182:12;;18245:8;;;;;;:36;;-1:-1:-1;;;;;;18257:24:0;;;;;;:18;:24;;;;;;;;18245:36;:62;;;-1:-1:-1;;;;;;18285:22:0;;;;;;:18;:22;;;;;;;;18245:62;18242:82;;;18319:5;18309:15;;18242:82;18344:4;;-1:-1:-1;;;;;18338:10:0;;;18344:4;;18338:10;18335:28;;;-1:-1:-1;18359:4:0;18335:28;18376:49;18391:4;18397:2;18401:6;18409:7;18418:6;18376:14;:49::i;:::-;16115:2318;;;16046:2387;;;:::o;14989:158::-;15030:7;15051:15;15068;15087:19;:17;:19::i;:::-;15050:56;;-1:-1:-1;15050:56:0;-1:-1:-1;15124:15:0;15050:56;;15124:15;:::i;:::-;15117:22;;;;14989:158;:::o;12927:470::-;13013:36;;:::i;:::-;13074:37;13086:7;13095;13104:6;13074:11;:37::i;:::-;13062:49;;13231:53;13244:9;13255:7;13264;13273:10;:8;:10::i;:::-;13231:12;:53::i;:::-;13207:20;;;13122:162;13185:20;;;13122:162;13169:14;;;13122:162;13142:25;;;13122:162;;;13318:44;13123:9;13342:7;13351:10;:8;:10::i;:::-;13318:12;:44::i;:::-;13296:18;;;13295:67;12927:470;;;;;:::o;1809:173::-;1865:16;1884:6;;-1:-1:-1;;;;;1901:17:0;;;-1:-1:-1;;;;;;1901:17:0;;;;;;1934:40;;1884:6;;;;;;;1934:40;;1865:16;1934:40;1854:128;1809:173;:::o;19602:1123::-;5866:8;:15;;-1:-1:-1;;5866:15:0;;;;;19757:12:::1;::::0;::::1;::::0;19740:14:::1;::::0;::::1;::::0;19723::::1;::::0;::::1;::::0;5866:15;;19757:12;19723:31:::1;::::0;::::1;:::i;:::-;:46;;;;:::i;:::-;19722:52;::::0;19773:1:::1;19722:52;:::i;:::-;19700:74;;19785:32;19855:11;19838:4;:14;;;19820:15;:32;;;;:::i;:::-;:46;;;;:::i;:::-;19785:81:::0;-1:-1:-1;19877:14:0::1;19894:42;19785:81:::0;19894:15;:42:::1;:::i;:::-;19877:59:::0;-1:-1:-1;19974:21:0::1;20008:24;19877:59:::0;20008:16:::1;:24::i;:::-;20045:20;20068:38;20092:14:::0;20068:21:::1;:38;:::i;:::-;20045:61;;20117:19;20168:4;:14;;;20154:11;:28;;;;:::i;:::-;20138:45;::::0;:12;:45:::1;:::i;:::-;20117:66;;20194:29;20240:4;:14;;;20226:11;:28;;;;:::i;:::-;20194:60:::0;-1:-1:-1;20270:25:0;;20267:117:::1;;20311:61;20324:24;20350:21;20311:12;:61::i;:::-;20437:14;::::0;::::1;::::0;20396:20:::1;::::0;20419:15:::1;:11:::0;20433:1:::1;20419:15;:::i;:::-;:32;;;;:::i;:::-;20396:55:::0;-1:-1:-1;20465:16:0;;20462:95:::1;;20505:15;::::0;20497:48:::1;::::0;-1:-1:-1;;;;;20505:15:0::1;20532:12:::0;20497:34:::1;:48::i;:::-;20606:12;::::0;::::1;::::0;20567:18:::1;::::0;20588:15:::1;:11:::0;20602:1:::1;20588:15;:::i;:::-;:30;;;;:::i;:::-;20567:51:::0;-1:-1:-1;20632:14:0;;20629:89:::1;;20670:13;::::0;20662:44:::1;::::0;-1:-1:-1;;;;;20670:13:0::1;20695:10:::0;20662:32:::1;:44::i;:::-;-1:-1:-1::0;;5904:8:0;:16;;-1:-1:-1;;5904:16:0;;;-1:-1:-1;;;;;;;;;19602:1123:0:o;18481:1113::-;18605:28;18636:36;18647:7;18656;18665:6;18636:10;:36::i;:::-;-1:-1:-1;;;;;18689:19:0;;;;;;:11;:19;;;;;;18605:67;;-1:-1:-1;18689:19:0;;18685:115;;;-1:-1:-1;;;;;18765:15:0;;;;;;:7;:15;;;;;;:23;;18781:7;;18765:23;:::i;:::-;-1:-1:-1;;;;;18747:15:0;;;;;;:7;:15;;;;;:41;18685:115;-1:-1:-1;;;;;18814:22:0;;;;;;:11;:22;;;;;;;;18810:130;;;18911:17;;;;-1:-1:-1;;;;;18892:18:0;;;;;;:7;:18;;;;;;:36;;18911:17;18892:36;:::i;:::-;-1:-1:-1;;;;;18871:18:0;;;;;;:7;:18;;;;;:57;18810:130;18986:9;;-1:-1:-1;;;;;18970:15:0;;18986:9;18970:15;;;:7;:15;;;;;;:25;;18986:9;18970:25;:::i;:::-;-1:-1:-1;;;;;18952:15:0;;;;;;;:7;:15;;;;;;;;:43;;;;19046:17;;;19027:18;;;;;;;;;;:36;;19046:17;19027:36;:::i;:::-;-1:-1:-1;;;;;19006:18:0;;;;;;:7;:18;;;;;;;:57;;;;19079:6;;;:10;;;:24;;;19102:1;19093;:6;;;:10;19079:24;19076:56;;;19105:27;19117:1;:6;;;19125:1;:6;;;19105:11;:27::i;:::-;19161:1;19146;:12;;;:16;:36;;;;19181:1;19166;:12;;;:16;19146:36;19143:202;;;19199:41;19214:1;:12;;;19227:1;:12;;;19199:14;:41::i;:::-;19285:4;-1:-1:-1;;;;;19260:73:0;19269:6;-1:-1:-1;;;;;19260:73:0;;19322:1;:10;;;19307:1;:12;;;19292:1;:12;;;:27;;;;:::i;:::-;:40;;;;:::i;:::-;19260:73;;3385:25:1;;;3373:2;3358:18;19260:73:0;;;;;;;19143:202;19373:1;19358;:12;;;:16;:36;;;;19393:1;19378;:12;;;:16;19358:36;19355:83;;;19396:42;19411:1;:12;;;19425:1;:12;;;19396:14;:42::i;:::-;19465:1;19452;:10;;;:14;:32;;;;19483:1;19470;:10;;;:14;19452:32;19449:73;;;19486:36;19499:1;:10;;;19511:1;:10;;;19486:12;:36::i;:::-;19555:9;-1:-1:-1;;;;;19538:46:0;19547:6;-1:-1:-1;;;;;19538:46:0;;19566:1;:17;;;19538:46;;;;3385:25:1;;3373:2;3358:18;;3239:177;19538:46:0;;;;;;;;18592:1002;18481:1113;;;;;:::o;15155:540::-;15252:7;;15288;;15205;;;;;15306:279;15330:9;:16;15326:20;;15306:279;;;15396:7;15372;:21;15380:9;15390:1;15380:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;15380:12:0;15372:21;;;;;;;;;;;;;:31;;:66;;;15431:7;15407;:21;15415:9;15425:1;15415:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;15415:12:0;15407:21;;;;;;;;;;;;;:31;15372:66;15368:97;;;15448:7;;15457;;15440:25;;;;;;;15155:540;;:::o;15368:97::-;15498:7;:21;15506:9;15516:1;15506:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;15506:12:0;15498:21;;;;;;;;;;;;;15490:29;;:7;:29;:::i;:::-;15480:39;;15552:7;:21;15560:9;15570:1;15560:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;15560:12:0;15552:21;;;;;;;;;;;;;15544:29;;:7;:29;:::i;:::-;15534:39;-1:-1:-1;15348:3:0;;;;:::i;:::-;;;;15306:279;;;;15617:7;;15609;;:15;;;;:::i;:::-;15599:7;:25;15595:56;;;15634:7;;15643;;15626:25;;;;;;15155:540;;:::o;15595:56::-;15670:7;;15679;;-1:-1:-1;15155:540:0;-1:-1:-1;15155:540:0:o;13405:612::-;13492:28;;:::i;:::-;13539:7;13535:86;;13561:17;;;:27;;;13601:8;;13535:86;13631:17;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13631:17:0;13662:6;13659:55;;;-1:-1:-1;13670:16:0;;;;;;;;13677:9;13670:16;;;;;;;;;;;;;;;;;;;;;;;;;;;13659:55;;;-1:-1:-1;13702:12:0;;;;;;;;13709:5;13702:12;;;;;;;;;;;;;;;;;;;;;;;;13659:55;13744:8;;13753:3;;13736:16;;:7;:16;:::i;:::-;:20;;;;:::i;:::-;13727:6;;;:29;13790:14;;;;13805:3;;13782:22;;:7;:22;:::i;:::-;:26;;;;:::i;:::-;13767:12;;;:41;13842:14;;;;13857:3;;13834:22;;:7;:22;:::i;:::-;:26;;;;:::i;:::-;13819:12;;;:41;13892:12;;;;13905:3;;13884:20;;:7;:20;:::i;:::-;:24;;;;:::i;:::-;13871:10;;;:37;;;13967:12;;;;13954;;;;13947:6;;;;13939:14;;:7;:14;:::i;:::-;:27;;;;:::i;:::-;:40;;;;:::i;:::-;:51;;;;:::i;:::-;13919:17;;;:71;-1:-1:-1;13405:612:0;;;;;:::o;14025:680::-;14151:15;;;;;14266:19;14274:11;14266:7;:19;:::i;:::-;14256:29;;14302:7;14298:69;;-1:-1:-1;14331:7:0;;-1:-1:-1;14349:1:0;;-1:-1:-1;14349:1:0;;-1:-1:-1;14349:1:0;14324:31;;14298:69;14393:11;14386:1;:6;;;:18;;;;:::i;:::-;14379:25;;14441:11;14428:1;:12;;;:24;;;;:::i;:::-;14415:37;;14489:11;14476:1;:12;;;:24;;;;:::i;:::-;14463:37;;14511:16;14541:11;14530:1;:10;;;:22;;;;:::i;:::-;14511:41;-1:-1:-1;14511:41:0;14606:10;14595;14582:12;14590:4;14582:7;:12;:::i;:::-;:23;;;;:::i;:::-;:34;;;;:::i;:::-;:43;;;;:::i;:::-;14563:62;;14636:61;14025:680;;;;;;;;;;:::o;14713:268::-;14822:16;14857:7;14853:47;;-1:-1:-1;14886:1:0;14879:9;;14853:47;14934:11;14923:1;:10;;;:22;;;;:::i;:::-;14912:33;14713:268;-1:-1:-1;;;;14713:268:0:o;21139:562::-;21289:16;;;21303:1;21289:16;;;;;;;;21265:21;;21289:16;;;;;;;;;;-1:-1:-1;21289:16:0;21265:40;;21334:4;21316;21321:1;21316:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;21316:23:0;;;:7;;;;;;;;;;:23;;;;21360:6;;:13;;;-1:-1:-1;;;21360:13:0;;;;:6;;;;;:11;;:13;;;;;21316:7;;21360:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21350:4;21355:1;21350:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;21350:23:0;;;:7;;;;;;;;;:23;21418:6;;21386:53;;21403:4;;21418:6;21427:11;21386:8;:53::i;:::-;21478:6;;:215;;-1:-1:-1;;;21478:215:0;;-1:-1:-1;;;;;21478:6:0;;;;:57;;:215;;21550:11;;21478:6;;21620:4;;21647;;21667:15;;21478:215;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20733:398;20846:6;;20814:53;;20831:4;;-1:-1:-1;;;;;20846:6:0;20855:11;20814:8;:53::i;:::-;20880:6;;-1:-1:-1;;;;;20880:6:0;:22;20910:9;20943:4;20963:11;20880:6;;21075:7;1330;1357:6;-1:-1:-1;;;;;1357:6:0;;1284:87;21075:7;20880:243;;;;;;-1:-1:-1;;;;;;20880:243:0;;;-1:-1:-1;;;;;21191:15:1;;;20880:243:0;;;21173:34:1;21223:18;;;21216:34;;;;21266:18;;;21259:34;;;;21309:18;;;21302:34;21373:15;;;21352:19;;;21345:44;21097:15:0;21405:19:1;;;21398:35;21107:19;;20880:243:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;20733:398;;:::o;2752:317::-;2867:6;2842:21;:31;;2834:73;;;;-1:-1:-1;;;2834:73:0;;21957:2:1;2834:73:0;;;21939:21:1;21996:2;21976:18;;;21969:30;22035:31;22015:18;;;22008:59;22084:18;;2834:73:0;21755:353:1;2834:73:0;2921:12;2939:9;-1:-1:-1;;;;;2939:14:0;2961:6;2939:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2920:52;;;2991:7;2983:78;;;;-1:-1:-1;;;2983:78:0;;22525:2:1;2983:78:0;;;22507:21:1;22564:2;22544:18;;;22537:30;22603:34;22583:18;;;22576:62;22674:28;22654:18;;;22647:56;22720:19;;2983:78:0;22323:422:1;11934:123:0;12012:4;12002:7;;:14;;;;;;;:::i;:::-;;;;-1:-1:-1;;12027:11:0;:22;;12045:4;;12027:11;:15;;:22;;12045:4;;12027:22;:::i;:::-;;;;-1:-1:-1;;;;11934:123:0:o;12065:284::-;12172:10;12148:11;:21;;;:34;;;;;;;:::i;:::-;;;;-1:-1:-1;;12218:4:0;12198:26;;;;:11;:26;;;;;;;;12195:101;;;12266:4;12250:22;;;;:7;:22;;;;;:34;;12274:10;;12250:22;:34;;12274:10;;12250:34;:::i;:::-;;;;-1:-1:-1;;12195:101:0;12322:4;12306:22;;;;:7;:22;;;;;:35;;12331:10;;12306:22;:35;;12331:10;;12306:35;:::i;12357:284::-;12464:10;12440:11;:21;;;:34;;;;;;;:::i;12649:270::-;12748:8;12726:11;:19;;;:30;;;;;;;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:131:1:-;-1:-1:-1;;;;;89:31:1;;79:42;;69:70;;135:1;132;125:12;150:134;218:20;;247:31;218:20;247:31;:::i;:::-;150:134;;;:::o;289:247::-;348:6;401:2;389:9;380:7;376:23;372:32;369:52;;;417:1;414;407:12;369:52;456:9;443:23;475:31;500:5;475:31;:::i;541:597::-;653:4;682:2;711;700:9;693:21;743:6;737:13;786:6;781:2;770:9;766:18;759:34;811:1;821:140;835:6;832:1;829:13;821:140;;;930:14;;;926:23;;920:30;896:17;;;915:2;892:26;885:66;850:10;;821:140;;;979:6;976:1;973:13;970:91;;;1049:1;1044:2;1035:6;1024:9;1020:22;1016:31;1009:42;970:91;-1:-1:-1;1122:2:1;1101:15;-1:-1:-1;;1097:29:1;1082:45;;;;1129:2;1078:54;;541:597;-1:-1:-1;;;541:597:1:o;1143:315::-;1211:6;1219;1272:2;1260:9;1251:7;1247:23;1243:32;1240:52;;;1288:1;1285;1278:12;1240:52;1327:9;1314:23;1346:31;1371:5;1346:31;:::i;:::-;1396:5;1448:2;1433:18;;;;1420:32;;-1:-1:-1;;;1143:315:1:o;1655:127::-;1716:10;1711:3;1707:20;1704:1;1697:31;1747:4;1744:1;1737:15;1771:4;1768:1;1761:15;1787:118;1873:5;1866:13;1859:21;1852:5;1849:32;1839:60;;1895:1;1892;1885:12;1910:128;1975:20;;2004:28;1975:20;2004:28;:::i;2043:1191::-;2133:6;2141;2194:2;2182:9;2173:7;2169:23;2165:32;2162:52;;;2210:1;2207;2200:12;2162:52;2250:9;2237:23;2279:18;2320:2;2312:6;2309:14;2306:34;;;2336:1;2333;2326:12;2306:34;2374:6;2363:9;2359:22;2349:32;;2419:7;2412:4;2408:2;2404:13;2400:27;2390:55;;2441:1;2438;2431:12;2390:55;2477:2;2464:16;2499:4;2522:2;2518;2515:10;2512:36;;;2528:18;;:::i;:::-;2574:2;2571:1;2567:10;2606:2;2600:9;2669:2;2665:7;2660:2;2656;2652:11;2648:25;2640:6;2636:38;2724:6;2712:10;2709:22;2704:2;2692:10;2689:18;2686:46;2683:72;;;2735:18;;:::i;:::-;2771:2;2764:22;2821:18;;;2855:15;;;;-1:-1:-1;2897:11:1;;;2893:20;;;2925:19;;;2922:39;;;2957:1;2954;2947:12;2922:39;2981:11;;;;3001:148;3017:6;3012:3;3009:15;3001:148;;;3083:23;3102:3;3083:23;:::i;:::-;3071:36;;3034:12;;;;3127;;;;3001:148;;;3168:6;-1:-1:-1;3193:35:1;;-1:-1:-1;3209:18:1;;;3193:35;:::i;:::-;3183:45;;;;;;2043:1191;;;;;:::o;3421:456::-;3498:6;3506;3514;3567:2;3555:9;3546:7;3542:23;3538:32;3535:52;;;3583:1;3580;3573:12;3535:52;3622:9;3609:23;3641:31;3666:5;3641:31;:::i;:::-;3691:5;-1:-1:-1;3748:2:1;3733:18;;3720:32;3761:33;3720:32;3761:33;:::i;:::-;3421:456;;3813:7;;-1:-1:-1;;;3867:2:1;3852:18;;;;3839:32;;3421:456::o;3882:180::-;3941:6;3994:2;3982:9;3973:7;3969:23;3965:32;3962:52;;;4010:1;4007;4000:12;3962:52;-1:-1:-1;4033:23:1;;3882:180;-1:-1:-1;3882:180:1:o;4256:241::-;4312:6;4365:2;4353:9;4344:7;4340:23;4336:32;4333:52;;;4381:1;4378;4371:12;4333:52;4420:9;4407:23;4439:28;4461:5;4439:28;:::i;4502:388::-;4570:6;4578;4631:2;4619:9;4610:7;4606:23;4602:32;4599:52;;;4647:1;4644;4637:12;4599:52;4686:9;4673:23;4705:31;4730:5;4705:31;:::i;:::-;4755:5;-1:-1:-1;4812:2:1;4797:18;;4784:32;4825:33;4784:32;4825:33;:::i;:::-;4877:7;4867:17;;;4502:388;;;;;:::o;4895:309::-;4960:6;4968;5021:2;5009:9;5000:7;4996:23;4992:32;4989:52;;;5037:1;5034;5027:12;4989:52;5073:9;5060:23;5050:33;;5133:2;5122:9;5118:18;5105:32;5146:28;5168:5;5146:28;:::i;5209:248::-;5277:6;5285;5338:2;5326:9;5317:7;5313:23;5309:32;5306:52;;;5354:1;5351;5344:12;5306:52;-1:-1:-1;;5377:23:1;;;5447:2;5432:18;;;5419:32;;-1:-1:-1;5209:248:1:o;5462:382::-;5527:6;5535;5588:2;5576:9;5567:7;5563:23;5559:32;5556:52;;;5604:1;5601;5594:12;5556:52;5643:9;5630:23;5662:31;5687:5;5662:31;:::i;:::-;5712:5;-1:-1:-1;5769:2:1;5754:18;;5741:32;5782:30;5741:32;5782:30;:::i;6453:385::-;6539:6;6547;6555;6563;6616:3;6604:9;6595:7;6591:23;6587:33;6584:53;;;6633:1;6630;6623:12;6584:53;-1:-1:-1;;6656:23:1;;;6726:2;6711:18;;6698:32;;-1:-1:-1;6777:2:1;6762:18;;6749:32;;6828:2;6813:18;6800:32;;-1:-1:-1;6453:385:1;-1:-1:-1;6453:385:1:o;6843:309::-;6908:6;6916;6969:2;6957:9;6948:7;6944:23;6940:32;6937:52;;;6985:1;6982;6975:12;6937:52;7024:9;7011:23;7043:28;7065:5;7043:28;:::i;7380:356::-;7582:2;7564:21;;;7601:18;;;7594:30;7660:34;7655:2;7640:18;;7633:62;7727:2;7712:18;;7380:356::o;7741:347::-;7943:2;7925:21;;;7982:2;7962:18;;;7955:30;8021:25;8016:2;8001:18;;7994:53;8079:2;8064:18;;7741:347::o;8093:127::-;8154:10;8149:3;8145:20;8142:1;8135:31;8185:4;8182:1;8175:15;8209:4;8206:1;8199:15;8225:127;8286:10;8281:3;8277:20;8274:1;8267:31;8317:4;8314:1;8307:15;8341:4;8338:1;8331:15;8357:135;8396:3;-1:-1:-1;;8417:17:1;;8414:43;;;8437:18;;:::i;:::-;-1:-1:-1;8484:1:1;8473:13;;8357:135::o;8906:125::-;8946:4;8974:1;8971;8968:8;8965:34;;;8979:18;;:::i;:::-;-1:-1:-1;9016:9:1;;8906:125::o;9447:217::-;9487:1;9513;9503:132;;9557:10;9552:3;9548:20;9545:1;9538:31;9592:4;9589:1;9582:15;9620:4;9617:1;9610:15;9503:132;-1:-1:-1;9649:9:1;;9447:217::o;10021:127::-;10082:10;10077:3;10073:20;10070:1;10063:31;10113:4;10110:1;10103:15;10137:4;10134:1;10127:15;10153:128;10193:3;10224:1;10220:6;10217:1;10214:13;10211:39;;;10230:18;;:::i;:::-;-1:-1:-1;10266:9:1;;10153:128::o;11278:245::-;11345:6;11398:2;11386:9;11377:7;11373:23;11369:32;11366:52;;;11414:1;11411;11404:12;11366:52;11446:9;11440:16;11465:28;11487:5;11465:28;:::i;11884:422::-;11973:1;12016:5;11973:1;12030:270;12051:7;12041:8;12038:21;12030:270;;;12110:4;12106:1;12102:6;12098:17;12092:4;12089:27;12086:53;;;12119:18;;:::i;:::-;12169:7;12159:8;12155:22;12152:55;;;12189:16;;;;12152:55;12268:22;;;;12228:15;;;;12030:270;;;12034:3;11884:422;;;;;:::o;12311:806::-;12360:5;12390:8;12380:80;;-1:-1:-1;12431:1:1;12445:5;;12380:80;12479:4;12469:76;;-1:-1:-1;12516:1:1;12530:5;;12469:76;12561:4;12579:1;12574:59;;;;12647:1;12642:130;;;;12554:218;;12574:59;12604:1;12595:10;;12618:5;;;12642:130;12679:3;12669:8;12666:17;12663:43;;;12686:18;;:::i;:::-;-1:-1:-1;;12742:1:1;12728:16;;12757:5;;12554:218;;12856:2;12846:8;12843:16;12837:3;12831:4;12828:13;12824:36;12818:2;12808:8;12805:16;12800:2;12794:4;12791:12;12787:35;12784:77;12781:159;;;-1:-1:-1;12893:19:1;;;12925:5;;12781:159;12972:34;12997:8;12991:4;12972:34;:::i;:::-;13042:6;13038:1;13034:6;13030:19;13021:7;13018:32;13015:58;;;13053:18;;:::i;:::-;13091:20;;12311:806;-1:-1:-1;;;12311:806:1:o;13122:140::-;13180:5;13209:47;13250:4;13240:8;13236:19;13230:4;13209:47;:::i;13267:168::-;13307:7;13373:1;13369;13365:6;13361:14;13358:1;13355:21;13350:1;13343:9;13336:17;13332:45;13329:71;;;13380:18;;:::i;:::-;-1:-1:-1;13420:9:1;;13267:168::o;19591:251::-;19661:6;19714:2;19702:9;19693:7;19689:23;19685:32;19682:52;;;19730:1;19727;19720:12;19682:52;19762:9;19756:16;19781:31;19806:5;19781:31;:::i;19847:980::-;20109:4;20157:3;20146:9;20142:19;20188:6;20177:9;20170:25;20214:2;20252:6;20247:2;20236:9;20232:18;20225:34;20295:3;20290:2;20279:9;20275:18;20268:31;20319:6;20354;20348:13;20385:6;20377;20370:22;20423:3;20412:9;20408:19;20401:26;;20462:2;20454:6;20450:15;20436:29;;20483:1;20493:195;20507:6;20504:1;20501:13;20493:195;;;20572:13;;-1:-1:-1;;;;;20568:39:1;20556:52;;20663:15;;;;20628:12;;;;20604:1;20522:9;20493:195;;;-1:-1:-1;;;;;;;20744:32:1;;;;20739:2;20724:18;;20717:60;-1:-1:-1;;;20808:3:1;20793:19;20786:35;20705:3;19847:980;-1:-1:-1;;;19847:980:1:o;21444:306::-;21532:6;21540;21548;21601:2;21589:9;21580:7;21576:23;21572:32;21569:52;;;21617:1;21614;21607:12;21569:52;21646:9;21640:16;21630:26;;21696:2;21685:9;21681:18;21675:25;21665:35;;21740:2;21729:9;21725:18;21719:25;21709:35;;21444:306;;;;;:::o

Swarm Source

ipfs://7944e3817e506ffb6f9c2915854efbaca8496efc41a1c10c2a7b3221fd45c1f0
Loading