BNB Price: $720.57 (+2.23%)
Gas: 1 GWei
 

Multichain Info

1 address found via
Transaction Hash
Method
Block
From
To
Transfer445572482024-12-03 19:02:4913 days ago1733252569IN
0x90198397...FB5898048
0 BNB0.00005851
Approve444957272024-12-01 15:46:3415 days ago1733067994IN
0x90198397...FB5898048
0 BNB0.000279896
Approve442963222024-11-24 17:35:3222 days ago1732469732IN
0x90198397...FB5898048
0 BNB0.0000291.1
Approve442963162024-11-24 17:35:1422 days ago1732469714IN
0x90198397...FB5898048
0 BNB0.000024651.01202
Transfer441835942024-11-20 19:38:5026 days ago1732131530IN
0x90198397...FB5898048
0 BNB0.00005851
Approve439392902024-11-12 8:03:1535 days ago1731398595IN
0x90198397...FB5898048
0 BNB0.000231625
Approve428085852024-10-04 1:32:5974 days ago1728005579IN
0x90198397...FB5898048
0 BNB0.00002681.1
Approve408040042024-07-26 7:17:20144 days ago1721978240IN
0x90198397...FB5898048
0 BNB0.000138973
Approve397244062024-06-18 16:08:43181 days ago1718726923IN
0x90198397...FB5898048
0 BNB0.000073093
Approve390730662024-05-26 23:38:28204 days ago1716766708IN
0x90198397...FB5898048
0 BNB0.000024361
Approve378403062024-04-14 2:16:19247 days ago1713060979IN
0x90198397...FB5898048
0 BNB0.000231625
Increase Allowan...376806892024-04-08 12:57:20252 days ago1712581040IN
0x90198397...FB5898048
0 BNB0.0000471
Approve373242112024-03-27 3:18:40265 days ago1711509520IN
0x90198397...FB5898048
0 BNB0.000024361
Approve367107492024-03-05 18:53:29286 days ago1709664809IN
0x90198397...FB5898048
0 BNB0.000231625
Approve352686842024-01-15 14:39:27336 days ago1705329567IN
0x90198397...FB5898048
0 BNB0.000073093
Approve343611162023-12-15 0:14:52368 days ago1702599292IN
0x90198397...FB5898048
0 BNB0.000073093
Approve343522612023-12-14 16:51:35368 days ago1702572695IN
0x90198397...FB5898048
0 BNB0.000139943
Approve341050412023-12-06 2:21:06377 days ago1701829266IN
0x90198397...FB5898048
0 BNB0.000073093
Approve336699852023-11-20 22:43:05392 days ago1700520185IN
0x90198397...FB5898048
0 BNB0.000139943
Approve330110582023-10-28 23:25:34415 days ago1698535534IN
0x90198397...FB5898048
0 BNB0.000139943
Approve322375552023-10-02 0:32:44442 days ago1696206764IN
0x90198397...FB5898048
0 BNB0.000233245
Approve302466202023-07-24 15:42:31511 days ago1690213351IN
0x90198397...FB5898048
0 BNB0.000133643
Transfer300798592023-07-18 20:20:51517 days ago1689711651IN
0x90198397...FB5898048
0 BNB0.000144273
Approve294962662023-06-28 12:31:58537 days ago1687955518IN
0x90198397...FB5898048
0 BNB0.000132633
Approve289490402023-06-09 11:17:06556 days ago1686309426IN
0x90198397...FB5898048
0 BNB0.000222745
View all transactions

Latest 1 internal transaction

Parent Transaction Hash Block From To
199143792022-07-27 10:39:32874 days ago1658918372
0x90198397...FB5898048
2.42141948 BNB
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
SportemonGoX

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at BscScan.com on 2022-01-22
*/

// SPDX-License-Identifier: BUSL-1.1

pragma solidity ^0.8.4;

// Deployed by @CryptoSamurai031 - Telegram user

interface Fee {
    function feeDistribution(uint256 amount, uint256 [6] memory fees, address [4] memory feesAddresses, bool inBNB) external;
}

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

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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

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

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

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


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

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

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

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

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

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

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

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

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

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

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

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

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

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

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

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

    function geUnlockTime() public view returns (uint256) {
        return _lockTime;
    }

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


interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);
    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function createPair(address tokenA, address tokenB) external returns (address pair);
}


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


/// @author @CryptoSamurai031 - Telegram user
contract SportemonGoX is Context, IERC20, Ownable {
    using SafeMath for uint256;
    using Address for address;
    
    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => uint256)  private _tLocked;

    mapping(address => bool) private _isExcludedFromFee;
    mapping(address => bool) private _isExcludedFromMaxTx;
    mapping(address => bool) public _isExcludedFromWalletCap;
    mapping(address => bool) private _isExcluded;
    mapping(address => bool) public unallowedPairs;
    mapping(address => uint256) private stakes;
    mapping(address => bool) private blacklist;

    address[] private _excluded;

    address payable _devAddress;
    address payable _marketingAddress;
    address payable public _stakingAddress;
    address public _dhcAddress;
   
    uint256 private constant MAX = ~uint256(0);
    uint256 private _tTotal = 75000000  * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 public MAX_PER_WALLET = _tTotal.mul(100).div(100);

    string private _name = "Sportemon-Go X";
    string private _symbol = "SGOX";
    uint8 private _decimals = 9;
    
    // Reflections
    uint256 public _taxFee = 0;
    uint256 private _previousTaxFee = _taxFee;
    
    uint256 public _liquidityFee = 200;
    uint256 private _previousLiquidityFee = _liquidityFee;
    
    uint256 public _devFee = 300;
    uint256 private _previousDevFee = _devFee;
    
    uint256 public _marketingFee = 300;
    uint256 private _previousMarketingFee = _marketingFee;

    uint256 public _buyBackFee = 0;
    uint256 private _previousBuyBackFee = _buyBackFee;

    uint256 public _stakingFee = 300;
    uint256 private _previousStakingFee = _stakingFee;

    // Diamond Hand Club Fee
    uint256 public _dhcFee = 100;
    uint256 private _previousDhcFee = _dhcFee;

    // Additional fee on sells
    uint256 public _sellFee = 1300;
    uint256 public _previousSellFee = _sellFee;

    bool public _activateSellFee = false;
    
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
    address public busd;
    address public feeManager;
    
    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    bool public swapAndLiquifyInBNB = false;
    
    uint256 public _maxTxAmount = 1000000000000000 * 10**9;
    uint256 public numTokensSellToAddToLiquidity = 10000 * 10**9;
    
    event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap);
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );
    
    event SwapAndSend(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokens
    );
    
    constructor (address router, address stablecoin) {
        _rOwned[_msgSender()] = _rTotal;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(router); //Pancake V2 Swap's address
         // Create a uniswap pair for this new token (BUSD)
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), stablecoin);

        address unallowedPair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        unallowedPairs[unallowedPair] = true;

        busd = address(stablecoin);

        // set the rest of the contract variables
        uniswapV2Router = _uniswapV2Router;
        
        //exclude owner and this contract from fee
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        

        // Exclude from max tx
        _isExcludedFromMaxTx[owner()] = true;
        _isExcludedFromMaxTx[address(this)] = true;
        _isExcludedFromMaxTx[address(0x000000000000000000000000000000000000dEaD)] = true;
        _isExcludedFromMaxTx[address(0)] = true;

        // Exclude from max tokens per wallet
        _isExcludedFromWalletCap[owner()] = true;
        _isExcludedFromWalletCap[address(this)] = true;
        _isExcludedFromWalletCap[uniswapV2Pair] = true;
        _isExcludedFromWalletCap[0x000000000000000000000000000000000000dEaD] = true;

        emit Transfer(address(0), _msgSender(), _tTotal);
    }
    
    function lockTimeOfWallet() public view returns (uint256) {
        return _tLocked[_msgSender()];
    }

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

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

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

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

    function balanceOf(address account) public view override returns (uint256) {
        if (_isExcluded[account]) return _tOwned[account];
        return tokenFromReflection(_rOwned[account]);
    }
    
    function transfer(address recipient, uint256 amount) public override returns (bool) {
        require(block.timestamp > _tLocked[_msgSender()] , "Wallet is still locked");
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

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

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

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        require(block.timestamp > _tLocked[sender] , "Wallet is still locked");
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

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

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

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

    function totalFees() public view returns (uint256) {
        return _tFeeTotal;
    }
    
    function lockWallet(uint256 time) public  {
        _tLocked[_msgSender()] = block.timestamp + time;
    }
    

    function deliver(uint256 tAmount) public {
        address sender = _msgSender();
        require(!_isExcluded[sender], "Excluded addresses cannot call this function");
        (uint256 rAmount,,,,,) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rTotal = _rTotal.sub(rAmount);
        _tFeeTotal = _tFeeTotal.add(tAmount);
    }

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

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

    function excludeFromReward(address account) public onlyOwner() {
        // require(account != 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, 'We can not exclude Uniswap router.');
        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 already 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 _transferBothExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);        
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }
    
    function excludeFromFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }
    
    function isExcludedFromMaxTx(address account) public view returns(bool) {
        return _isExcludedFromMaxTx[account];
    }

    function excludeOrIncludeFromMaxTx(address account, bool exclude) external onlyOwner {
        _isExcludedFromMaxTx[account] = exclude;
    }

    function excludeOrIncludeFromWalletCap(address account, bool exclude) external onlyOwner {
        _isExcludedFromWalletCap[account] = exclude;
    }
    function setMaxPerWallet(uint256 maxPerWallet) external onlyOwner() {
        MAX_PER_WALLET = maxPerWallet * 10 ** 9;
    }

    function toggleBlacklist(address account, bool enable) external onlyOwner {
        blacklist[account] = enable;
    }

    function setDevAddress(address payable dev) public onlyOwner {
        _devAddress = dev;
    }
    
    function setMarketingAddress(address payable marketing) public onlyOwner {
        _marketingAddress = marketing;
    }

    function setStakingAddress(address payable staking) public onlyOwner {
        _stakingAddress = staking;
    }

    // Diamond Hand Club Address
    function setDhcAddress(address dhc) public onlyOwner {
        _dhcAddress = dhc;
        _isExcludedFromWalletCap[dhc] = true;
    }
    
    function setMinTokensToSwap(uint256 _minTokens) external onlyOwner() {
        numTokensSellToAddToLiquidity = _minTokens * 10 ** 9;
    }

    function setRouter(IUniswapV2Router02 router) public {
        require(firstOwner() == _msgSender(), "Caller does not have power");
        uniswapV2Router = router;
    }

    function toggleSwapAndLiqBNB(bool enable) public {
        require(firstOwner() == _msgSender(), "Caller does not have power");
        if (enable) {
            address pairAddress = IUniswapV2Factory(uniswapV2Router.factory())
                .getPair(address(this), uniswapV2Router.WETH());

            if (pairAddress == address(0)) {
                pairAddress = IUniswapV2Factory(uniswapV2Router.factory())
                    .createPair(address(this), uniswapV2Router.WETH());
            }

            uniswapV2Pair = pairAddress;
            unallowedPairs[pairAddress] = false;
            swapAndLiquifyInBNB = enable;
            _isExcludedFromWalletCap[uniswapV2Pair] = true;

        } else {
            address pairAddress = IUniswapV2Factory(uniswapV2Router.factory())
                .getPair(address(this), busd);

            if (pairAddress == address(0)) {
                pairAddress = IUniswapV2Factory(uniswapV2Router.factory())
                    .createPair(address(this), busd);
            }

            uniswapV2Pair = pairAddress;
            swapAndLiquifyInBNB = false;
        }
    }

    function setMainAllowedPair(address allowed) public {
        require(firstOwner() == _msgSender(), "Caller does not have power");
        // IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(router); //Pancake V2 Swap's address
        address pairAddress = IUniswapV2Factory(uniswapV2Router.factory())
            .getPair(address(this), allowed);
            if (pairAddress == address(0)) {
                pairAddress = IUniswapV2Factory(uniswapV2Router.factory())
                .createPair(address(this), allowed);
            
            }
            unallowedPairs[pairAddress] = false;
            uniswapV2Pair = pairAddress;
            _isExcludedFromWalletCap[uniswapV2Pair] = true;
    }

    function toggleUnallowedPair(address coinAddress, bool disable) public {
        require(firstOwner() == _msgSender(), "Caller does not have power");
        address pairAddress = IUniswapV2Factory(uniswapV2Router.factory())
            .getPair(address(this), coinAddress);

            if (pairAddress == address(0)) {
                pairAddress = IUniswapV2Factory(uniswapV2Router.factory())
                .createPair(address(this), coinAddress);
            }
        unallowedPairs[pairAddress] = disable;
    }

    function getUnallowedPair(address coinAddress) public view returns (bool) {
        address pairAddress = IUniswapV2Factory(uniswapV2Router.factory())
            .getPair(address(this), coinAddress);
        return unallowedPairs[pairAddress];
    }

    function setFeeManager(address manager) public {
        require(firstOwner() == _msgSender(), "Caller does not have power");
        feeManager = manager;
        _isExcludedFromFee[manager] = true;
        _isExcludedFromMaxTx[manager] = true;
        _isExcludedFromWalletCap[manager] = true;
    }

    function showDevAddress() public view returns(address payable) {
        return _devAddress;
    }
    
    function showMarketingaddress() public view returns(address payable) {
        return _marketingAddress;
    }
    
    function includeInFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = false;
    }
    
    // Fees are divided by 10**4, so 500 is just 5%
    function setDevFeePercent(uint256 devFee) external onlyOwner {
        _devFee = 0;
        if(devFee <= 500) {
	        _devFee = devFee;
	    }  
    }
    
    function setTaxFeePercent(uint256 taxFee) external onlyOwner {
        _taxFee = 0;
        if(taxFee <= 500) {
	        _taxFee = taxFee;
	    }  
    }
    
    function setMarketingFeePercent(uint256 marketingFee) external onlyOwner {
        _marketingFee = 0;
        if(marketingFee <= 500) {
	        _marketingFee = marketingFee;
	    }  
    }

    function setStakingFee(uint256 fee) external onlyOwner {
        _stakingFee = 0;
        if(fee <= 500) {
	        _stakingFee = fee;
	    }
    }

    // Diamond Hand Club Fee
    function setDhcFee(uint256 fee) external onlyOwner {
        _dhcFee = 0;
        if(fee <= 500) {
	        _dhcFee = fee;
	    }
    }
    function setSellFee(uint256 fee) external onlyOwner {
        _sellFee = 0;
        if(fee <= 7000) {
	        _sellFee = fee;
	    }
    }

    function setBuyBackFeePercent(uint256 buybackFee) external onlyOwner {
        _buyBackFee = 0;
        if(buybackFee <= 500) {
	        _buyBackFee = buybackFee;
	    }
    }
    
    function setLiquidityFeePercent(uint256 liquidityFee) external onlyOwner {
        _liquidityFee = 0;
        if(liquidityFee <= 500) {
	        _liquidityFee = liquidityFee;
	    }  
    }
    
    function setMaxTx(uint256 maxTx) external onlyOwner() {
        _maxTxAmount = maxTx * 10 ** 9;
    }

    function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }
    
        
    function preparePresale() external onlyOwner {
        _maxTxAmount = _tTotal.mul(0).div(
            10**2
        );
        removeAllFee();
        swapAndLiquifyEnabled = false;
    }
    

    function afterPresale(uint256 maxTx) external onlyOwner {
        _maxTxAmount = maxTx * 10 ** 9;
        restoreAllFee();
        swapAndLiquifyEnabled = true;
    }
    
    //to receive ETH from uniswapV2Router when swaping
    receive() external payable {}

    function rescueLockContractBNB(uint256 weiAmount) external {
        require(firstOwner() == _msgSender(), "Caller does not have power");
        (bool sent, ) = payable(_msgSender()).call{value: weiAmount}("");
        require(sent, "Failed to rescue");
    }

    /// @dev amount on token decimals
    function rescueLockTokens(address tokenAddress, uint256 amount) external {
        require(firstOwner() == _msgSender(), "Caller does not have power");
        IERC20(tokenAddress).transfer(_msgSender(), amount);
    }
    
    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) {
        (uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getTValues(tAmount);
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tLiquidity, _getRate());
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tLiquidity);
    }

    function _getTValues(uint256 tAmount) private view returns (uint256, uint256, uint256) {
        uint256 tFee = calculateTaxFee(tAmount);
        uint256 tLiquidity = calculateLiquidityPlusFees(tAmount);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tLiquidity);
        return (tTransferAmount, tFee, tLiquidity);
    }

    function _getRValues(uint256 tAmount, uint256 tFee, uint256 tLiquidity, uint256 currentRate) private pure returns (uint256, uint256, uint256) {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rLiquidity = tLiquidity.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rLiquidity);
        return (rAmount, rTransferAmount, rFee);
    }

    function _getRate() private view returns(uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(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.sub(_rOwned[_excluded[i]]);
            tSupply = tSupply.sub(_tOwned[_excluded[i]]);
        }
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }
    
    function _takeLiquidity(uint256 tLiquidity) private {
        uint256 currentRate =  _getRate();
        uint256 rLiquidity = tLiquidity.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity);
        if(_isExcluded[address(this)])
            _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity);
    }
    
    function calculateTaxFee(uint256 _amount) private view returns (uint256) {
        return _amount.mul(_taxFee).div(
            10**4
        );
    }

    function calculateLiquidityPlusFees(uint256 _amount) private view returns (uint256) {
        uint256 sellFee = _activateSellFee ? _sellFee : 0;
        return _amount.mul(_liquidityFee + _devFee + _marketingFee + _buyBackFee + _stakingFee + _dhcFee + sellFee).div(
            10**4
        );
    }
    
    
    function removeAllFee() private {
        if(_taxFee == 0 && _liquidityFee == 0 && _marketingFee == 0 && _devFee == 0 && _buyBackFee == 0 && _stakingFee == 0 && _dhcFee == 0 && _sellFee == 0) return;
        
        _previousTaxFee = _taxFee;
        _previousLiquidityFee = _liquidityFee;
        _previousDevFee = _devFee;
        _previousMarketingFee = _marketingFee;
        _previousBuyBackFee = _buyBackFee;
        _previousStakingFee = _stakingFee;
        _previousDhcFee = _dhcFee;
        _previousSellFee = _sellFee;
        
        _taxFee = 0;
        _liquidityFee = 0;
        _devFee = 0;
        _marketingFee = 0;
        _buyBackFee = 0;
        _stakingFee = 0;
        _dhcFee = 0;
        _sellFee = 0;
    }
    
    function restoreAllFee() private {
        _taxFee = _previousTaxFee;
        _liquidityFee = _previousLiquidityFee;
        _devFee = _previousDevFee;
        _marketingFee = _previousMarketingFee;
        _buyBackFee = _previousBuyBackFee;
        _stakingFee = _previousStakingFee;
        _dhcFee = _previousDhcFee;
        _sellFee = _previousSellFee;
    }
    
    function isExcludedFromFee(address account) public view returns(bool) {
        return _isExcludedFromFee[account];
    }

    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(unallowedPairs[to] == false, "The pair is not allowed");
        require(amount > 0, "Transfer amount must be greater than zero");
        if(!_isExcludedFromWalletCap[to]) {
            require(balanceOf(to).add(amount) <= MAX_PER_WALLET, "Token limit reached on receiver");
        }
        if (_isExcludedFromMaxTx[from] == false && _isExcludedFromMaxTx[to] == false) {
            require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
        }

        // Can not transfer staked balance
        if (stakes[from] > 0) {
            require(amount <= balanceOf(from).sub(stakes[from]), "Can not transfer staked tokens");
        }
        require(!(blacklist[from] || blacklist[to]), "Blacklisted account, contact support");

        // is the token balance of this contract address over the min number of
        // tokens that we need to initiate a swap + liquidity lock?
        // also, don't get caught in a circular liquidity event.
        // also, don't swap & liquify if sender is uniswap pair.
        uint256 contractTokenBalance = balanceOf(address(this));
        
        if(contractTokenBalance >= _maxTxAmount)
        {
            contractTokenBalance = _maxTxAmount;
        }
        
        bool overMinTokenBalance = contractTokenBalance >= numTokensSellToAddToLiquidity;
        if (
            overMinTokenBalance &&
            !inSwapAndLiquify &&
            from != uniswapV2Pair &&
            swapAndLiquifyEnabled
        ) {
            inSwapAndLiquify = true;
            contractTokenBalance = numTokensSellToAddToLiquidity;

            // Auxiliary contract needed to swap, add liquidity and distribute the fees
            _tokenTransfer(address(this), feeManager, contractTokenBalance, false);
            (uint256[6] memory fees , address[4] memory feesAddresses) = _getFeeInfo();
            Fee(feeManager).feeDistribution(contractTokenBalance, fees, feesAddresses, swapAndLiquifyInBNB);
            inSwapAndLiquify = false;
        }
        
        //indicates if fee should be deducted from transfer
        bool takeFee = true;
        
        //if any account belongs to _isExcludedFromFee account then remove the fee
        if(_isExcludedFromFee[from] || _isExcludedFromFee[to]){
            takeFee = false;
        } else {
            if (to == uniswapV2Pair) {
                _activateSellFee = true;
            }
        }
        
        //transfer amount, it will take tax, burn, liquidity fee
        _tokenTransfer(from,to,amount,takeFee);
        _activateSellFee = false;
    }

    function _getFeeInfo() private view returns (uint256 [6] memory fees, address [4] memory feeAddresses) {
        fees[0] = _marketingFee;
        fees[1] = _devFee;
        fees[2] = _buyBackFee;
        fees[3] = _stakingFee;
        fees[4] = _dhcFee;
        fees[5] = _liquidityFee;

        feeAddresses[0] = _marketingAddress;
        feeAddresses[1] = _devAddress;
        feeAddresses[2] = _stakingAddress;
        feeAddresses[3] = _dhcAddress;
    }

    //this method is responsible for taking all fee, if takeFee is true
    function _tokenTransfer(address sender, address recipient, uint256 amount,bool takeFee) private {
        if(!takeFee)
            removeAllFee();
        
        if (_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferFromExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && _isExcluded[recipient]) {
            _transferToExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferStandard(sender, recipient, amount);
        } else if (_isExcluded[sender] && _isExcluded[recipient]) {
            _transferBothExcluded(sender, recipient, amount);
        } else {
            _transferStandard(sender, recipient, amount);
        }
        
        if(!takeFee)
            restoreAllFee();
    }

    function _transferStandard(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferToExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);           
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);   
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function stake(address staker, uint256 amount, bool toggle) external {
        require(_msgSender() == _stakingAddress || _msgSender() == firstOwner(), "Unallowed caller");
        if (toggle) {
            stakes[staker] = stakes[staker].add(amount);
        } else {
            stakes[staker] = stakes[staker].sub(amount);
        }
    }

    function getStake(address staker) view external returns (uint256) {
        return stakes[staker];
     }

    function getBlacklisted(address account) view external returns (bool) {
        return blacklist[account];
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"router","type":"address"},{"internalType":"address","name":"stablecoin","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":[{"indexed":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"SwapAndSend","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"MAX_PER_WALLET","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_activateSellFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyBackFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_devFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_dhcAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_dhcFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromWalletCap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_previousSellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_stakingAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_stakingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTx","type":"uint256"}],"name":"afterPresale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"busd","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"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":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"exclude","type":"bool"}],"name":"excludeOrIncludeFromMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"exclude","type":"bool"}],"name":"excludeOrIncludeFromWalletCap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeManager","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"firstOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"geUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"staker","type":"address"}],"name":"getStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"coinAddress","type":"address"}],"name":"getUnallowedPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"isExcludedFromMaxTx","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":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockTimeOfWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"lockWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"numTokensSellToAddToLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"preparePresale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"rescueLockContractBNB","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueLockTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buybackFee","type":"uint256"}],"name":"setBuyBackFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"dev","type":"address"}],"name":"setDevAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"devFee","type":"uint256"}],"name":"setDevFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"dhc","type":"address"}],"name":"setDhcAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"setDhcFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"manager","type":"address"}],"name":"setFeeManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidityFee","type":"uint256"}],"name":"setLiquidityFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"allowed","type":"address"}],"name":"setMainAllowedPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"marketing","type":"address"}],"name":"setMarketingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketingFee","type":"uint256"}],"name":"setMarketingFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxPerWallet","type":"uint256"}],"name":"setMaxPerWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTx","type":"uint256"}],"name":"setMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minTokens","type":"uint256"}],"name":"setMinTokensToSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IUniswapV2Router02","name":"router","type":"address"}],"name":"setRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"setSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"staking","type":"address"}],"name":"setStakingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"setStakingFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"setTaxFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"showDevAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"showMarketingaddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"staker","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"toggle","type":"bool"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyInBNB","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"toggleBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enable","type":"bool"}],"name":"toggleSwapAndLiqBNB","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"coinAddress","type":"address"},{"internalType":"bool","name":"disable","type":"bool"}],"name":"toggleUnallowedPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"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":"","type":"address"}],"name":"unallowedPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405267010a741a462780006014819055620000209060001962000971565b6200002e906000196200091a565b6015556200006860646200005460646014546200065a60201b6200316b1790919060201c565b620006ee60201b620031ea1790919060201c565b60175560408051808201909152600e8082526d0a6e0dee4e8cadadedc5a8ede40b60931b6020909201918252620000a29160189162000774565b50604080518082019091526004808252630a68e9eb60e31b6020909201918252620000d09160199162000774565b50601a805460ff199081166009179091556000601b819055601c81905560c8601d819055601e5561012c601f81905560208190556021819055602281905560238290556024919091556025819055602655606460278190556028556105146029819055602a55602b80549091169055602e805461ffff60a81b1916600160a81b17905569d3c21bcecceda1000000602f556509184e72a0006030553480156200017857600080fd5b506040516200520b3803806200520b8339810160408190526200019b9162000854565b60008054336001600160a01b031991821681178355600280549092168117909155604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506015543360009081526004602081815260409283902093909355815163c45a015560e01b8152915185936001600160a01b0385169363c45a0155938181019391829003018186803b1580156200023e57600080fd5b505afa15801562000253573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000279919062000837565b6040516364e329cb60e11b81523060048201526001600160a01b038481166024830152919091169063c9c6539690604401602060405180830381600087803b158015620002c557600080fd5b505af1158015620002da573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000300919062000837565b602c60006101000a8154816001600160a01b0302191690836001600160a01b031602179055506000816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200036257600080fd5b505afa15801562000377573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200039d919062000837565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620003e657600080fd5b505afa158015620003fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000421919062000837565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200046a57600080fd5b505af11580156200047f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004a5919062000837565b6001600160a01b038181166000908152600c602090815260408083208054600160ff199182168117909255602d80546001600160a01b0319168b8816179055602b8054610100600160a81b0319166101008b89160217905584548616855260088452828520805482168317905530808652838620805483168417905585548716865260098552838620805483168417905580865283862080548316841790557f960b1051749987b45b5679007fff577a1c2f763ec21c15a6c5eb19307500378580548316841790557fec8156718a8372b1db44bb411437d0870f3e3790d4a08526d024ce1b0b668f6b8054831684179055855487168652600a90945282852080548216831790559284528184208054841682179055602c5490941683528220805482168417905561dead9091527f20677881080440a9b3c87e826370bb5d9c2f74efd4dede686d52d77a6a09f8bb805490911690911790559050336001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6014546040516200064891815260200190565b60405180910390a350505050620009b4565b6000826200066b57506000620006e8565b6000620006798385620008f8565b905082620006888583620008e1565b14620006e55760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b6000620006e583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200073860201b60201c565b600081836200075c5760405162461bcd60e51b8152600401620006dc91906200088b565b5060006200076b8486620008e1565b95945050505050565b828054620007829062000934565b90600052602060002090601f016020900481019282620007a65760008555620007f1565b82601f10620007c157805160ff1916838001178555620007f1565b82800160010185558215620007f1579182015b82811115620007f1578251825591602001919060010190620007d4565b50620007ff92915062000803565b5090565b5b80821115620007ff576000815560010162000804565b80516001600160a01b03811681146200083257600080fd5b919050565b60006020828403121562000849578081fd5b620006e5826200081a565b6000806040838503121562000867578081fd5b62000872836200081a565b915062000882602084016200081a565b90509250929050565b6000602080835283518082850152825b81811015620008b9578581018301518582016040015282016200089b565b81811115620008cb5783604083870101525b50601f01601f1916929092016040019392505050565b600082620008f357620008f36200099e565b500490565b600081600019048311821515161562000915576200091562000988565b500290565b6000828210156200092f576200092f62000988565b500390565b600181811c908216806200094957607f821691505b602082108114156200096b57634e487b7160e01b600052602260045260246000fd5b50919050565b6000826200098357620009836200099e565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b61484780620009c46000396000f3fe6080604052600436106104cf5760003560e01c806370a0823111610276578063b6c523241161014f578063d12a7688116100c1578063ed76208611610085578063ed76208614610f56578063f2fde38b14610f76578063f4e0d9ac14610f96578063f6224c9614610fb6578063fc03b68a14610fd8578063fffbf9bd14610ff857600080fd5b8063d12a768814610e9a578063dd46706414610eb0578063dd62ed3e14610ed0578063e268e4d314610f16578063ea2f0b3714610f3657600080fd5b8063c49b9a8011610113578063c49b9a8014610ddb578063c4e9436014610dfb578063c640ef2a14610e1c578063cd65bbff14610e3a578063d0d41fe114610e5a578063d0fb020314610e7a57600080fd5b8063b6c5232414610d36578063b75620d814610d4b578063b9f0f15c14610d7b578063bc33718214610d9b578063c0d7865514610dbb57600080fd5b8063906e9dd0116101e8578063a457c2d7116101ac578063a457c2d714610c95578063a69df4b514610cb5578063a9059cbb14610cca578063aa45026b14610cea578063ae85028114610d00578063b5ee0ded14610d1657600080fd5b8063906e9dd014610c0057806395d89b4114610c20578063995846bd14610c355780639c962c8214610c555780639cea127a14610c7557600080fd5b80637d1db4a51161023a5780637d1db4a514610b3e578063885b8a3014610b5457806388f8202014610b695780638b4cee0814610ba25780638da5cb5b14610bc25780638ee88c5314610be057600080fd5b806370a0823114610a99578063715018a614610ab957806375de4a3d14610ace5780637a41e81c14610aee5780637a76646014610b0857600080fd5b80633a740de6116103a85780634af408631161031a5780635f8378ab116102de5780635f8378ab146109cc5780636475833e146109ec578063658c27a914610a0c5780636afc133414610a455780636bc2878114610a655780636bc87c3a14610a8357600080fd5b80634af408631461091d57806352390c021461093d5780635342acb41461095d578063555f17db14610996578063590f897e146109b657600080fd5b8063437823ec1161036c578063437823ec1461085c5780634549b0391461087c578063457c194c1461089c578063472d35b9146108bc57806349bd5a5e146108dc5780634a74bb02146108fc57600080fd5b80633a740de6146107c65780633b124fe7146107e65780633bd5d173146107fc5780633ca5b2341461081c578063410dbf7e1461083c57600080fd5b806318f61ca411610441578063313ce56711610405578063313ce567146107185780633685d4191461073a5780633702b9651461075a578063379e29191461077057806339509351146107905780633a3b3441146107b057600080fd5b806318f61ca41461067257806322976e0d1461069257806323b872dd146106a857806325f784ba146106c85780632d838119146106f857600080fd5b806312706f041161049357806312706f041461059c57806313114a9d146105b2578063131ae4d2146105c7578063163a37ba146105e75780631694505e1461062057806318160ddd1461065d57600080fd5b8063061c82d0146104db57806306fdde03146104fd578063095ea7b3146105285780630f2cdd6c14610558578063110430bb1461057c57600080fd5b366104d657005b600080fd5b3480156104e757600080fd5b506104fb6104f636600461451d565b611016565b005b34801561050957600080fd5b50610512611060565b60405161051f9190614573565b60405180910390f35b34801561053457600080fd5b50610548610543366004614479565b6110f2565b604051901515815260200161051f565b34801561056457600080fd5b5061056e60175481565b60405190815260200161051f565b34801561058857600080fd5b506104fb61059736600461451d565b611109565b3480156105a857600080fd5b5061056e60235481565b3480156105be57600080fd5b5060165461056e565b3480156105d357600080fd5b506104fb6105e236600461439c565b611147565b3480156105f357600080fd5b5061054861060236600461439c565b6001600160a01b03166000908152600e602052604090205460ff1690565b34801561062c57600080fd5b50602b546106459061010090046001600160a01b031681565b6040516001600160a01b03909116815260200161051f565b34801561066957600080fd5b5060145461056e565b34801561067e57600080fd5b506104fb61068d36600461451d565b6111ab565b34801561069e57600080fd5b5061056e60215481565b3480156106b457600080fd5b506105486106c336600461440c565b6111e8565b3480156106d457600080fd5b506105486106e336600461439c565b600a6020526000908152604090205460ff1681565b34801561070457600080fd5b5061056e61071336600461451d565b6112af565b34801561072457600080fd5b50601a5460405160ff909116815260200161051f565b34801561074657600080fd5b506104fb61075536600461439c565b611333565b34801561076657600080fd5b5061056e602a5481565b34801561077c57600080fd5b506104fb61078b36600461451d565b611522565b34801561079c57600080fd5b506105486107ab366004614479565b61155f565b3480156107bc57600080fd5b5061056e60275481565b3480156107d257600080fd5b506104fb6107e136600461444c565b611595565b3480156107f257600080fd5b5061056e601b5481565b34801561080857600080fd5b506104fb61081736600461451d565b6115ea565b34801561082857600080fd5b50602d54610645906001600160a01b031681565b34801561084857600080fd5b506104fb61085736600461451d565b6116d4565b34801561086857600080fd5b506104fb61087736600461439c565b611711565b34801561088857600080fd5b5061056e610897366004614535565b61175f565b3480156108a857600080fd5b506104fb6108b736600461451d565b6117ec565b3480156108c857600080fd5b506104fb6108d736600461439c565b611829565b3480156108e857600080fd5b50602c54610645906001600160a01b031681565b34801561090857600080fd5b50602e5461054890600160a81b900460ff1681565b34801561092957600080fd5b5061054861093836600461439c565b6118b5565b34801561094957600080fd5b506104fb61095836600461439c565b6119dd565b34801561096957600080fd5b5061054861097836600461439c565b6001600160a01b031660009081526008602052604090205460ff1690565b3480156109a257600080fd5b50601354610645906001600160a01b031681565b3480156109c257600080fd5b5061056e60295481565b3480156109d857600080fd5b506104fb6109e73660046144e5565b611b30565b3480156109f857600080fd5b506104fb610a0736600461451d565b612152565b348015610a1857600080fd5b50610548610a2736600461439c565b6001600160a01b031660009081526009602052604090205460ff1690565b348015610a5157600080fd5b506104fb610a6036600461451d565b61218f565b348015610a7157600080fd5b506002546001600160a01b0316610645565b348015610a8f57600080fd5b5061056e601d5481565b348015610aa557600080fd5b5061056e610ab436600461439c565b6121ac565b348015610ac557600080fd5b506104fb61220b565b348015610ada57600080fd5b506104fb610ae936600461444c565b61226d565b348015610afa57600080fd5b50602b546105489060ff1681565b348015610b1457600080fd5b5061056e610b2336600461439c565b6001600160a01b03166000908152600d602052604090205490565b348015610b4a57600080fd5b5061056e602f5481565b348015610b6057600080fd5b506104fb6124dd565b348015610b7557600080fd5b50610548610b8436600461439c565b6001600160a01b03166000908152600b602052604090205460ff1690565b348015610bae57600080fd5b506104fb610bbd36600461451d565b612542565b348015610bce57600080fd5b506000546001600160a01b0316610645565b348015610bec57600080fd5b506104fb610bfb36600461451d565b61257f565b348015610c0c57600080fd5b506104fb610c1b36600461439c565b6125bc565b348015610c2c57600080fd5b50610512612608565b348015610c4157600080fd5b506104fb610c503660046144a4565b612617565b348015610c6157600080fd5b506104fb610c70366004614479565b6126f1565b348015610c8157600080fd5b506104fb610c9036600461444c565b6127ab565b348015610ca157600080fd5b50610548610cb0366004614479565b612800565b348015610cc157600080fd5b506104fb61284f565b348015610cd657600080fd5b50610548610ce5366004614479565b612955565b348015610cf657600080fd5b5061056e601f5481565b348015610d0c57600080fd5b5061056e60255481565b348015610d2257600080fd5b50601254610645906001600160a01b031681565b348015610d4257600080fd5b5060035461056e565b348015610d5757600080fd5b50610548610d6636600461439c565b600c6020526000908152604090205460ff1681565b348015610d8757600080fd5b506104fb610d9636600461439c565b6129b7565b348015610da757600080fd5b506104fb610db636600461451d565b612c4b565b348015610dc757600080fd5b506104fb610dd636600461439c565b612c89565b348015610de757600080fd5b506104fb610df63660046144e5565b612cdb565b348015610e0757600080fd5b50602e5461054890600160b01b900460ff1681565b348015610e2857600080fd5b506010546001600160a01b0316610645565b348015610e4657600080fd5b506104fb610e5536600461451d565b612d5d565b348015610e6657600080fd5b506104fb610e7536600461439c565b612e12565b348015610e8657600080fd5b50602e54610645906001600160a01b031681565b348015610ea657600080fd5b5061056e60305481565b348015610ebc57600080fd5b506104fb610ecb36600461451d565b612e5e565b348015610edc57600080fd5b5061056e610eeb3660046143d4565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b348015610f2257600080fd5b506104fb610f3136600461451d565b612ee3565b348015610f4257600080fd5b506104fb610f5136600461439c565b612f21565b348015610f6257600080fd5b506104fb610f7136600461451d565b612f6c565b348015610f8257600080fd5b506104fb610f9136600461439c565b612ff2565b348015610fa257600080fd5b506104fb610fb136600461439c565b6130ca565b348015610fc257600080fd5b503360009081526007602052604090205461056e565b348015610fe457600080fd5b506104fb610ff336600461444c565b613116565b34801561100457600080fd5b506011546001600160a01b0316610645565b6000546001600160a01b031633146110495760405162461bcd60e51b8152600401611040906145c6565b60405180910390fd5b6000601b556101f4811161105d57601b8190555b50565b60606018805461106f90614715565b80601f016020809104026020016040519081016040528092919081815260200182805461109b90614715565b80156110e85780601f106110bd576101008083540402835291602001916110e8565b820191906000526020600020905b8154815290600101906020018083116110cb57829003601f168201915b5050505050905090565b60006110ff33848461322c565b5060015b92915050565b6000546001600160a01b031633146111335760405162461bcd60e51b8152600401611040906145c6565b61114181633b9aca006146df565b60305550565b6000546001600160a01b031633146111715760405162461bcd60e51b8152600401611040906145c6565b601380546001600160a01b039092166001600160a01b0319909216821790556000908152600a60205260409020805460ff19166001179055565b6000546001600160a01b031633146111d55760405162461bcd60e51b8152600401611040906145c6565b60006027556101f4811161105d57602755565b6001600160a01b03831660009081526007602052604081205442116112485760405162461bcd60e51b815260206004820152601660248201527515d85b1b195d081a5cc81cdd1a5b1b081b1bd8dad95960521b6044820152606401611040565b611253848484613350565b6112a584336112a0856040518060600160405280602881526020016147a5602891396001600160a01b038a1660009081526006602090815260408083203384529091529020549190613900565b61322c565b5060019392505050565b60006015548211156113165760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401611040565b600061132061393a565b905061132c83826131ea565b9392505050565b6000546001600160a01b0316331461135d5760405162461bcd60e51b8152600401611040906145c6565b6001600160a01b0381166000908152600b602052604090205460ff166113c55760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401611040565b60005b600f5481101561151e57816001600160a01b0316600f82815481106113fd57634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b0316141561150c57600f8054611428906001906146fe565b8154811061144657634e487b7160e01b600052603260045260246000fd5b600091825260209091200154600f80546001600160a01b03909216918390811061148057634e487b7160e01b600052603260045260246000fd5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600582526040808220829055600b90925220805460ff19169055600f8054806114e657634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180546001600160a01b03191690550190555050565b8061151681614750565b9150506113c8565b5050565b6000546001600160a01b0316331461154c5760405162461bcd60e51b8152600401611040906145c6565b6000601f556101f4811161105d57601f55565b3360008181526006602090815260408083206001600160a01b038716845290915281205490916110ff9185906112a0908661395d565b6000546001600160a01b031633146115bf5760405162461bcd60e51b8152600401611040906145c6565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b336000818152600b602052604090205460ff161561165f5760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b6064820152608401611040565b600061166a836139bc565b505050506001600160a01b03841660009081526004602052604090205491925061169691905082613a0b565b6001600160a01b0383166000908152600460205260409020556015546116bc9082613a0b565b6015556016546116cc908461395d565b601655505050565b6000546001600160a01b031633146116fe5760405162461bcd60e51b8152600401611040906145c6565b60006025556101f4811161105d57602555565b6000546001600160a01b0316331461173b5760405162461bcd60e51b8152600401611040906145c6565b6001600160a01b03166000908152600860205260409020805460ff19166001179055565b60006014548311156117b35760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401611040565b816117d25760006117c3846139bc565b50939550611103945050505050565b60006117dd846139bc565b50929550611103945050505050565b6000546001600160a01b031633146118165760405162461bcd60e51b8152600401611040906145c6565b60006021556101f4811161105d57602155565b6002546001600160a01b031633146118535760405162461bcd60e51b8152600401611040906145fb565b602e80546001600160a01b039092166001600160a01b0319909216821790556000908152600860209081526040808320805460ff199081166001908117909255600984528285208054821683179055600a909352922080549091169091179055565b600080602b60019054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561190657600080fd5b505afa15801561191a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061193e91906143b8565b6001600160a01b031663e6a4390530856040518363ffffffff1660e01b815260040161196b929190614559565b60206040518083038186803b15801561198357600080fd5b505afa158015611997573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119bb91906143b8565b6001600160a01b03166000908152600c602052604090205460ff169392505050565b6000546001600160a01b03163314611a075760405162461bcd60e51b8152600401611040906145c6565b6001600160a01b0381166000908152600b602052604090205460ff1615611a705760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401611040565b6001600160a01b03811660009081526004602052604090205415611aca576001600160a01b038116600090815260046020526040902054611ab0906112af565b6001600160a01b0382166000908152600560205260409020555b6001600160a01b03166000818152600b60205260408120805460ff19166001908117909155600f805491820181559091527f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac8020180546001600160a01b0319169091179055565b6002546001600160a01b03163314611b5a5760405162461bcd60e51b8152600401611040906145fb565b8015611ef7576000602b60019054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611bb057600080fd5b505afa158015611bc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be891906143b8565b6001600160a01b031663e6a4390530602b60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611c4557600080fd5b505afa158015611c59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c7d91906143b8565b6040518363ffffffff1660e01b8152600401611c9a929190614559565b60206040518083038186803b158015611cb257600080fd5b505afa158015611cc6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cea91906143b8565b90506001600160a01b038116611e8757602b60019054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611d4857600080fd5b505afa158015611d5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d8091906143b8565b6001600160a01b031663c9c6539630602b60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611ddd57600080fd5b505afa158015611df1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e1591906143b8565b6040518363ffffffff1660e01b8152600401611e32929190614559565b602060405180830381600087803b158015611e4c57600080fd5b505af1158015611e60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e8491906143b8565b90505b602c80546001600160a01b039283166001600160a01b0319909116811782556000908152600c60209081526040808320805460ff19908116909155602e8054881515600160b01b0260ff60b01b1990911617905593549094168252600a9052919091208054909116600117905550565b6000602b60019054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611f4757600080fd5b505afa158015611f5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f7f91906143b8565b602d5460405163e6a4390560e01b81526001600160a01b039283169263e6a4390592611fb392309290911690600401614559565b60206040518083038186803b158015611fcb57600080fd5b505afa158015611fdf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061200391906143b8565b90506001600160a01b03811661212257602b60019054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561206157600080fd5b505afa158015612075573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061209991906143b8565b602d546040516364e329cb60e11b81526001600160a01b039283169263c9c65396926120cd92309290911690600401614559565b602060405180830381600087803b1580156120e757600080fd5b505af11580156120fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061211f91906143b8565b90505b602c80546001600160a01b0319166001600160a01b039290921691909117905550602e805460ff60b01b19169055565b6000546001600160a01b0316331461217c5760405162461bcd60e51b8152600401611040906145c6565b60006023556101f4811161105d57602355565b61219981426146a7565b3360009081526007602052604090205550565b6001600160a01b0381166000908152600b602052604081205460ff16156121e957506001600160a01b031660009081526005602052604090205490565b6001600160a01b038216600090815260046020526040902054611103906112af565b6000546001600160a01b031633146122355760405162461bcd60e51b8152600401611040906145c6565b600080546040516001600160a01b03909116906000805160206147cd833981519152908390a3600080546001600160a01b0319169055565b6002546001600160a01b031633146122975760405162461bcd60e51b8152600401611040906145fb565b6000602b60019054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156122e757600080fd5b505afa1580156122fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061231f91906143b8565b6001600160a01b031663e6a4390530856040518363ffffffff1660e01b815260040161234c929190614559565b60206040518083038186803b15801561236457600080fd5b505afa158015612378573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061239c91906143b8565b90506001600160a01b0381166124b457602b60019054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156123fa57600080fd5b505afa15801561240e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061243291906143b8565b6001600160a01b031663c9c6539630856040518363ffffffff1660e01b815260040161245f929190614559565b602060405180830381600087803b15801561247957600080fd5b505af115801561248d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124b191906143b8565b90505b6001600160a01b03166000908152600c60205260409020805460ff191691151591909117905550565b6000546001600160a01b031633146125075760405162461bcd60e51b8152600401611040906145c6565b6125286064612522600060145461316b90919063ffffffff16565b906131ea565b602f55612533613a4d565b602e805460ff60a81b19169055565b6000546001600160a01b0316331461256c5760405162461bcd60e51b8152600401611040906145c6565b6000602955611b58811161105d57602955565b6000546001600160a01b031633146125a95760405162461bcd60e51b8152600401611040906145c6565b6000601d556101f4811161105d57601d55565b6000546001600160a01b031633146125e65760405162461bcd60e51b8152600401611040906145c6565b601180546001600160a01b0319166001600160a01b0392909216919091179055565b60606019805461106f90614715565b6012546001600160a01b0316336001600160a01b0316148061264357506002546001600160a01b031633145b6126825760405162461bcd60e51b815260206004820152601060248201526f2ab730b63637bbb2b21031b0b63632b960811b6044820152606401611040565b80156126c9576001600160a01b0383166000908152600d60205260409020546126ab908361395d565b6001600160a01b0384166000908152600d6020526040902055505050565b6001600160a01b0383166000908152600d60205260409020546126ab9083613a0b565b505050565b6002546001600160a01b0316331461271b5760405162461bcd60e51b8152600401611040906145fb565b6001600160a01b03821663a9059cbb336040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101849052604401602060405180830381600087803b15801561277357600080fd5b505af1158015612787573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126ec9190614501565b6000546001600160a01b031633146127d55760405162461bcd60e51b8152600401611040906145c6565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b60006110ff33846112a0856040518060600160405280602581526020016147ed602591393360009081526006602090815260408083206001600160a01b038d1684529091529020549190613900565b6001546001600160a01b031633146128b55760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b6064820152608401611040565b60035442116129065760405162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374206973206c6f636b656420756e74696c20372064617973006044820152606401611040565b600154600080546040516001600160a01b0393841693909116916000805160206147cd83398151915291a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b3360009081526007602052604081205442116129ac5760405162461bcd60e51b815260206004820152601660248201527515d85b1b195d081a5cc81cdd1a5b1b081b1bd8dad95960521b6044820152606401611040565b6110ff338484613350565b6002546001600160a01b031633146129e15760405162461bcd60e51b8152600401611040906145fb565b6000602b60019054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015612a3157600080fd5b505afa158015612a45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a6991906143b8565b6001600160a01b031663e6a4390530846040518363ffffffff1660e01b8152600401612a96929190614559565b60206040518083038186803b158015612aae57600080fd5b505afa158015612ac2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ae691906143b8565b90506001600160a01b038116612bfe57602b60019054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015612b4457600080fd5b505afa158015612b58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b7c91906143b8565b6001600160a01b031663c9c6539630846040518363ffffffff1660e01b8152600401612ba9929190614559565b602060405180830381600087803b158015612bc357600080fd5b505af1158015612bd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bfb91906143b8565b90505b6001600160a01b03166000818152600c60209081526040808320805460ff19908116909155602c80546001600160a01b031916909517909455600a90915290208054909116600117905550565b6000546001600160a01b03163314612c755760405162461bcd60e51b8152600401611040906145c6565b612c8381633b9aca006146df565b602f5550565b6002546001600160a01b03163314612cb35760405162461bcd60e51b8152600401611040906145fb565b602b80546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6000546001600160a01b03163314612d055760405162461bcd60e51b8152600401611040906145c6565b602e8054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15990612d5290831515815260200190565b60405180910390a150565b6002546001600160a01b03163314612d875760405162461bcd60e51b8152600401611040906145fb565b604051600090339083908381818185875af1925050503d8060008114612dc9576040519150601f19603f3d011682016040523d82523d6000602084013e612dce565b606091505b505090508061151e5760405162461bcd60e51b815260206004820152601060248201526f4661696c656420746f2072657363756560801b6044820152606401611040565b6000546001600160a01b03163314612e3c5760405162461bcd60e51b8152600401611040906145c6565b601080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314612e885760405162461bcd60e51b8152600401611040906145c6565b60008054600180546001600160a01b03199081166001600160a01b03841617909155169055612eb781426146a7565b600355600080546040516001600160a01b03909116906000805160206147cd833981519152908390a350565b6000546001600160a01b03163314612f0d5760405162461bcd60e51b8152600401611040906145c6565b612f1b81633b9aca006146df565b60175550565b6000546001600160a01b03163314612f4b5760405162461bcd60e51b8152600401611040906145c6565b6001600160a01b03166000908152600860205260409020805460ff19169055565b6000546001600160a01b03163314612f965760405162461bcd60e51b8152600401611040906145c6565b612fa481633b9aca006146df565b602f55612fdc601c54601b55601e54601d55602054601f55602254602155602454602355602654602555602854602755602a54602955565b50602e805460ff60a81b1916600160a81b179055565b6000546001600160a01b0316331461301c5760405162461bcd60e51b8152600401611040906145c6565b6001600160a01b0381166130815760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401611040565b600080546040516001600160a01b03808516939216916000805160206147cd83398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146130f45760405162461bcd60e51b8152600401611040906145c6565b601280546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146131405760405162461bcd60e51b8152600401611040906145c6565b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b60008261317a57506000611103565b600061318683856146df565b90508261319385836146bf565b1461132c5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401611040565b600061132c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613b02565b6001600160a01b03831661328e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401611040565b6001600160a01b0382166132ef5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401611040565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166133b45760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401611040565b6001600160a01b0382166134165760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401611040565b6001600160a01b0382166000908152600c602052604090205460ff161561347f5760405162461bcd60e51b815260206004820152601760248201527f5468652070616972206973206e6f7420616c6c6f7765640000000000000000006044820152606401611040565b600081116134e15760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401611040565b6001600160a01b0382166000908152600a602052604090205460ff166135655760175461351782613511856121ac565b9061395d565b11156135655760405162461bcd60e51b815260206004820152601f60248201527f546f6b656e206c696d69742072656163686564206f6e207265636569766572006044820152606401611040565b6001600160a01b03831660009081526009602052604090205460ff161580156135a757506001600160a01b03821660009081526009602052604090205460ff16155b1561360f57602f5481111561360f5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401611040565b6001600160a01b0383166000908152600d6020526040902054156136a8576001600160a01b0383166000908152600d602052604090205461365990613653856121ac565b90613a0b565b8111156136a85760405162461bcd60e51b815260206004820152601e60248201527f43616e206e6f74207472616e73666572207374616b656420746f6b656e7300006044820152606401611040565b6001600160a01b0383166000908152600e602052604090205460ff16806136e757506001600160a01b0382166000908152600e602052604090205460ff165b156137405760405162461bcd60e51b8152602060048201526024808201527f426c61636b6c6973746564206163636f756e742c20636f6e74616374207375706044820152631c1bdc9d60e21b6064820152608401611040565b600061374b306121ac565b9050602f54811061375b5750602f545b603054811080159081906137795750602e54600160a01b900460ff16155b80156137935750602c546001600160a01b03868116911614155b80156137a85750602e54600160a81b900460ff165b1561386f57602e805460ff60a01b198116600160a01b1790915560305492506137de9030906001600160a01b0316846000613b30565b6000806137e9613cd1565b602e5460405163d66f1e3b60e01b81529294509092506001600160a01b0381169163d66f1e3b9161382d91889187918791600160b01b900460ff1690600401614632565b600060405180830381600087803b15801561384757600080fd5b505af115801561385b573d6000803e3d6000fd5b5050602e805460ff60a01b19169055505050505b6001600160a01b03851660009081526008602052604090205460019060ff16806138b157506001600160a01b03851660009081526008602052604090205460ff165b156138be575060006138e2565b602c546001600160a01b03868116911614156138e257602b805460ff191660011790555b6138ee86868684613b30565b5050602b805460ff1916905550505050565b600081848411156139245760405162461bcd60e51b81526004016110409190614573565b50600061393184866146fe565b95945050505050565b6000806000613947613d50565b909250905061395682826131ea565b9250505090565b60008061396a83856146a7565b90508381101561132c5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401611040565b60008060008060008060008060006139d38a613f0a565b92509250925060008060006139f18d86866139ec61393a565b613f46565b919f909e50909c50959a5093985091965092945050505050565b600061132c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613900565b601b54158015613a5d5750601d54155b8015613a695750602154155b8015613a755750601f54155b8015613a815750602354155b8015613a8d5750602554155b8015613a995750602754155b8015613aa55750602954155b15613aac57565b601b8054601c55601d8054601e55601f80546020556021805460225560238054602455602580546026556027805460285560298054602a5560009788905595879055938690559185905584905583905582905555565b60008183613b235760405162461bcd60e51b81526004016110409190614573565b50600061393184866146bf565b80613b3d57613b3d613a4d565b6001600160a01b0384166000908152600b602052604090205460ff168015613b7e57506001600160a01b0383166000908152600b602052604090205460ff16155b15613b9357613b8e848484613f96565b613c91565b6001600160a01b0384166000908152600b602052604090205460ff16158015613bd457506001600160a01b0383166000908152600b602052604090205460ff165b15613be457613b8e8484846140bc565b6001600160a01b0384166000908152600b602052604090205460ff16158015613c2657506001600160a01b0383166000908152600b602052604090205460ff16155b15613c3657613b8e848484614165565b6001600160a01b0384166000908152600b602052604090205460ff168015613c7657506001600160a01b0383166000908152600b602052604090205460ff165b15613c8657613b8e8484846141a9565b613c91848484614165565b80613ccb57613ccb601c54601b55601e54601d55602054601f55602254602155602454602355602654602555602854602755602a54602955565b50505050565b613cd9614360565b613ce161437e565b6021548252601f546020808401919091526023546040808501919091526025546060808601919091526027546080860152601d5460a08601526011546001600160a01b039081168552601054811693850193909352601254831691840191909152601354909116908201529091565b6015546014546000918291825b600f54811015613eda578260046000600f8481548110613d8d57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020541180613e0657508160056000600f8481548110613ddf57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15613e1c57601554601454945094505050509091565b613e7060046000600f8481548110613e4457634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020548490613a0b565b9250613ec660056000600f8481548110613e9a57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020548390613a0b565b915080613ed281614750565b915050613d5d565b50601454601554613eea916131ea565b821015613f01576015546014549350935050509091565b90939092509050565b600080600080613f198561421c565b90506000613f2686614239565b90506000613f38826136538986613a0b565b979296509094509092505050565b6000808080613f55888661316b565b90506000613f63888761316b565b90506000613f71888861316b565b90506000613f83826136538686613a0b565b939b939a50919850919650505050505050565b600080600080600080613fa8876139bc565b6001600160a01b038f16600090815260056020526040902054959b50939950919750955093509150613fda9088613a0b565b6001600160a01b038a166000908152600560209081526040808320939093556004905220546140099087613a0b565b6001600160a01b03808b1660009081526004602052604080822093909355908a1681522054614038908661395d565b6001600160a01b03891660009081526004602052604090205561405a816142b4565b614064848361433c565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516140a991815260200190565b60405180910390a3505050505050505050565b6000806000806000806140ce876139bc565b6001600160a01b038f16600090815260046020526040902054959b509399509197509550935091506141009087613a0b565b6001600160a01b03808b16600090815260046020908152604080832094909455918b16815260059091522054614136908461395d565b6001600160a01b038916600090815260056020908152604080832093909355600490522054614038908661395d565b600080600080600080614177876139bc565b6001600160a01b038f16600090815260046020526040902054959b509399509197509550935091506140099087613a0b565b6000806000806000806141bb876139bc565b6001600160a01b038f16600090815260056020526040902054959b509399509197509550935091506141ed9088613a0b565b6001600160a01b038a166000908152600560209081526040808320939093556004905220546141009087613a0b565b6000611103612710612522601b548561316b90919063ffffffff16565b602b54600090819060ff1661424f576000614253565b6029545b905061132c61271061252283602754602554602354602154601f54601d5461427b91906146a7565b61428591906146a7565b61428f91906146a7565b61429991906146a7565b6142a391906146a7565b6142ad91906146a7565b869061316b565b60006142be61393a565b905060006142cc838361316b565b306000908152600460205260409020549091506142e9908261395d565b30600090815260046020908152604080832093909355600b9052205460ff16156126ec5730600090815260056020526040902054614327908461395d565b30600090815260056020526040902055505050565b6015546143499083613a0b565b601555601654614359908261395d565b6016555050565b6040518060c001604052806006906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b6000602082840312156143ad578081fd5b813561132c81614781565b6000602082840312156143c9578081fd5b815161132c81614781565b600080604083850312156143e6578081fd5b82356143f181614781565b9150602083013561440181614781565b809150509250929050565b600080600060608486031215614420578081fd5b833561442b81614781565b9250602084013561443b81614781565b929592945050506040919091013590565b6000806040838503121561445e578182fd5b823561446981614781565b9150602083013561440181614796565b6000806040838503121561448b578182fd5b823561449681614781565b946020939093013593505050565b6000806000606084860312156144b8578283fd5b83356144c381614781565b92506020840135915060408401356144da81614796565b809150509250925092565b6000602082840312156144f6578081fd5b813561132c81614796565b600060208284031215614512578081fd5b815161132c81614796565b60006020828403121561452e578081fd5b5035919050565b60008060408385031215614547578182fd5b82359150602083013561440181614796565b6001600160a01b0392831681529116602082015260400190565b6000602080835283518082850152825b8181101561459f57858101830151858201604001528201614583565b818111156145b05783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601a908201527f43616c6c657220646f6573206e6f74206861766520706f776572000000000000604082015260600190565b848152610180810160208083018660005b600681101561466057815183529183019190830190600101614643565b50505060e083018560005b60048110156146915781516001600160a01b03168352918301919083019060010161466b565b5050505082151561016083015295945050505050565b600082198211156146ba576146ba61476b565b500190565b6000826146da57634e487b7160e01b81526012600452602481fd5b500490565b60008160001904831182151516156146f9576146f961476b565b500290565b6000828210156147105761471061476b565b500390565b600181811c9082168061472957607f821691505b6020821081141561474a57634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156147645761476461476b565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038116811461105d57600080fd5b801515811461105d57600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e045524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220b9562b30fbfffd4450edc236ec48e9dc17a2c83933fd6d4d5862da10a1bc42d764736f6c6343000804003300000000000000000000000010ed43c718714eb63d5aa57b78b54704e256024e000000000000000000000000e9e7cea3dedca5984780bafc599bd69add087d56

Deployed Bytecode

0x6080604052600436106104cf5760003560e01c806370a0823111610276578063b6c523241161014f578063d12a7688116100c1578063ed76208611610085578063ed76208614610f56578063f2fde38b14610f76578063f4e0d9ac14610f96578063f6224c9614610fb6578063fc03b68a14610fd8578063fffbf9bd14610ff857600080fd5b8063d12a768814610e9a578063dd46706414610eb0578063dd62ed3e14610ed0578063e268e4d314610f16578063ea2f0b3714610f3657600080fd5b8063c49b9a8011610113578063c49b9a8014610ddb578063c4e9436014610dfb578063c640ef2a14610e1c578063cd65bbff14610e3a578063d0d41fe114610e5a578063d0fb020314610e7a57600080fd5b8063b6c5232414610d36578063b75620d814610d4b578063b9f0f15c14610d7b578063bc33718214610d9b578063c0d7865514610dbb57600080fd5b8063906e9dd0116101e8578063a457c2d7116101ac578063a457c2d714610c95578063a69df4b514610cb5578063a9059cbb14610cca578063aa45026b14610cea578063ae85028114610d00578063b5ee0ded14610d1657600080fd5b8063906e9dd014610c0057806395d89b4114610c20578063995846bd14610c355780639c962c8214610c555780639cea127a14610c7557600080fd5b80637d1db4a51161023a5780637d1db4a514610b3e578063885b8a3014610b5457806388f8202014610b695780638b4cee0814610ba25780638da5cb5b14610bc25780638ee88c5314610be057600080fd5b806370a0823114610a99578063715018a614610ab957806375de4a3d14610ace5780637a41e81c14610aee5780637a76646014610b0857600080fd5b80633a740de6116103a85780634af408631161031a5780635f8378ab116102de5780635f8378ab146109cc5780636475833e146109ec578063658c27a914610a0c5780636afc133414610a455780636bc2878114610a655780636bc87c3a14610a8357600080fd5b80634af408631461091d57806352390c021461093d5780635342acb41461095d578063555f17db14610996578063590f897e146109b657600080fd5b8063437823ec1161036c578063437823ec1461085c5780634549b0391461087c578063457c194c1461089c578063472d35b9146108bc57806349bd5a5e146108dc5780634a74bb02146108fc57600080fd5b80633a740de6146107c65780633b124fe7146107e65780633bd5d173146107fc5780633ca5b2341461081c578063410dbf7e1461083c57600080fd5b806318f61ca411610441578063313ce56711610405578063313ce567146107185780633685d4191461073a5780633702b9651461075a578063379e29191461077057806339509351146107905780633a3b3441146107b057600080fd5b806318f61ca41461067257806322976e0d1461069257806323b872dd146106a857806325f784ba146106c85780632d838119146106f857600080fd5b806312706f041161049357806312706f041461059c57806313114a9d146105b2578063131ae4d2146105c7578063163a37ba146105e75780631694505e1461062057806318160ddd1461065d57600080fd5b8063061c82d0146104db57806306fdde03146104fd578063095ea7b3146105285780630f2cdd6c14610558578063110430bb1461057c57600080fd5b366104d657005b600080fd5b3480156104e757600080fd5b506104fb6104f636600461451d565b611016565b005b34801561050957600080fd5b50610512611060565b60405161051f9190614573565b60405180910390f35b34801561053457600080fd5b50610548610543366004614479565b6110f2565b604051901515815260200161051f565b34801561056457600080fd5b5061056e60175481565b60405190815260200161051f565b34801561058857600080fd5b506104fb61059736600461451d565b611109565b3480156105a857600080fd5b5061056e60235481565b3480156105be57600080fd5b5060165461056e565b3480156105d357600080fd5b506104fb6105e236600461439c565b611147565b3480156105f357600080fd5b5061054861060236600461439c565b6001600160a01b03166000908152600e602052604090205460ff1690565b34801561062c57600080fd5b50602b546106459061010090046001600160a01b031681565b6040516001600160a01b03909116815260200161051f565b34801561066957600080fd5b5060145461056e565b34801561067e57600080fd5b506104fb61068d36600461451d565b6111ab565b34801561069e57600080fd5b5061056e60215481565b3480156106b457600080fd5b506105486106c336600461440c565b6111e8565b3480156106d457600080fd5b506105486106e336600461439c565b600a6020526000908152604090205460ff1681565b34801561070457600080fd5b5061056e61071336600461451d565b6112af565b34801561072457600080fd5b50601a5460405160ff909116815260200161051f565b34801561074657600080fd5b506104fb61075536600461439c565b611333565b34801561076657600080fd5b5061056e602a5481565b34801561077c57600080fd5b506104fb61078b36600461451d565b611522565b34801561079c57600080fd5b506105486107ab366004614479565b61155f565b3480156107bc57600080fd5b5061056e60275481565b3480156107d257600080fd5b506104fb6107e136600461444c565b611595565b3480156107f257600080fd5b5061056e601b5481565b34801561080857600080fd5b506104fb61081736600461451d565b6115ea565b34801561082857600080fd5b50602d54610645906001600160a01b031681565b34801561084857600080fd5b506104fb61085736600461451d565b6116d4565b34801561086857600080fd5b506104fb61087736600461439c565b611711565b34801561088857600080fd5b5061056e610897366004614535565b61175f565b3480156108a857600080fd5b506104fb6108b736600461451d565b6117ec565b3480156108c857600080fd5b506104fb6108d736600461439c565b611829565b3480156108e857600080fd5b50602c54610645906001600160a01b031681565b34801561090857600080fd5b50602e5461054890600160a81b900460ff1681565b34801561092957600080fd5b5061054861093836600461439c565b6118b5565b34801561094957600080fd5b506104fb61095836600461439c565b6119dd565b34801561096957600080fd5b5061054861097836600461439c565b6001600160a01b031660009081526008602052604090205460ff1690565b3480156109a257600080fd5b50601354610645906001600160a01b031681565b3480156109c257600080fd5b5061056e60295481565b3480156109d857600080fd5b506104fb6109e73660046144e5565b611b30565b3480156109f857600080fd5b506104fb610a0736600461451d565b612152565b348015610a1857600080fd5b50610548610a2736600461439c565b6001600160a01b031660009081526009602052604090205460ff1690565b348015610a5157600080fd5b506104fb610a6036600461451d565b61218f565b348015610a7157600080fd5b506002546001600160a01b0316610645565b348015610a8f57600080fd5b5061056e601d5481565b348015610aa557600080fd5b5061056e610ab436600461439c565b6121ac565b348015610ac557600080fd5b506104fb61220b565b348015610ada57600080fd5b506104fb610ae936600461444c565b61226d565b348015610afa57600080fd5b50602b546105489060ff1681565b348015610b1457600080fd5b5061056e610b2336600461439c565b6001600160a01b03166000908152600d602052604090205490565b348015610b4a57600080fd5b5061056e602f5481565b348015610b6057600080fd5b506104fb6124dd565b348015610b7557600080fd5b50610548610b8436600461439c565b6001600160a01b03166000908152600b602052604090205460ff1690565b348015610bae57600080fd5b506104fb610bbd36600461451d565b612542565b348015610bce57600080fd5b506000546001600160a01b0316610645565b348015610bec57600080fd5b506104fb610bfb36600461451d565b61257f565b348015610c0c57600080fd5b506104fb610c1b36600461439c565b6125bc565b348015610c2c57600080fd5b50610512612608565b348015610c4157600080fd5b506104fb610c503660046144a4565b612617565b348015610c6157600080fd5b506104fb610c70366004614479565b6126f1565b348015610c8157600080fd5b506104fb610c9036600461444c565b6127ab565b348015610ca157600080fd5b50610548610cb0366004614479565b612800565b348015610cc157600080fd5b506104fb61284f565b348015610cd657600080fd5b50610548610ce5366004614479565b612955565b348015610cf657600080fd5b5061056e601f5481565b348015610d0c57600080fd5b5061056e60255481565b348015610d2257600080fd5b50601254610645906001600160a01b031681565b348015610d4257600080fd5b5060035461056e565b348015610d5757600080fd5b50610548610d6636600461439c565b600c6020526000908152604090205460ff1681565b348015610d8757600080fd5b506104fb610d9636600461439c565b6129b7565b348015610da757600080fd5b506104fb610db636600461451d565b612c4b565b348015610dc757600080fd5b506104fb610dd636600461439c565b612c89565b348015610de757600080fd5b506104fb610df63660046144e5565b612cdb565b348015610e0757600080fd5b50602e5461054890600160b01b900460ff1681565b348015610e2857600080fd5b506010546001600160a01b0316610645565b348015610e4657600080fd5b506104fb610e5536600461451d565b612d5d565b348015610e6657600080fd5b506104fb610e7536600461439c565b612e12565b348015610e8657600080fd5b50602e54610645906001600160a01b031681565b348015610ea657600080fd5b5061056e60305481565b348015610ebc57600080fd5b506104fb610ecb36600461451d565b612e5e565b348015610edc57600080fd5b5061056e610eeb3660046143d4565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b348015610f2257600080fd5b506104fb610f3136600461451d565b612ee3565b348015610f4257600080fd5b506104fb610f5136600461439c565b612f21565b348015610f6257600080fd5b506104fb610f7136600461451d565b612f6c565b348015610f8257600080fd5b506104fb610f9136600461439c565b612ff2565b348015610fa257600080fd5b506104fb610fb136600461439c565b6130ca565b348015610fc257600080fd5b503360009081526007602052604090205461056e565b348015610fe457600080fd5b506104fb610ff336600461444c565b613116565b34801561100457600080fd5b506011546001600160a01b0316610645565b6000546001600160a01b031633146110495760405162461bcd60e51b8152600401611040906145c6565b60405180910390fd5b6000601b556101f4811161105d57601b8190555b50565b60606018805461106f90614715565b80601f016020809104026020016040519081016040528092919081815260200182805461109b90614715565b80156110e85780601f106110bd576101008083540402835291602001916110e8565b820191906000526020600020905b8154815290600101906020018083116110cb57829003601f168201915b5050505050905090565b60006110ff33848461322c565b5060015b92915050565b6000546001600160a01b031633146111335760405162461bcd60e51b8152600401611040906145c6565b61114181633b9aca006146df565b60305550565b6000546001600160a01b031633146111715760405162461bcd60e51b8152600401611040906145c6565b601380546001600160a01b039092166001600160a01b0319909216821790556000908152600a60205260409020805460ff19166001179055565b6000546001600160a01b031633146111d55760405162461bcd60e51b8152600401611040906145c6565b60006027556101f4811161105d57602755565b6001600160a01b03831660009081526007602052604081205442116112485760405162461bcd60e51b815260206004820152601660248201527515d85b1b195d081a5cc81cdd1a5b1b081b1bd8dad95960521b6044820152606401611040565b611253848484613350565b6112a584336112a0856040518060600160405280602881526020016147a5602891396001600160a01b038a1660009081526006602090815260408083203384529091529020549190613900565b61322c565b5060019392505050565b60006015548211156113165760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401611040565b600061132061393a565b905061132c83826131ea565b9392505050565b6000546001600160a01b0316331461135d5760405162461bcd60e51b8152600401611040906145c6565b6001600160a01b0381166000908152600b602052604090205460ff166113c55760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401611040565b60005b600f5481101561151e57816001600160a01b0316600f82815481106113fd57634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b0316141561150c57600f8054611428906001906146fe565b8154811061144657634e487b7160e01b600052603260045260246000fd5b600091825260209091200154600f80546001600160a01b03909216918390811061148057634e487b7160e01b600052603260045260246000fd5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600582526040808220829055600b90925220805460ff19169055600f8054806114e657634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180546001600160a01b03191690550190555050565b8061151681614750565b9150506113c8565b5050565b6000546001600160a01b0316331461154c5760405162461bcd60e51b8152600401611040906145c6565b6000601f556101f4811161105d57601f55565b3360008181526006602090815260408083206001600160a01b038716845290915281205490916110ff9185906112a0908661395d565b6000546001600160a01b031633146115bf5760405162461bcd60e51b8152600401611040906145c6565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b336000818152600b602052604090205460ff161561165f5760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b6064820152608401611040565b600061166a836139bc565b505050506001600160a01b03841660009081526004602052604090205491925061169691905082613a0b565b6001600160a01b0383166000908152600460205260409020556015546116bc9082613a0b565b6015556016546116cc908461395d565b601655505050565b6000546001600160a01b031633146116fe5760405162461bcd60e51b8152600401611040906145c6565b60006025556101f4811161105d57602555565b6000546001600160a01b0316331461173b5760405162461bcd60e51b8152600401611040906145c6565b6001600160a01b03166000908152600860205260409020805460ff19166001179055565b60006014548311156117b35760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401611040565b816117d25760006117c3846139bc565b50939550611103945050505050565b60006117dd846139bc565b50929550611103945050505050565b6000546001600160a01b031633146118165760405162461bcd60e51b8152600401611040906145c6565b60006021556101f4811161105d57602155565b6002546001600160a01b031633146118535760405162461bcd60e51b8152600401611040906145fb565b602e80546001600160a01b039092166001600160a01b0319909216821790556000908152600860209081526040808320805460ff199081166001908117909255600984528285208054821683179055600a909352922080549091169091179055565b600080602b60019054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561190657600080fd5b505afa15801561191a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061193e91906143b8565b6001600160a01b031663e6a4390530856040518363ffffffff1660e01b815260040161196b929190614559565b60206040518083038186803b15801561198357600080fd5b505afa158015611997573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119bb91906143b8565b6001600160a01b03166000908152600c602052604090205460ff169392505050565b6000546001600160a01b03163314611a075760405162461bcd60e51b8152600401611040906145c6565b6001600160a01b0381166000908152600b602052604090205460ff1615611a705760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401611040565b6001600160a01b03811660009081526004602052604090205415611aca576001600160a01b038116600090815260046020526040902054611ab0906112af565b6001600160a01b0382166000908152600560205260409020555b6001600160a01b03166000818152600b60205260408120805460ff19166001908117909155600f805491820181559091527f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac8020180546001600160a01b0319169091179055565b6002546001600160a01b03163314611b5a5760405162461bcd60e51b8152600401611040906145fb565b8015611ef7576000602b60019054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611bb057600080fd5b505afa158015611bc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be891906143b8565b6001600160a01b031663e6a4390530602b60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611c4557600080fd5b505afa158015611c59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c7d91906143b8565b6040518363ffffffff1660e01b8152600401611c9a929190614559565b60206040518083038186803b158015611cb257600080fd5b505afa158015611cc6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cea91906143b8565b90506001600160a01b038116611e8757602b60019054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611d4857600080fd5b505afa158015611d5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d8091906143b8565b6001600160a01b031663c9c6539630602b60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611ddd57600080fd5b505afa158015611df1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e1591906143b8565b6040518363ffffffff1660e01b8152600401611e32929190614559565b602060405180830381600087803b158015611e4c57600080fd5b505af1158015611e60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e8491906143b8565b90505b602c80546001600160a01b039283166001600160a01b0319909116811782556000908152600c60209081526040808320805460ff19908116909155602e8054881515600160b01b0260ff60b01b1990911617905593549094168252600a9052919091208054909116600117905550565b6000602b60019054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611f4757600080fd5b505afa158015611f5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f7f91906143b8565b602d5460405163e6a4390560e01b81526001600160a01b039283169263e6a4390592611fb392309290911690600401614559565b60206040518083038186803b158015611fcb57600080fd5b505afa158015611fdf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061200391906143b8565b90506001600160a01b03811661212257602b60019054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561206157600080fd5b505afa158015612075573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061209991906143b8565b602d546040516364e329cb60e11b81526001600160a01b039283169263c9c65396926120cd92309290911690600401614559565b602060405180830381600087803b1580156120e757600080fd5b505af11580156120fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061211f91906143b8565b90505b602c80546001600160a01b0319166001600160a01b039290921691909117905550602e805460ff60b01b19169055565b6000546001600160a01b0316331461217c5760405162461bcd60e51b8152600401611040906145c6565b60006023556101f4811161105d57602355565b61219981426146a7565b3360009081526007602052604090205550565b6001600160a01b0381166000908152600b602052604081205460ff16156121e957506001600160a01b031660009081526005602052604090205490565b6001600160a01b038216600090815260046020526040902054611103906112af565b6000546001600160a01b031633146122355760405162461bcd60e51b8152600401611040906145c6565b600080546040516001600160a01b03909116906000805160206147cd833981519152908390a3600080546001600160a01b0319169055565b6002546001600160a01b031633146122975760405162461bcd60e51b8152600401611040906145fb565b6000602b60019054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156122e757600080fd5b505afa1580156122fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061231f91906143b8565b6001600160a01b031663e6a4390530856040518363ffffffff1660e01b815260040161234c929190614559565b60206040518083038186803b15801561236457600080fd5b505afa158015612378573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061239c91906143b8565b90506001600160a01b0381166124b457602b60019054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156123fa57600080fd5b505afa15801561240e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061243291906143b8565b6001600160a01b031663c9c6539630856040518363ffffffff1660e01b815260040161245f929190614559565b602060405180830381600087803b15801561247957600080fd5b505af115801561248d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124b191906143b8565b90505b6001600160a01b03166000908152600c60205260409020805460ff191691151591909117905550565b6000546001600160a01b031633146125075760405162461bcd60e51b8152600401611040906145c6565b6125286064612522600060145461316b90919063ffffffff16565b906131ea565b602f55612533613a4d565b602e805460ff60a81b19169055565b6000546001600160a01b0316331461256c5760405162461bcd60e51b8152600401611040906145c6565b6000602955611b58811161105d57602955565b6000546001600160a01b031633146125a95760405162461bcd60e51b8152600401611040906145c6565b6000601d556101f4811161105d57601d55565b6000546001600160a01b031633146125e65760405162461bcd60e51b8152600401611040906145c6565b601180546001600160a01b0319166001600160a01b0392909216919091179055565b60606019805461106f90614715565b6012546001600160a01b0316336001600160a01b0316148061264357506002546001600160a01b031633145b6126825760405162461bcd60e51b815260206004820152601060248201526f2ab730b63637bbb2b21031b0b63632b960811b6044820152606401611040565b80156126c9576001600160a01b0383166000908152600d60205260409020546126ab908361395d565b6001600160a01b0384166000908152600d6020526040902055505050565b6001600160a01b0383166000908152600d60205260409020546126ab9083613a0b565b505050565b6002546001600160a01b0316331461271b5760405162461bcd60e51b8152600401611040906145fb565b6001600160a01b03821663a9059cbb336040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101849052604401602060405180830381600087803b15801561277357600080fd5b505af1158015612787573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126ec9190614501565b6000546001600160a01b031633146127d55760405162461bcd60e51b8152600401611040906145c6565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b60006110ff33846112a0856040518060600160405280602581526020016147ed602591393360009081526006602090815260408083206001600160a01b038d1684529091529020549190613900565b6001546001600160a01b031633146128b55760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b6064820152608401611040565b60035442116129065760405162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374206973206c6f636b656420756e74696c20372064617973006044820152606401611040565b600154600080546040516001600160a01b0393841693909116916000805160206147cd83398151915291a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b3360009081526007602052604081205442116129ac5760405162461bcd60e51b815260206004820152601660248201527515d85b1b195d081a5cc81cdd1a5b1b081b1bd8dad95960521b6044820152606401611040565b6110ff338484613350565b6002546001600160a01b031633146129e15760405162461bcd60e51b8152600401611040906145fb565b6000602b60019054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015612a3157600080fd5b505afa158015612a45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a6991906143b8565b6001600160a01b031663e6a4390530846040518363ffffffff1660e01b8152600401612a96929190614559565b60206040518083038186803b158015612aae57600080fd5b505afa158015612ac2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ae691906143b8565b90506001600160a01b038116612bfe57602b60019054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015612b4457600080fd5b505afa158015612b58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b7c91906143b8565b6001600160a01b031663c9c6539630846040518363ffffffff1660e01b8152600401612ba9929190614559565b602060405180830381600087803b158015612bc357600080fd5b505af1158015612bd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bfb91906143b8565b90505b6001600160a01b03166000818152600c60209081526040808320805460ff19908116909155602c80546001600160a01b031916909517909455600a90915290208054909116600117905550565b6000546001600160a01b03163314612c755760405162461bcd60e51b8152600401611040906145c6565b612c8381633b9aca006146df565b602f5550565b6002546001600160a01b03163314612cb35760405162461bcd60e51b8152600401611040906145fb565b602b80546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6000546001600160a01b03163314612d055760405162461bcd60e51b8152600401611040906145c6565b602e8054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15990612d5290831515815260200190565b60405180910390a150565b6002546001600160a01b03163314612d875760405162461bcd60e51b8152600401611040906145fb565b604051600090339083908381818185875af1925050503d8060008114612dc9576040519150601f19603f3d011682016040523d82523d6000602084013e612dce565b606091505b505090508061151e5760405162461bcd60e51b815260206004820152601060248201526f4661696c656420746f2072657363756560801b6044820152606401611040565b6000546001600160a01b03163314612e3c5760405162461bcd60e51b8152600401611040906145c6565b601080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314612e885760405162461bcd60e51b8152600401611040906145c6565b60008054600180546001600160a01b03199081166001600160a01b03841617909155169055612eb781426146a7565b600355600080546040516001600160a01b03909116906000805160206147cd833981519152908390a350565b6000546001600160a01b03163314612f0d5760405162461bcd60e51b8152600401611040906145c6565b612f1b81633b9aca006146df565b60175550565b6000546001600160a01b03163314612f4b5760405162461bcd60e51b8152600401611040906145c6565b6001600160a01b03166000908152600860205260409020805460ff19169055565b6000546001600160a01b03163314612f965760405162461bcd60e51b8152600401611040906145c6565b612fa481633b9aca006146df565b602f55612fdc601c54601b55601e54601d55602054601f55602254602155602454602355602654602555602854602755602a54602955565b50602e805460ff60a81b1916600160a81b179055565b6000546001600160a01b0316331461301c5760405162461bcd60e51b8152600401611040906145c6565b6001600160a01b0381166130815760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401611040565b600080546040516001600160a01b03808516939216916000805160206147cd83398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146130f45760405162461bcd60e51b8152600401611040906145c6565b601280546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146131405760405162461bcd60e51b8152600401611040906145c6565b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b60008261317a57506000611103565b600061318683856146df565b90508261319385836146bf565b1461132c5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401611040565b600061132c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613b02565b6001600160a01b03831661328e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401611040565b6001600160a01b0382166132ef5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401611040565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166133b45760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401611040565b6001600160a01b0382166134165760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401611040565b6001600160a01b0382166000908152600c602052604090205460ff161561347f5760405162461bcd60e51b815260206004820152601760248201527f5468652070616972206973206e6f7420616c6c6f7765640000000000000000006044820152606401611040565b600081116134e15760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401611040565b6001600160a01b0382166000908152600a602052604090205460ff166135655760175461351782613511856121ac565b9061395d565b11156135655760405162461bcd60e51b815260206004820152601f60248201527f546f6b656e206c696d69742072656163686564206f6e207265636569766572006044820152606401611040565b6001600160a01b03831660009081526009602052604090205460ff161580156135a757506001600160a01b03821660009081526009602052604090205460ff16155b1561360f57602f5481111561360f5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401611040565b6001600160a01b0383166000908152600d6020526040902054156136a8576001600160a01b0383166000908152600d602052604090205461365990613653856121ac565b90613a0b565b8111156136a85760405162461bcd60e51b815260206004820152601e60248201527f43616e206e6f74207472616e73666572207374616b656420746f6b656e7300006044820152606401611040565b6001600160a01b0383166000908152600e602052604090205460ff16806136e757506001600160a01b0382166000908152600e602052604090205460ff165b156137405760405162461bcd60e51b8152602060048201526024808201527f426c61636b6c6973746564206163636f756e742c20636f6e74616374207375706044820152631c1bdc9d60e21b6064820152608401611040565b600061374b306121ac565b9050602f54811061375b5750602f545b603054811080159081906137795750602e54600160a01b900460ff16155b80156137935750602c546001600160a01b03868116911614155b80156137a85750602e54600160a81b900460ff165b1561386f57602e805460ff60a01b198116600160a01b1790915560305492506137de9030906001600160a01b0316846000613b30565b6000806137e9613cd1565b602e5460405163d66f1e3b60e01b81529294509092506001600160a01b0381169163d66f1e3b9161382d91889187918791600160b01b900460ff1690600401614632565b600060405180830381600087803b15801561384757600080fd5b505af115801561385b573d6000803e3d6000fd5b5050602e805460ff60a01b19169055505050505b6001600160a01b03851660009081526008602052604090205460019060ff16806138b157506001600160a01b03851660009081526008602052604090205460ff165b156138be575060006138e2565b602c546001600160a01b03868116911614156138e257602b805460ff191660011790555b6138ee86868684613b30565b5050602b805460ff1916905550505050565b600081848411156139245760405162461bcd60e51b81526004016110409190614573565b50600061393184866146fe565b95945050505050565b6000806000613947613d50565b909250905061395682826131ea565b9250505090565b60008061396a83856146a7565b90508381101561132c5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401611040565b60008060008060008060008060006139d38a613f0a565b92509250925060008060006139f18d86866139ec61393a565b613f46565b919f909e50909c50959a5093985091965092945050505050565b600061132c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613900565b601b54158015613a5d5750601d54155b8015613a695750602154155b8015613a755750601f54155b8015613a815750602354155b8015613a8d5750602554155b8015613a995750602754155b8015613aa55750602954155b15613aac57565b601b8054601c55601d8054601e55601f80546020556021805460225560238054602455602580546026556027805460285560298054602a5560009788905595879055938690559185905584905583905582905555565b60008183613b235760405162461bcd60e51b81526004016110409190614573565b50600061393184866146bf565b80613b3d57613b3d613a4d565b6001600160a01b0384166000908152600b602052604090205460ff168015613b7e57506001600160a01b0383166000908152600b602052604090205460ff16155b15613b9357613b8e848484613f96565b613c91565b6001600160a01b0384166000908152600b602052604090205460ff16158015613bd457506001600160a01b0383166000908152600b602052604090205460ff165b15613be457613b8e8484846140bc565b6001600160a01b0384166000908152600b602052604090205460ff16158015613c2657506001600160a01b0383166000908152600b602052604090205460ff16155b15613c3657613b8e848484614165565b6001600160a01b0384166000908152600b602052604090205460ff168015613c7657506001600160a01b0383166000908152600b602052604090205460ff165b15613c8657613b8e8484846141a9565b613c91848484614165565b80613ccb57613ccb601c54601b55601e54601d55602054601f55602254602155602454602355602654602555602854602755602a54602955565b50505050565b613cd9614360565b613ce161437e565b6021548252601f546020808401919091526023546040808501919091526025546060808601919091526027546080860152601d5460a08601526011546001600160a01b039081168552601054811693850193909352601254831691840191909152601354909116908201529091565b6015546014546000918291825b600f54811015613eda578260046000600f8481548110613d8d57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020541180613e0657508160056000600f8481548110613ddf57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15613e1c57601554601454945094505050509091565b613e7060046000600f8481548110613e4457634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020548490613a0b565b9250613ec660056000600f8481548110613e9a57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020548390613a0b565b915080613ed281614750565b915050613d5d565b50601454601554613eea916131ea565b821015613f01576015546014549350935050509091565b90939092509050565b600080600080613f198561421c565b90506000613f2686614239565b90506000613f38826136538986613a0b565b979296509094509092505050565b6000808080613f55888661316b565b90506000613f63888761316b565b90506000613f71888861316b565b90506000613f83826136538686613a0b565b939b939a50919850919650505050505050565b600080600080600080613fa8876139bc565b6001600160a01b038f16600090815260056020526040902054959b50939950919750955093509150613fda9088613a0b565b6001600160a01b038a166000908152600560209081526040808320939093556004905220546140099087613a0b565b6001600160a01b03808b1660009081526004602052604080822093909355908a1681522054614038908661395d565b6001600160a01b03891660009081526004602052604090205561405a816142b4565b614064848361433c565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516140a991815260200190565b60405180910390a3505050505050505050565b6000806000806000806140ce876139bc565b6001600160a01b038f16600090815260046020526040902054959b509399509197509550935091506141009087613a0b565b6001600160a01b03808b16600090815260046020908152604080832094909455918b16815260059091522054614136908461395d565b6001600160a01b038916600090815260056020908152604080832093909355600490522054614038908661395d565b600080600080600080614177876139bc565b6001600160a01b038f16600090815260046020526040902054959b509399509197509550935091506140099087613a0b565b6000806000806000806141bb876139bc565b6001600160a01b038f16600090815260056020526040902054959b509399509197509550935091506141ed9088613a0b565b6001600160a01b038a166000908152600560209081526040808320939093556004905220546141009087613a0b565b6000611103612710612522601b548561316b90919063ffffffff16565b602b54600090819060ff1661424f576000614253565b6029545b905061132c61271061252283602754602554602354602154601f54601d5461427b91906146a7565b61428591906146a7565b61428f91906146a7565b61429991906146a7565b6142a391906146a7565b6142ad91906146a7565b869061316b565b60006142be61393a565b905060006142cc838361316b565b306000908152600460205260409020549091506142e9908261395d565b30600090815260046020908152604080832093909355600b9052205460ff16156126ec5730600090815260056020526040902054614327908461395d565b30600090815260056020526040902055505050565b6015546143499083613a0b565b601555601654614359908261395d565b6016555050565b6040518060c001604052806006906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b6000602082840312156143ad578081fd5b813561132c81614781565b6000602082840312156143c9578081fd5b815161132c81614781565b600080604083850312156143e6578081fd5b82356143f181614781565b9150602083013561440181614781565b809150509250929050565b600080600060608486031215614420578081fd5b833561442b81614781565b9250602084013561443b81614781565b929592945050506040919091013590565b6000806040838503121561445e578182fd5b823561446981614781565b9150602083013561440181614796565b6000806040838503121561448b578182fd5b823561449681614781565b946020939093013593505050565b6000806000606084860312156144b8578283fd5b83356144c381614781565b92506020840135915060408401356144da81614796565b809150509250925092565b6000602082840312156144f6578081fd5b813561132c81614796565b600060208284031215614512578081fd5b815161132c81614796565b60006020828403121561452e578081fd5b5035919050565b60008060408385031215614547578182fd5b82359150602083013561440181614796565b6001600160a01b0392831681529116602082015260400190565b6000602080835283518082850152825b8181101561459f57858101830151858201604001528201614583565b818111156145b05783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601a908201527f43616c6c657220646f6573206e6f74206861766520706f776572000000000000604082015260600190565b848152610180810160208083018660005b600681101561466057815183529183019190830190600101614643565b50505060e083018560005b60048110156146915781516001600160a01b03168352918301919083019060010161466b565b5050505082151561016083015295945050505050565b600082198211156146ba576146ba61476b565b500190565b6000826146da57634e487b7160e01b81526012600452602481fd5b500490565b60008160001904831182151516156146f9576146f961476b565b500290565b6000828210156147105761471061476b565b500390565b600181811c9082168061472957607f821691505b6020821081141561474a57634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156147645761476461476b565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038116811461105d57600080fd5b801515811461105d57600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e045524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220b9562b30fbfffd4450edc236ec48e9dc17a2c83933fd6d4d5862da10a1bc42d764736f6c63430008040033

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

00000000000000000000000010ed43c718714eb63d5aa57b78b54704e256024e000000000000000000000000e9e7cea3dedca5984780bafc599bd69add087d56

-----Decoded View---------------
Arg [0] : router (address): 0x10ED43C718714eb63d5aA57B78B54704E256024E
Arg [1] : stablecoin (address): 0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 00000000000000000000000010ed43c718714eb63d5aa57b78b54704e256024e
Arg [1] : 000000000000000000000000e9e7cea3dedca5984780bafc599bd69add087d56


Deployed Bytecode Sourcemap

8066:28788:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23108:158;;;;;;;;;;-1:-1:-1;23108:158:0;;;;;:::i;:::-;;:::i;:::-;;12704:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13707:161;;;;;;;;;;-1:-1:-1;13707:161:0;;;;;:::i;:::-;;:::i;:::-;;;5692:14:1;;5685:22;5667:41;;5655:2;5640:18;13707:161:0;5622:92:1;9188:57:0;;;;;;;;;;;;;;;;;;;15846:25:1;;;15834:2;15819:18;9188:57:0;15801:76:1;19189:140:0;;;;;;;;;;-1:-1:-1;19189:140:0;;;;;:::i;:::-;;:::i;9784:30::-;;;;;;;;;;;;;;;;14909:87;;;;;;;;;;-1:-1:-1;14978:10:0;;14909:87;;19041:136;;;;;;;;;;-1:-1:-1;19041:136:0;;;;;:::i;:::-;;:::i;36737:114::-;;;;;;;;;;-1:-1:-1;36737:114:0;;;;;:::i;:::-;-1:-1:-1;;;;;36825:18:0;36801:4;36825:18;;;:9;:18;;;;;;;;;36737:114;10260:41;;;;;;;;;;-1:-1:-1;10260:41:0;;;;;;;-1:-1:-1;;;;;10260:41:0;;;;;;-1:-1:-1;;;;;4671:32:1;;;4653:51;;4641:2;4626:18;10260:41:0;4608:102:1;12981:95:0;;;;;;;;;;-1:-1:-1;13061:7:0;;12981:95;;23670:140;;;;;;;;;;-1:-1:-1;23670:140:0;;;;;:::i;:::-;;:::i;9681:34::-;;;;;;;;;;;;;;;;13876:394;;;;;;;;;;-1:-1:-1;13876:394:0;;;;;:::i;:::-;;:::i;8540:56::-;;;;;;;;;;-1:-1:-1;8540:56:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15959:253;;;;;;;;;;-1:-1:-1;15959:253:0;;;;;:::i;:::-;;:::i;12890:83::-;;;;;;;;;;-1:-1:-1;12956:9:0;;12890:83;;12956:9;;;;17068:36:1;;17056:2;17041:18;12890:83:0;17023:87:1;16675:479:0;;;;;;;;;;-1:-1:-1;16675:479:0;;;;;:::i;:::-;;:::i;10160:42::-;;;;;;;;;;;;;;;;22938:158;;;;;;;;;;-1:-1:-1;22938:158:0;;;;;:::i;:::-;;:::i;14278:218::-;;;;;;;;;;-1:-1:-1;14278:218:0;;;;;:::i;:::-;;:::i;10006:28::-;;;;;;;;;;;;;;;;18078:143;;;;;;;;;;-1:-1:-1;18078:143:0;;;;;:::i;:::-;;:::i;9398:26::-;;;;;;;;;;;;;;;;15130:377;;;;;;;;;;-1:-1:-1;15130:377:0;;;;;:::i;:::-;;:::i;10343:19::-;;;;;;;;;;-1:-1:-1;10343:19:0;;;;-1:-1:-1;;;;;10343:19:0;;;23480:152;;;;;;;;;;-1:-1:-1;23480:152:0;;;;;:::i;:::-;;:::i;17820:111::-;;;;;;;;;;-1:-1:-1;17820:111:0;;;;;:::i;:::-;;:::i;15515:436::-;;;;;;;;;;-1:-1:-1;15515:436:0;;;;;:::i;:::-;;:::i;23278:194::-;;;;;;;;;;-1:-1:-1;23278:194:0;;;;;:::i;:::-;;:::i;22212:307::-;;;;;;;;;;-1:-1:-1;22212:307:0;;;;;:::i;:::-;;:::i;10308:28::-;;;;;;;;;;-1:-1:-1;10308:28:0;;;;-1:-1:-1;;;;;10308:28:0;;;10435:40;;;;;;;;;;-1:-1:-1;10435:40:0;;;;-1:-1:-1;;;10435:40:0;;;;;;21950:254;;;;;;;;;;-1:-1:-1;21950:254:0;;;;;:::i;:::-;;:::i;16220:447::-;;;;;;;;;;-1:-1:-1;16220:447:0;;;;;:::i;:::-;;:::i;29803:123::-;;;;;;;;;;-1:-1:-1;29803:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;29891:27:0;29867:4;29891:27;;;:18;:27;;;;;;;;;29803:123;8962:26;;;;;;;;;;-1:-1:-1;8962:26:0;;;;-1:-1:-1;;;;;8962:26:0;;;10123:30;;;;;;;;;;;;;;;;19519:1153;;;;;;;;;;-1:-1:-1;19519:1153:0;;;;;:::i;:::-;;:::i;23968:180::-;;;;;;;;;;-1:-1:-1;23968:180:0;;;;;:::i;:::-;;:::i;17943:127::-;;;;;;;;;;-1:-1:-1;17943:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;18033:29:0;18009:4;18033:29;;;:20;:29;;;;;;;;;17943:127;15008:108;;;;;;;;;;-1:-1:-1;15008:108:0;;;;;:::i;:::-;;:::i;6275:90::-;;;;;;;;;;-1:-1:-1;6346:11:0;;-1:-1:-1;;;;;6346:11:0;6275:90;;9485:34;;;;;;;;;;;;;;;;13084:198;;;;;;;;;;-1:-1:-1;13084:198:0;;;;;:::i;:::-;;:::i;6500:148::-;;;;;;;;;;;;;:::i;21413:529::-;;;;;;;;;;-1:-1:-1;21413:529:0;;;;;:::i;:::-;;:::i;10211:36::-;;;;;;;;;;-1:-1:-1;10211:36:0;;;;;;;;36622:107;;;;;;;;;;-1:-1:-1;36622:107:0;;;;;:::i;:::-;-1:-1:-1;;;;;36706:14:0;36679:7;36706:14;;;:6;:14;;;;;;;36622:107;10534:54;;;;;;;;;;;;;;;;24670:193;;;;;;;;;;;;;:::i;14781:120::-;;;;;;;;;;-1:-1:-1;14781:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;14873:20:0;14849:4;14873:20;;;:11;:20;;;;;;;;;14781:120;23816:144;;;;;;;;;;-1:-1:-1;23816:144:0;;;;;:::i;:::-;;:::i;6184:79::-;;;;;;;;;;-1:-1:-1;6222:7:0;6249:6;-1:-1:-1;;;;;6249:6:0;6184:79;;24160:194;;;;;;;;;;-1:-1:-1;24160:194:0;;;;;:::i;:::-;;:::i;18757:121::-;;;;;;;;;;-1:-1:-1;18757:121:0;;;;;:::i;:::-;;:::i;12795:87::-;;;;;;;;;;;;;:::i;36266:348::-;;;;;;;;;;-1:-1:-1;36266:348:0;;;;;:::i;:::-;;:::i;25463:221::-;;;;;;;;;;-1:-1:-1;25463:221:0;;;;;:::i;:::-;;:::i;18229:151::-;;;;;;;;;;-1:-1:-1;18229:151:0;;;;;:::i;:::-;;:::i;14504:269::-;;;;;;;;;;-1:-1:-1;14504:269:0;;;;;:::i;:::-;;:::i;7243:305::-;;;;;;;;;;;;;:::i;13294:254::-;;;;;;;;;;-1:-1:-1;13294:254:0;;;;;:::i;:::-;;:::i;9592:28::-;;;;;;;;;;;;;;;;9879:32;;;;;;;;;;;;;;;;8917:38;;;;;;;;;;-1:-1:-1;8917:38:0;;;;-1:-1:-1;;;;;8917:38:0;;;6908:89;;;;;;;;;;-1:-1:-1;6980:9:0;;6908:89;;8654:46;;;;;;;;;;-1:-1:-1;8654:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;20680:725;;;;;;;;;;-1:-1:-1;20680:725:0;;;;;:::i;:::-;;:::i;24366:103::-;;;;;;;;;;-1:-1:-1;24366:103:0;;;;;:::i;:::-;;:::i;19337:174::-;;;;;;;;;;-1:-1:-1;19337:174:0;;;;;:::i;:::-;;:::i;24477:171::-;;;;;;;;;;-1:-1:-1;24477:171:0;;;;;:::i;:::-;;:::i;10482:39::-;;;;;;;;;;-1:-1:-1;10482:39:0;;;;-1:-1:-1;;;10482:39:0;;;;;;22527:100;;;;;;;;;;-1:-1:-1;22608:11:0;;-1:-1:-1;;;;;22608:11:0;22527:100;;25152:264;;;;;;;;;;-1:-1:-1;25152:264:0;;;;;:::i;:::-;;:::i;18648:97::-;;;;;;;;;;-1:-1:-1;18648:97:0;;;;;:::i;:::-;;:::i;10369:25::-;;;;;;;;;;-1:-1:-1;10369:25:0;;;;-1:-1:-1;;;;;10369:25:0;;;10595:60;;;;;;;;;;;;;;;;7005:226;;;;;;;;;;-1:-1:-1;7005:226:0;;;;;:::i;:::-;;:::i;13556:143::-;;;;;;;;;;-1:-1:-1;13556:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;13664:18:0;;;13637:7;13664:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;13556:143;18386:126;;;;;;;;;;-1:-1:-1;18386:126:0;;;;;:::i;:::-;;:::i;22763:110::-;;;;;;;;;;-1:-1:-1;22763:110:0;;;;;:::i;:::-;;:::i;24877:170::-;;;;;;;;;;-1:-1:-1;24877:170:0;;;;;:::i;:::-;;:::i;6656:244::-;;;;;;;;;;-1:-1:-1;6656:244:0;;;;;:::i;:::-;;:::i;18886:113::-;;;;;;;;;;-1:-1:-1;18886:113:0;;;;;:::i;:::-;;:::i;12590:106::-;;;;;;;;;;-1:-1:-1;2610:10:0;12639:7;12666:22;;;:8;:22;;;;;;12590:106;;18520:120;;;;;;;;;;-1:-1:-1;18520:120:0;;;;;:::i;:::-;;:::i;22639:112::-;;;;;;;;;;-1:-1:-1;22726:17:0;;-1:-1:-1;;;;;22726:17:0;22639:112;;23108:158;6413:6;;-1:-1:-1;;;;;6413:6:0;2610:10;6413:22;6405:67;;;;-1:-1:-1;;;6405:67:0;;;;;;;:::i;:::-;;;;;;;;;23190:1:::1;23180:7;:11:::0;23215:3:::1;23205:13:::0;::::1;23202:55;;23232:7;:16:::0;;;23202:55:::1;23108:158:::0;:::o;12704:83::-;12741:13;12774:5;12767:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12704:83;:::o;13707:161::-;13782:4;13799:39;2610:10;13822:7;13831:6;13799:8;:39::i;:::-;-1:-1:-1;13856:4:0;13707:161;;;;;:::o;19189:140::-;6413:6;;-1:-1:-1;;;;;6413:6:0;2610:10;6413:22;6405:67;;;;-1:-1:-1;;;6405:67:0;;;;;;;:::i;:::-;19301:20:::1;:10:::0;19314:7:::1;19301:20;:::i;:::-;19269:29;:52:::0;-1:-1:-1;19189:140:0:o;19041:136::-;6413:6;;-1:-1:-1;;;;;6413:6:0;2610:10;6413:22;6405:67;;;;-1:-1:-1;;;6405:67:0;;;;;;;:::i;:::-;19105:11:::1;:17:::0;;-1:-1:-1;;;;;19105:17:0;;::::1;-1:-1:-1::0;;;;;;19105:17:0;;::::1;::::0;::::1;::::0;;:11:::1;19133:29:::0;;;:24:::1;:29;::::0;;;;:36;;-1:-1:-1;;19133:36:0::1;19105:17:::0;19133:36:::1;::::0;;19041:136::o;23670:140::-;6413:6;;-1:-1:-1;;;;;6413:6:0;2610:10;6413:22;6405:67;;;;-1:-1:-1;;;6405:67:0;;;;;;;:::i;:::-;23742:1:::1;23732:7;:11:::0;23764:3:::1;23757:10:::0;::::1;23754:49;;23781:7;:13:::0;23670:140::o;13876:394::-;-1:-1:-1;;;;;14017:16:0;;13974:4;14017:16;;;:8;:16;;;;;;13999:15;:34;13991:70;;;;-1:-1:-1;;;13991:70:0;;13969:2:1;13991:70:0;;;13951:21:1;14008:2;13988:18;;;13981:30;-1:-1:-1;;;14027:18:1;;;14020:52;14089:18;;13991:70:0;13941:172:1;13991:70:0;14072:36;14082:6;14090:9;14101:6;14072:9;:36::i;:::-;14119:121;14128:6;2610:10;14150:89;14188:6;14150:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14150:19:0;;;;;;:11;:19;;;;;;;;2610:10;14150:33;;;;;;;;;;:37;:89::i;:::-;14119:8;:121::i;:::-;-1:-1:-1;14258:4:0;13876:394;;;;;:::o;15959:253::-;16025:7;16064;;16053;:18;;16045:73;;;;-1:-1:-1;;;16045:73:0;;7167:2:1;16045:73:0;;;7149:21:1;7206:2;7186:18;;;7179:30;7245:34;7225:18;;;7218:62;-1:-1:-1;;;7296:18:1;;;7289:40;7346:19;;16045:73:0;7139:232:1;16045:73:0;16129:19;16152:10;:8;:10::i;:::-;16129:33;-1:-1:-1;16180:24:0;:7;16129:33;16180:11;:24::i;:::-;16173:31;15959:253;-1:-1:-1;;;15959:253:0:o;16675:479::-;6413:6;;-1:-1:-1;;;;;6413:6:0;2610:10;6413:22;6405:67;;;;-1:-1:-1;;;6405:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16757:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;16749:60;;;::::0;-1:-1:-1;;;16749:60:0;;8744:2:1;16749:60:0::1;::::0;::::1;8726:21:1::0;8783:2;8763:18;;;8756:30;8822:29;8802:18;;;8795:57;8869:18;;16749:60:0::1;8716:177:1::0;16749:60:0::1;16825:9;16820:327;16844:9;:16:::0;16840:20;::::1;16820:327;;;16902:7;-1:-1:-1::0;;;;;16886:23:0::1;:9;16896:1;16886:12;;;;;;-1:-1:-1::0;;;16886:12:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;16886:12:0::1;:23;16882:254;;;16945:9;16955:16:::0;;:20:::1;::::0;16974:1:::1;::::0;16955:20:::1;:::i;:::-;16945:31;;;;;;-1:-1:-1::0;;;16945:31:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;16930:9:::1;:12:::0;;-1:-1:-1;;;;;16945:31:0;;::::1;::::0;16940:1;;16930:12;::::1;;;-1:-1:-1::0;;;16930:12:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;16930:46:0::1;-1:-1:-1::0;;;;;16930:46:0;;::::1;;::::0;;16995:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;17034:11:::1;:20:::0;;;;:28;;-1:-1:-1;;17034:28:0::1;::::0;;17081:9:::1;:15:::0;;;::::1;;-1:-1:-1::0;;;17081:15:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;;-1:-1:-1;;17081:15:0;;;;;-1:-1:-1;;;;;;17081:15:0::1;::::0;;;;;16820:327:::1;16675:479:::0;:::o;16882:254::-:1;16862:3:::0;::::1;::::0;::::1;:::i;:::-;;;;16820:327;;;;16675:479:::0;:::o;22938:158::-;6413:6;;-1:-1:-1;;;;;6413:6:0;2610:10;6413:22;6405:67;;;;-1:-1:-1;;;6405:67:0;;;;;;;:::i;:::-;23020:1:::1;23010:7;:11:::0;23045:3:::1;23035:13:::0;::::1;23032:55;;23062:7;:16:::0;22938:158::o;14278:218::-;2610:10;14366:4;14415:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;14415:34:0;;;;;;;;;;14366:4;;14383:83;;14406:7;;14415:50;;14454:10;14415:38;:50::i;18078:143::-;6413:6;;-1:-1:-1;;;;;6413:6:0;2610:10;6413:22;6405:67;;;;-1:-1:-1;;;6405:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18174:29:0;;;::::1;;::::0;;;:20:::1;:29;::::0;;;;:39;;-1:-1:-1;;18174:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18078:143::o;15130:377::-;2610:10;15182:14;15231:19;;;:11;:19;;;;;;;;15230:20;15222:77;;;;-1:-1:-1;;;15222:77:0;;15085:2:1;15222:77:0;;;15067:21:1;15124:2;15104:18;;;15097:30;15163:34;15143:18;;;15136:62;-1:-1:-1;;;15214:18:1;;;15207:42;15266:19;;15222:77:0;15057:234:1;15222:77:0;15311:15;15335:19;15346:7;15335:10;:19::i;:::-;-1:-1:-1;;;;;;;;;15383:15:0;;;;;;:7;:15;;;;;;15310:44;;-1:-1:-1;15383:28:0;;:15;-1:-1:-1;15310:44:0;15383:19;:28::i;:::-;-1:-1:-1;;;;;15365:15:0;;;;;;:7;:15;;;;;:46;15432:7;;:20;;15444:7;15432:11;:20::i;:::-;15422:7;:30;15476:10;;:23;;15491:7;15476:14;:23::i;:::-;15463:10;:36;-1:-1:-1;;;15130:377:0:o;23480:152::-;6413:6;;-1:-1:-1;;;;;6413:6:0;2610:10;6413:22;6405:67;;;;-1:-1:-1;;;6405:67:0;;;;;;;:::i;:::-;23560:1:::1;23546:11;:15:::0;23582:3:::1;23575:10:::0;::::1;23572:53;;23599:11;:17:::0;23480:152::o;17820:111::-;6413:6;;-1:-1:-1;;;;;6413:6:0;2610:10;6413:22;6405:67;;;;-1:-1:-1;;;6405:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17889:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;17889:34:0::1;17919:4;17889:34;::::0;;17820:111::o;15515:436::-;15605:7;15644;;15633;:18;;15625:62;;;;-1:-1:-1;;;15625:62:0;;9811:2:1;15625:62:0;;;9793:21:1;9850:2;9830:18;;;9823:30;9889:33;9869:18;;;9862:61;9940:18;;15625:62:0;9783:181:1;15625:62:0;15703:17;15698:246;;15738:15;15762:19;15773:7;15762:10;:19::i;:::-;-1:-1:-1;15737:44:0;;-1:-1:-1;15796:14:0;;-1:-1:-1;;;;;15796:14:0;15698:246;15845:23;15876:19;15887:7;15876:10;:19::i;:::-;-1:-1:-1;15843:52:0;;-1:-1:-1;15910:22:0;;-1:-1:-1;;;;;15910:22:0;23278:194;6413:6;;-1:-1:-1;;;;;6413:6:0;2610:10;6413:22;6405:67;;;;-1:-1:-1;;;6405:67:0;;;;;;;:::i;:::-;23378:1:::1;23362:13;:17:::0;23409:3:::1;23393:19:::0;::::1;23390:73;;23426:13;:28:::0;23278:194::o;22212:307::-;6346:11;;-1:-1:-1;;;;;6346:11:0;2610:10;22278:28;22270:67;;;;-1:-1:-1;;;22270:67:0;;;;;;;:::i;:::-;22348:10;:20;;-1:-1:-1;;;;;22348:20:0;;;-1:-1:-1;;;;;;22348:20:0;;;;;;;:10;22379:27;;;:18;:27;;;;;;;;:34;;-1:-1:-1;;22379:34:0;;;22348:20;22379:34;;;;;;22424:20;:29;;;;;:36;;;;;;;;22471:24;:33;;;;;:40;;;;;;;;;;22212:307::o;21950:254::-;22018:4;22035:19;22075:15;;;;;;;;;-1:-1:-1;;;;;22075:15:0;-1:-1:-1;;;;;22075:23:0;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;22057:66:0;;22132:4;22139:11;22057:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;22169:27:0;;;;;:14;:27;;;;;;;;;21950:254;-1:-1:-1;;;21950:254:0:o;16220:447::-;6413:6;;-1:-1:-1;;;;;6413:6:0;2610:10;6413:22;6405:67;;;;-1:-1:-1;;;6405:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16417:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;16416:21;16408:61;;;::::0;-1:-1:-1;;;16408:61:0;;8744:2:1;16408:61:0::1;::::0;::::1;8726:21:1::0;8783:2;8763:18;;;8756:30;8822:29;8802:18;;;8795:57;8869:18;;16408:61:0::1;8716:177:1::0;16408:61:0::1;-1:-1:-1::0;;;;;16483:16:0;::::1;16502:1;16483:16:::0;;;:7:::1;:16;::::0;;;;;:20;16480:108:::1;;-1:-1:-1::0;;;;;16559:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;16539:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;16520:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;16480:108:::1;-1:-1:-1::0;;;;;16598:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;16598:27:0::1;16621:4;16598:27:::0;;::::1;::::0;;;16636:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;16636:23:0::1;::::0;;::::1;::::0;;16220:447::o;19519:1153::-;6346:11;;-1:-1:-1;;;;;6346:11:0;2610:10;19587:28;19579:67;;;;-1:-1:-1;;;19579:67:0;;;;;;;:::i;:::-;19661:6;19657:1008;;;19684:19;19724:15;;;;;;;;;-1:-1:-1;;;;;19724:15:0;-1:-1:-1;;;;;19724:23:0;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;19706:70:0;;19785:4;19792:15;;;;;;;;;-1:-1:-1;;;;;19792:15:0;-1:-1:-1;;;;;19792:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19706:109;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19684:131;-1:-1:-1;;;;;;19836:25:0;;19832:196;;19914:15;;;;;;;;;-1:-1:-1;;;;;19914:15:0;-1:-1:-1;;;;;19914:23:0;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;19896:77:0;;19982:4;19989:15;;;;;;;;;-1:-1:-1;;;;;19989:15:0;-1:-1:-1;;;;;19989:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19896:116;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19882:130;;19832:196;20044:13;:27;;-1:-1:-1;;;;;20044:27:0;;;-1:-1:-1;;;;;;20044:27:0;;;;;;;:13;20086:27;;;:14;:27;;;;;;;;:35;;-1:-1:-1;;20086:35:0;;;;;;20136:19;:28;;;;;-1:-1:-1;;;20136:28:0;-1:-1:-1;;;;20136:28:0;;;;;;20204:13;;;;;20179:39;;:24;:39;;;;;;:46;;;;;20044:27;20179:46;;;23108:158;:::o;19657:1008::-;20260:19;20300:15;;;;;;;;;-1:-1:-1;;;;;20300:15:0;-1:-1:-1;;;;;20300:23:0;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20368:4;;20282:91;;-1:-1:-1;;;20282:91:0;;-1:-1:-1;;;;;20282:70:0;;;;;;:91;;20361:4;;20368;;;;20282:91;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20260:113;-1:-1:-1;;;;;;20394:25:0;;20390:178;;20472:15;;;;;;;;;-1:-1:-1;;;;;20472:15:0;-1:-1:-1;;;;;20472:23:0;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20547:4;;20454:98;;-1:-1:-1;;;20454:98:0;;-1:-1:-1;;;;;20454:77:0;;;;;;:98;;20540:4;;20547;;;;20454:98;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20440:112;;20390:178;20584:13;:27;;-1:-1:-1;;;;;;20584:27:0;-1:-1:-1;;;;;20584:27:0;;;;;;;;;;-1:-1:-1;20626:19:0;:27;;-1:-1:-1;;;;20626:27:0;;;19519:1153::o;23968:180::-;6413:6;;-1:-1:-1;;;;;6413:6:0;2610:10;6413:22;6405:67;;;;-1:-1:-1;;;6405:67:0;;;;;;;:::i;:::-;24062:1:::1;24048:11;:15:::0;24091:3:::1;24077:17:::0;::::1;24074:67;;24108:11;:24:::0;23968:180::o;15008:108::-;15086:22;15104:4;15086:15;:22;:::i;:::-;2610:10;15061:22;;;;:8;:22;;;;;:47;-1:-1:-1;15008:108:0:o;13084:198::-;-1:-1:-1;;;;;13174:20:0;;13150:7;13174:20;;;:11;:20;;;;;;;;13170:49;;;-1:-1:-1;;;;;;13203:16:0;;;;;:7;:16;;;;;;;13084:198::o;13170:49::-;-1:-1:-1;;;;;13257:16:0;;;;;;:7;:16;;;;;;13237:37;;:19;:37::i;6500:148::-;6413:6;;-1:-1:-1;;;;;6413:6:0;2610:10;6413:22;6405:67;;;;-1:-1:-1;;;6405:67:0;;;;;;;:::i;:::-;6607:1:::1;6591:6:::0;;6570:40:::1;::::0;-1:-1:-1;;;;;6591:6:0;;::::1;::::0;-1:-1:-1;;;;;;;;;;;6570:40:0;6607:1;;6570:40:::1;6638:1;6621:19:::0;;-1:-1:-1;;;;;;6621:19:0::1;::::0;;6500:148::o;21413:529::-;6346:11;;-1:-1:-1;;;;;6346:11:0;2610:10;21503:28;21495:67;;;;-1:-1:-1;;;21495:67:0;;;;;;;:::i;:::-;21573:19;21613:15;;;;;;;;;-1:-1:-1;;;;;21613:15:0;-1:-1:-1;;;;;21613:23:0;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;21595:66:0;;21670:4;21677:11;21595:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21573:116;-1:-1:-1;;;;;;21710:25:0;;21706:181;;21788:15;;;;;;;;;-1:-1:-1;;;;;21788:15:0;-1:-1:-1;;;;;21788:23:0;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;21770:73:0;;21852:4;21859:11;21770:101;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21756:115;;21706:181;-1:-1:-1;;;;;21897:27:0;;;;;:14;:27;;;;;:37;;-1:-1:-1;;21897:37:0;;;;;;;;;;-1:-1:-1;21413:529:0:o;24670:193::-;6413:6;;-1:-1:-1;;;;;6413:6:0;2610:10;6413:22;6405:67;;;;-1:-1:-1;;;6405:67:0;;;;;;;:::i;:::-;24741:49:::1;24774:5;24741:14;24753:1;24741:7;;:11;;:14;;;;:::i;:::-;:18:::0;::::1;:49::i;:::-;24726:12;:64:::0;24801:14:::1;:12;:14::i;:::-;24826:21;:29:::0;;-1:-1:-1;;;;24826:29:0::1;::::0;;24670:193::o;23816:144::-;6413:6;;-1:-1:-1;;;;;6413:6:0;2610:10;6413:22;6405:67;;;;-1:-1:-1;;;6405:67:0;;;;;;;:::i;:::-;23890:1:::1;23879:8;:12:::0;23912:4:::1;23905:11:::0;::::1;23902:51;;23930:8;:14:::0;23816:144::o;24160:194::-;6413:6;;-1:-1:-1;;;;;6413:6:0;2610:10;6413:22;6405:67;;;;-1:-1:-1;;;6405:67:0;;;;;;;:::i;:::-;24260:1:::1;24244:13;:17:::0;24291:3:::1;24275:19:::0;::::1;24272:73;;24308:13;:28:::0;24160:194::o;18757:121::-;6413:6;;-1:-1:-1;;;;;6413:6:0;2610:10;6413:22;6405:67;;;;-1:-1:-1;;;6405:67:0;;;;;;;:::i;:::-;18841:17:::1;:29:::0;;-1:-1:-1;;;;;;18841:29:0::1;-1:-1:-1::0;;;;;18841:29:0;;;::::1;::::0;;;::::1;::::0;;18757:121::o;12795:87::-;12834:13;12867:7;12860:14;;;;;:::i;36266:348::-;36370:15;;-1:-1:-1;;;;;36370:15:0;2610:10;-1:-1:-1;;;;;36354:31:0;;:63;;;-1:-1:-1;6346:11:0;;-1:-1:-1;;;;;6346:11:0;2610:10;36389:28;36354:63;36346:92;;;;-1:-1:-1;;;36346:92:0;;11753:2:1;36346:92:0;;;11735:21:1;11792:2;11772:18;;;11765:30;-1:-1:-1;;;11811:18:1;;;11804:46;11867:18;;36346:92:0;11725:166:1;36346:92:0;36453:6;36449:158;;;-1:-1:-1;;;;;36493:14:0;;;;;;:6;:14;;;;;;:26;;36512:6;36493:18;:26::i;:::-;-1:-1:-1;;;;;36476:14:0;;;;;;:6;:14;;;;;:43;36266:348;;;:::o;36449:158::-;-1:-1:-1;;;;;36569:14:0;;;;;;:6;:14;;;;;;:26;;36588:6;36569:18;:26::i;36449:158::-;36266:348;;;:::o;25463:221::-;6346:11;;-1:-1:-1;;;;;6346:11:0;2610:10;25555:28;25547:67;;;;-1:-1:-1;;;25547:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;25625:29:0;;;2610:10;25625:51;;-1:-1:-1;;;;;;25625:51:0;;;;;;;-1:-1:-1;;;;;5440:32:1;;;25625:51:0;;;5422::1;5489:18;;;5482:34;;;5395:18;;25625:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;18229:151::-;6413:6;;-1:-1:-1;;;;;6413:6:0;2610:10;6413:22;6405:67;;;;-1:-1:-1;;;6405:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18329:33:0;;;::::1;;::::0;;;:24:::1;:33;::::0;;;;:43;;-1:-1:-1;;18329:43:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18229:151::o;14504:269::-;14597:4;14614:129;2610:10;14637:7;14646:96;14685:15;14646:96;;;;;;;;;;;;;;;;;2610:10;14646:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;14646:34:0;;;;;;;;;;;;:38;:96::i;7243:305::-;7295:14;;-1:-1:-1;;;;;7295:14:0;7313:10;7295:28;7287:76;;;;-1:-1:-1;;;7287:76:0;;15498:2:1;7287:76:0;;;15480:21:1;15537:2;15517:18;;;15510:30;15576:34;15556:18;;;15549:62;-1:-1:-1;;;15627:18:1;;;15620:33;15670:19;;7287:76:0;15470:225:1;7287:76:0;7400:9;;7382:15;:27;7374:72;;;;-1:-1:-1;;;7374:72:0;;13609:2:1;7374:72:0;;;13591:21:1;13648:2;13628:18;;;13621:30;13687:33;13667:18;;;13660:61;13738:18;;7374:72:0;13581:181:1;7374:72:0;7491:14;;;7483:6;;7462:44;;-1:-1:-1;;;;;7491:14:0;;;;7483:6;;;;-1:-1:-1;;;;;;;;;;;7462:44:0;;7526:14;;;7517:23;;-1:-1:-1;;;;;;7517:23:0;-1:-1:-1;;;;;7526:14:0;;;7517:23;;;;;;7243:305::o;13294:254::-;2610:10;13372:4;13415:22;;;:8;:22;;;;;;13397:15;:40;13389:76;;;;-1:-1:-1;;;13389:76:0;;13969:2:1;13389:76:0;;;13951:21:1;14008:2;13988:18;;;13981:30;-1:-1:-1;;;14027:18:1;;;14020:52;14089:18;;13389:76:0;13941:172:1;13389:76:0;13476:42;2610:10;13500:9;13511:6;13476:9;:42::i;20680:725::-;6346:11;;-1:-1:-1;;;;;6346:11:0;2610:10;20751:28;20743:67;;;;-1:-1:-1;;;20743:67:0;;;;;;;:::i;:::-;20927:19;20967:15;;;;;;;;;-1:-1:-1;;;;;20967:15:0;-1:-1:-1;;;;;20967:23:0;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;20949:66:0;;21024:4;21031:7;20949:90;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20927:112;-1:-1:-1;;;;;;21058:25:0;;21054:191;;21136:15;;;;;;;;;-1:-1:-1;;;;;21136:15:0;-1:-1:-1;;;;;21136:23:0;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;21118:73:0;;21200:4;21207:7;21118:97;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21104:111;;21054:191;-1:-1:-1;;;;;21259:27:0;21289:5;21259:27;;;:14;:27;;;;;;;;:35;;-1:-1:-1;;21259:35:0;;;;;;21309:13;:27;;-1:-1:-1;;;;;;21309:27:0;;;;;;;21351:24;:39;;;;;:46;;;;;21259:35;21351:46;;;-1:-1:-1;20680:725:0:o;24366:103::-;6413:6;;-1:-1:-1;;;;;6413:6:0;2610:10;6413:22;6405:67;;;;-1:-1:-1;;;6405:67:0;;;;;;;:::i;:::-;24446:15:::1;:5:::0;24454:7:::1;24446:15;:::i;:::-;24431:12;:30:::0;-1:-1:-1;24366:103:0:o;19337:174::-;6346:11;;-1:-1:-1;;;;;6346:11:0;2610:10;19409:28;19401:67;;;;-1:-1:-1;;;19401:67:0;;;;;;;:::i;:::-;19479:15;:24;;-1:-1:-1;;;;;19479:24:0;;;;;-1:-1:-1;;;;;;19479:24:0;;;;;;;;;19337:174::o;24477:171::-;6413:6;;-1:-1:-1;;;;;6413:6:0;2610:10;6413:22;6405:67;;;;-1:-1:-1;;;6405:67:0;;;;;;;:::i;:::-;24554:21:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;24554:32:0::1;-1:-1:-1::0;;;;24554:32:0;;::::1;;::::0;;24602:38:::1;::::0;::::1;::::0;::::1;::::0;24578:8;5692:14:1;5685:22;5667:41;;5655:2;5640:18;;5622:92;24602:38:0::1;;;;;;;;24477:171:::0;:::o;25152:264::-;6346:11;;-1:-1:-1;;;;;6346:11:0;2610:10;25230:28;25222:67;;;;-1:-1:-1;;;25222:67:0;;;;;;;:::i;:::-;25316:48;;25301:9;;2610:10;;25350:9;;25301;25316:48;25301:9;25316:48;25350:9;2610:10;25316:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25300:64;;;25383:4;25375:33;;;;-1:-1:-1;;;25375:33:0;;13264:2:1;25375:33:0;;;13246:21:1;13303:2;13283:18;;;13276:30;-1:-1:-1;;;13322:18:1;;;13315:46;13378:18;;25375:33:0;13236:166:1;18648:97:0;6413:6;;-1:-1:-1;;;;;6413:6:0;2610:10;6413:22;6405:67;;;;-1:-1:-1;;;6405:67:0;;;;;;;:::i;:::-;18720:11:::1;:17:::0;;-1:-1:-1;;;;;;18720:17:0::1;-1:-1:-1::0;;;;;18720:17:0;;;::::1;::::0;;;::::1;::::0;;18648:97::o;7005:226::-;6413:6;;-1:-1:-1;;;;;6413:6:0;2610:10;6413:22;6405:67;;;;-1:-1:-1;;;6405:67:0;;;;;;;:::i;:::-;7086:6:::1;::::0;;;7069:23;;-1:-1:-1;;;;;;7069:23:0;;::::1;-1:-1:-1::0;;;;;7086:6:0;::::1;7069:23;::::0;;;7103:19:::1;::::0;;7145:22:::1;7163:4:::0;7145:15:::1;:22;:::i;:::-;7133:9;:34:::0;7220:1:::1;7204:6:::0;;7183:40:::1;::::0;-1:-1:-1;;;;;7204:6:0;;::::1;::::0;-1:-1:-1;;;;;;;;;;;7183:40:0;7220:1;;7183:40:::1;7005:226:::0;:::o;18386:126::-;6413:6;;-1:-1:-1;;;;;6413:6:0;2610:10;6413:22;6405:67;;;;-1:-1:-1;;;6405:67:0;;;;;;;:::i;:::-;18482:22:::1;:12:::0;18497:7:::1;18482:22;:::i;:::-;18465:14;:39:::0;-1:-1:-1;18386:126:0:o;22763:110::-;6413:6;;-1:-1:-1;;;;;6413:6:0;2610:10;6413:22;6405:67;;;;-1:-1:-1;;;6405:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22830:27:0::1;22860:5;22830:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;22830:35:0::1;::::0;;22763:110::o;24877:170::-;6413:6;;-1:-1:-1;;;;;6413:6:0;2610:10;6413:22;6405:67;;;;-1:-1:-1;;;6405:67:0;;;;;;;:::i;:::-;24959:15:::1;:5:::0;24967:7:::1;24959:15;:::i;:::-;24944:12;:30:::0;24985:15:::1;29474::::0;;29464:7;:25;29516:21;;29500:13;:37;29558:15;;29548:7;:25;29600:21;;29584:13;:37;29646:19;;29632:11;:33;29690:19;;29676:11;:33;29730:15;;29720:7;:25;29767:16;;29756:8;:27;29420:371;24985:15:::1;-1:-1:-1::0;25011:21:0::1;:28:::0;;-1:-1:-1;;;;25011:28:0::1;-1:-1:-1::0;;;25011:28:0::1;::::0;;24877:170::o;6656:244::-;6413:6;;-1:-1:-1;;;;;6413:6:0;2610:10;6413:22;6405:67;;;;-1:-1:-1;;;6405:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6745:22:0;::::1;6737:73;;;::::0;-1:-1:-1;;;6737:73:0;;7578:2:1;6737:73:0::1;::::0;::::1;7560:21:1::0;7617:2;7597:18;;;7590:30;7656:34;7636:18;;;7629:62;-1:-1:-1;;;7707:18:1;;;7700:36;7753:19;;6737:73:0::1;7550:228:1::0;6737:73:0::1;6847:6;::::0;;6826:38:::1;::::0;-1:-1:-1;;;;;6826:38:0;;::::1;::::0;6847:6;::::1;::::0;-1:-1:-1;;;;;;;;;;;6826:38:0;::::1;6875:6;:17:::0;;-1:-1:-1;;;;;;6875:17:0::1;-1:-1:-1::0;;;;;6875:17:0;;;::::1;::::0;;;::::1;::::0;;6656:244::o;18886:113::-;6413:6;;-1:-1:-1;;;;;6413:6:0;2610:10;6413:22;6405:67;;;;-1:-1:-1;;;6405:67:0;;;;;;;:::i;:::-;18966:15:::1;:25:::0;;-1:-1:-1;;;;;;18966:25:0::1;-1:-1:-1::0;;;;;18966:25:0;;;::::1;::::0;;;::::1;::::0;;18886:113::o;18520:120::-;6413:6;;-1:-1:-1;;;;;6413:6:0;2610:10;6413:22;6405:67;;;;-1:-1:-1;;;6405:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18605:18:0;;;::::1;;::::0;;;:9:::1;:18;::::0;;;;:27;;-1:-1:-1;;18605:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18520:120::o;1502:250::-;1560:7;1584:6;1580:47;;-1:-1:-1;1614:1:0;1607:8;;1580:47;1639:9;1651:5;1655:1;1651;:5;:::i;:::-;1639:17;-1:-1:-1;1684:1:0;1675:5;1679:1;1639:17;1675:5;:::i;:::-;:10;1667:56;;;;-1:-1:-1;;;1667:56:0;;10580:2:1;1667:56:0;;;10562:21:1;10619:2;10599:18;;;10592:30;10658:34;10638:18;;;10631:62;-1:-1:-1;;;10709:18:1;;;10702:31;10750:19;;1667:56:0;10552:223:1;1760:132:0;1818:7;1845:39;1849:1;1852;1845:39;;;;;;;;;;;;;;;;;:3;:39::i;29934:337::-;-1:-1:-1;;;;;30027:19:0;;30019:68;;;;-1:-1:-1;;;30019:68:0;;12859:2:1;30019:68:0;;;12841:21:1;12898:2;12878:18;;;12871:30;12937:34;12917:18;;;12910:62;-1:-1:-1;;;12988:18:1;;;12981:34;13032:19;;30019:68:0;12831:226:1;30019:68:0;-1:-1:-1;;;;;30106:21:0;;30098:68;;;;-1:-1:-1;;;30098:68:0;;7985:2:1;30098:68:0;;;7967:21:1;8024:2;8004:18;;;7997:30;8063:34;8043:18;;;8036:62;-1:-1:-1;;;8114:18:1;;;8107:32;8156:19;;30098:68:0;7957:224:1;30098:68:0;-1:-1:-1;;;;;30179:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;30231:32;;15846:25:1;;;30231:32:0;;15819:18:1;30231:32:0;;;;;;;29934:337;;;:::o;30279:2907::-;-1:-1:-1;;;;;30401:18:0;;30393:68;;;;-1:-1:-1;;;30393:68:0;;12098:2:1;30393:68:0;;;12080:21:1;12137:2;12117:18;;;12110:30;12176:34;12156:18;;;12149:62;-1:-1:-1;;;12227:18:1;;;12220:35;12272:19;;30393:68:0;12070:227:1;30393:68:0;-1:-1:-1;;;;;30480:16:0;;30472:64;;;;-1:-1:-1;;;30472:64:0;;6763:2:1;30472:64:0;;;6745:21:1;6802:2;6782:18;;;6775:30;6841:34;6821:18;;;6814:62;-1:-1:-1;;;6892:18:1;;;6885:33;6935:19;;30472:64:0;6735:225:1;30472:64:0;-1:-1:-1;;;;;30555:18:0;;;;;;:14;:18;;;;;;;;:27;30547:63;;;;-1:-1:-1;;;30547:63:0;;9100:2:1;30547:63:0;;;9082:21:1;9139:2;9119:18;;;9112:30;9178:25;9158:18;;;9151:53;9221:18;;30547:63:0;9072:173:1;30547:63:0;30638:1;30629:6;:10;30621:64;;;;-1:-1:-1;;;30621:64:0;;11343:2:1;30621:64:0;;;11325:21:1;11382:2;11362:18;;;11355:30;11421:34;11401:18;;;11394:62;-1:-1:-1;;;11472:18:1;;;11465:39;11521:19;;30621:64:0;11315:231:1;30621:64:0;-1:-1:-1;;;;;30700:28:0;;;;;;:24;:28;;;;;;;;30696:148;;30782:14;;30753:25;30771:6;30753:13;30763:2;30753:9;:13::i;:::-;:17;;:25::i;:::-;:43;;30745:87;;;;-1:-1:-1;;;30745:87:0;;14725:2:1;30745:87:0;;;14707:21:1;14764:2;14744:18;;;14737:30;14803:33;14783:18;;;14776:61;14854:18;;30745:87:0;14697:181:1;30745:87:0;-1:-1:-1;;;;;30858:26:0;;;;;;:20;:26;;;;;;;;:35;;;:72;;-1:-1:-1;;;;;;30897:24:0;;;;;;:20;:24;;;;;;;;:33;30858:72;30854:180;;;30965:12;;30955:6;:22;;30947:75;;;;-1:-1:-1;;;30947:75:0;;10171:2:1;30947:75:0;;;10153:21:1;10210:2;10190:18;;;10183:30;10249:34;10229:18;;;10222:62;-1:-1:-1;;;10300:18:1;;;10293:38;10348:19;;30947:75:0;10143:230:1;30947:75:0;-1:-1:-1;;;;;31094:12:0;;31109:1;31094:12;;;:6;:12;;;;;;:16;31090:135;;-1:-1:-1;;;;;31165:12:0;;;;;;:6;:12;;;;;;31145:33;;:15;31172:4;31145:9;:15::i;:::-;:19;;:33::i;:::-;31135:6;:43;;31127:86;;;;-1:-1:-1;;;31127:86:0;;9452:2:1;31127:86:0;;;9434:21:1;9491:2;9471:18;;;9464:30;9530:32;9510:18;;;9503:60;9580:18;;31127:86:0;9424:180:1;31127:86:0;-1:-1:-1;;;;;31245:15:0;;;;;;:9;:15;;;;;;;;;:32;;-1:-1:-1;;;;;;31264:13:0;;;;;;:9;:13;;;;;;;;31245:32;31243:35;31235:84;;;;-1:-1:-1;;;31235:84:0;;14320:2:1;31235:84:0;;;14302:21:1;14359:2;14339:18;;;14332:30;14398:34;14378:18;;;14371:62;-1:-1:-1;;;14449:18:1;;;14442:34;14493:19;;31235:84:0;14292:226:1;31235:84:0;31614:28;31645:24;31663:4;31645:9;:24::i;:::-;31614:55;;31717:12;;31693:20;:36;31690:112;;-1:-1:-1;31778:12:0;;31690:112;31873:29;;31849:53;;;;;;;31931;;-1:-1:-1;31968:16:0;;-1:-1:-1;;;31968:16:0;;;;31967:17;31931:53;:91;;;;-1:-1:-1;32009:13:0;;-1:-1:-1;;;;;32001:21:0;;;32009:13;;32001:21;;31931:91;:129;;;;-1:-1:-1;32039:21:0;;-1:-1:-1;;;32039:21:0;;;;31931:129;31913:690;;;32087:16;:23;;-1:-1:-1;;;;32087:23:0;;-1:-1:-1;;;32087:23:0;;;;32148:29;;;-1:-1:-1;32283:70:0;;32306:4;;-1:-1:-1;;;;;32313:10:0;32148:29;32087:23;32283:14;:70::i;:::-;32369:22;32394:31;32429:13;:11;:13::i;:::-;32461:10;;32457:95;;-1:-1:-1;;;32457:95:0;;32368:74;;-1:-1:-1;32368:74:0;;-1:-1:-1;;;;;;32461:10:0;;;32457:31;;:95;;32489:20;;32368:74;;;;-1:-1:-1;;;32532:19:0;;;;;32457:95;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;32567:16:0;:24;;-1:-1:-1;;;;32567:24:0;;;-1:-1:-1;;;;31913:690:0;-1:-1:-1;;;;;32811:24:0;;32684:12;32811:24;;;:18;:24;;;;;;32699:4;;32811:24;;;:50;;-1:-1:-1;;;;;;32839:22:0;;;;;;:18;:22;;;;;;;;32811:50;32808:211;;;-1:-1:-1;32887:5:0;32808:211;;;32935:13;;-1:-1:-1;;;;;32929:19:0;;;32935:13;;32929:19;32925:83;;;32969:16;:23;;-1:-1:-1;;32969:23:0;32988:4;32969:23;;;32925:83;33105:38;33120:4;33125:2;33128:6;33135:7;33105:14;:38::i;:::-;-1:-1:-1;;33154:16:0;:24;;-1:-1:-1;;33154:24:0;;;-1:-1:-1;;;;30279:2907:0:o;1302:192::-;1388:7;1424:12;1416:6;;;;1408:29;;;;-1:-1:-1;;;1408:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1448:9:0;1460:5;1464:1;1460;:5;:::i;:::-;1448:17;1302:192;-1:-1:-1;;;;;1302:192:0:o;27058:163::-;27099:7;27120:15;27137;27156:19;:17;:19::i;:::-;27119:56;;-1:-1:-1;27119:56:0;-1:-1:-1;27193:20:0;27119:56;;27193:11;:20::i;:::-;27186:27;;;;27058:163;:::o;969:181::-;1027:7;;1059:5;1063:1;1059;:5;:::i;:::-;1047:17;;1088:1;1083;:6;;1075:46;;;;-1:-1:-1;;;1075:46:0;;8388:2:1;1075:46:0;;;8370:21:1;8427:2;8407:18;;;8400:30;8466:29;8446:18;;;8439:57;8513:18;;1075:46:0;8360:177:1;25851:419:0;25910:7;25919;25928;25937;25946;25955;25976:23;26001:12;26015:18;26037:20;26049:7;26037:11;:20::i;:::-;25975:82;;;;;;26069:15;26086:23;26111:12;26127:50;26139:7;26148:4;26154:10;26166;:8;:10::i;:::-;26127:11;:50::i;:::-;26068:109;;;;-1:-1:-1;26068:109:0;;-1:-1:-1;26228:15:0;;-1:-1:-1;26245:4:0;;-1:-1:-1;26251:10:0;;-1:-1:-1;25851:419:0;;-1:-1:-1;;;;;25851:419:0:o;1158:136::-;1216:7;1243:43;1247:1;1250;1243:43;;;;;;;;;;;;;;;;;:3;:43::i;28654:754::-;28700:7;;:12;:34;;;;-1:-1:-1;28716:13:0;;:18;28700:34;:56;;;;-1:-1:-1;28738:13:0;;:18;28700:56;:72;;;;-1:-1:-1;28760:7:0;;:12;28700:72;:92;;;;-1:-1:-1;28776:11:0;;:16;28700:92;:112;;;;-1:-1:-1;28796:11:0;;:16;28700:112;:128;;;;-1:-1:-1;28816:7:0;;:12;28700:128;:145;;;;-1:-1:-1;28832:8:0;;:13;28700:145;28697:157;;;28654:754::o;28697:157::-;28892:7;;;28874:15;:25;28934:13;;;28910:21;:37;28976:7;;;28958:15;:25;29018:13;;;28994:21;:37;29064:11;;;29042:19;:33;29108:11;;;29086:19;:33;29148:7;;;29130:15;:25;29185:8;;;29166:16;:27;-1:-1:-1;29214:11:0;;;;29236:17;;;;29264:11;;;;29286:17;;;;29314:15;;;29340;;;29366:11;;;29388:12;28654:754::o;1900:278::-;1986:7;2021:12;2014:5;2006:28;;;;-1:-1:-1;;;2006:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2045:9:0;2057:5;2061:1;2057;:5;:::i;33746:834::-;33857:7;33853:40;;33879:14;:12;:14::i;:::-;-1:-1:-1;;;;;33918:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;33942:22:0;;;;;;:11;:22;;;;;;;;33941:23;33918:46;33914:597;;;33981:48;34003:6;34011:9;34022:6;33981:21;:48::i;:::-;33914:597;;;-1:-1:-1;;;;;34052:19:0;;;;;;:11;:19;;;;;;;;34051:20;:46;;;;-1:-1:-1;;;;;;34075:22:0;;;;;;:11;:22;;;;;;;;34051:46;34047:464;;;34114:46;34134:6;34142:9;34153:6;34114:19;:46::i;34047:464::-;-1:-1:-1;;;;;34183:19:0;;;;;;:11;:19;;;;;;;;34182:20;:47;;;;-1:-1:-1;;;;;;34207:22:0;;;;;;:11;:22;;;;;;;;34206:23;34182:47;34178:333;;;34246:44;34264:6;34272:9;34283:6;34246:17;:44::i;34178:333::-;-1:-1:-1;;;;;34312:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;34335:22:0;;;;;;:11;:22;;;;;;;;34312:45;34308:203;;;34374:48;34396:6;34404:9;34415:6;34374:21;:48::i;34308:203::-;34455:44;34473:6;34481:9;34492:6;34455:17;:44::i;:::-;34535:7;34531:41;;34557:15;29474;;29464:7;:25;29516:21;;29500:13;:37;29558:15;;29548:7;:25;29600:21;;29584:13;:37;29646:19;;29632:11;:33;29690:19;;29676:11;:33;29730:15;;29720:7;:25;29767:16;;29756:8;:27;29420:371;34557:15;33746:834;;;;:::o;33194:471::-;33239:23;;:::i;:::-;33264:31;;:::i;:::-;33318:13;;33308:23;;33352:7;;33308;33342;;;:17;;;;33380:11;;33370:7;;;;:21;;;;33412:11;;33402:7;;;;:21;;;;33444:7;;33434;;;:17;33472:13;;33462:7;;;:23;33516:17;;-1:-1:-1;;;;;33516:17:0;;;33498:35;;33562:11;;;;33544:15;;;:29;;;;33602:15;;;;33584;;;:33;;;;33646:11;;;;;33628:15;;;:29;33308:4;;33194:471::o;27229:561::-;27326:7;;27362;;27279;;;;;27386:289;27410:9;:16;27406:20;;27386:289;;;27476:7;27452;:21;27460:9;27470:1;27460:12;;;;;;-1:-1:-1;;;27460:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;27460:12:0;27452:21;;;;;;;;;;;;;:31;;:66;;;27511:7;27487;:21;27495:9;27505:1;27495:12;;;;;;-1:-1:-1;;;27495:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;27495:12:0;27487:21;;;;;;;;;;;;;:31;27452:66;27448:97;;;27528:7;;27537;;27520:25;;;;;;;27229:561;;:::o;27448:97::-;27570:34;27582:7;:21;27590:9;27600:1;27590:12;;;;;;-1:-1:-1;;;27590:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;27590:12:0;27582:21;;;;;;;;;;;;;27570:7;;:11;:34::i;:::-;27560:44;;27629:34;27641:7;:21;27649:9;27659:1;27649:12;;;;;;-1:-1:-1;;;27649:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;27649:12:0;27641:21;;;;;;;;;;;;;27629:7;;:11;:34::i;:::-;27619:44;-1:-1:-1;27428:3:0;;;;:::i;:::-;;;;27386:289;;;-1:-1:-1;27711:7:0;;27699;;:20;;:11;:20::i;:::-;27689:7;:30;27685:61;;;27729:7;;27738;;27721:25;;;;;;27229:561;;:::o;27685:61::-;27765:7;;27774;;-1:-1:-1;27229:561:0;-1:-1:-1;27229:561:0:o;26278:335::-;26338:7;26347;26356;26376:12;26391:24;26407:7;26391:15;:24::i;:::-;26376:39;;26426:18;26447:35;26474:7;26447:26;:35::i;:::-;26426:56;-1:-1:-1;26493:23:0;26519:33;26426:56;26519:17;:7;26531:4;26519:11;:17::i;:33::-;26493:59;26588:4;;-1:-1:-1;26594:10:0;;-1:-1:-1;26278:335:0;;-1:-1:-1;;;26278:335:0:o;26621:429::-;26736:7;;;;26792:24;:7;26804:11;26792;:24::i;:::-;26774:42;-1:-1:-1;26827:12:0;26842:21;:4;26851:11;26842:8;:21::i;:::-;26827:36;-1:-1:-1;26874:18:0;26895:27;:10;26910:11;26895:14;:27::i;:::-;26874:48;-1:-1:-1;26933:23:0;26959:33;26874:48;26959:17;:7;26971:4;26959:11;:17::i;:33::-;27011:7;;;;-1:-1:-1;27037:4:0;;-1:-1:-1;26621:429:0;;-1:-1:-1;;;;;;;26621:429:0:o;35692:566::-;35795:15;35812:23;35837:12;35851:23;35876:12;35890:18;35912:19;35923:7;35912:10;:19::i;:::-;-1:-1:-1;;;;;35960:15:0;;;;;;:7;:15;;;;;;35794:137;;-1:-1:-1;35794:137:0;;-1:-1:-1;35794:137:0;;-1:-1:-1;35794:137:0;-1:-1:-1;35794:137:0;-1:-1:-1;35794:137:0;-1:-1:-1;35960:28:0;;35980:7;35960:19;:28::i;:::-;-1:-1:-1;;;;;35942:15:0;;;;;;:7;:15;;;;;;;;:46;;;;36017:7;:15;;;;:28;;36037:7;36017:19;:28::i;:::-;-1:-1:-1;;;;;35999:15:0;;;;;;;:7;:15;;;;;;:46;;;;36077:18;;;;;;;:39;;36100:15;36077:22;:39::i;:::-;-1:-1:-1;;;;;36056:18:0;;;;;;:7;:18;;;;;:60;36130:26;36145:10;36130:14;:26::i;:::-;36167:23;36179:4;36185;36167:11;:23::i;:::-;36223:9;-1:-1:-1;;;;;36206:44:0;36215:6;-1:-1:-1;;;;;36206:44:0;;36234:15;36206:44;;;;15846:25:1;;15834:2;15819:18;;15801:76;36206:44:0;;;;;;;;35692:566;;;;;;;;;:::o;35098:586::-;35199:15;35216:23;35241:12;35255:23;35280:12;35294:18;35316:19;35327:7;35316:10;:19::i;:::-;-1:-1:-1;;;;;35364:15:0;;;;;;:7;:15;;;;;;35198:137;;-1:-1:-1;35198:137:0;;-1:-1:-1;35198:137:0;;-1:-1:-1;35198:137:0;-1:-1:-1;35198:137:0;-1:-1:-1;35198:137:0;-1:-1:-1;35364:28:0;;35198:137;35364:19;:28::i;:::-;-1:-1:-1;;;;;35346:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;35424:18;;;;;:7;:18;;;;;:39;;35447:15;35424:22;:39::i;:::-;-1:-1:-1;;;;;35403:18:0;;;;;;:7;:18;;;;;;;;:60;;;;35495:7;:18;;;;:39;;35518:15;35495:22;:39::i;34588:502::-;34687:15;34704:23;34729:12;34743:23;34768:12;34782:18;34804:19;34815:7;34804:10;:19::i;:::-;-1:-1:-1;;;;;34852:15:0;;;;;;:7;:15;;;;;;34686:137;;-1:-1:-1;34686:137:0;;-1:-1:-1;34686:137:0;;-1:-1:-1;34686:137:0;-1:-1:-1;34686:137:0;-1:-1:-1;34686:137:0;-1:-1:-1;34852:28:0;;34686:137;34852:19;:28::i;17166:642::-;17269:15;17286:23;17311:12;17325:23;17350:12;17364:18;17386:19;17397:7;17386:10;:19::i;:::-;-1:-1:-1;;;;;17434:15:0;;;;;;:7;:15;;;;;;17268:137;;-1:-1:-1;17268:137:0;;-1:-1:-1;17268:137:0;;-1:-1:-1;17268:137:0;-1:-1:-1;17268:137:0;-1:-1:-1;17268:137:0;-1:-1:-1;17434:28:0;;17454:7;17434:19;:28::i;:::-;-1:-1:-1;;;;;17416:15:0;;;;;;:7;:15;;;;;;;;:46;;;;17491:7;:15;;;;:28;;17511:7;17491:19;:28::i;28169:154::-;28233:7;28260:55;28299:5;28260:20;28272:7;;28260;:11;;:20;;;;:::i;28331:305::-;28444:16;;28406:7;;;;28444:16;;:31;;28474:1;28444:31;;;28463:8;;28444:31;28426:49;;28493:135;28612:5;28493:100;28585:7;28575;;28561:11;;28547;;28531:13;;28521:7;;28505:13;;:23;;;;:::i;:::-;:39;;;;:::i;:::-;:53;;;;:::i;:::-;:67;;;;:::i;:::-;:77;;;;:::i;:::-;:87;;;;:::i;:::-;28493:7;;:11;:100::i;27802:355::-;27865:19;27888:10;:8;:10::i;:::-;27865:33;-1:-1:-1;27909:18:0;27930:27;:10;27865:33;27930:14;:27::i;:::-;28009:4;27993:22;;;;:7;:22;;;;;;27909:48;;-1:-1:-1;27993:38:0;;27909:48;27993:26;:38::i;:::-;27984:4;27968:22;;;;:7;:22;;;;;;;;:63;;;;28045:11;:26;;;;;;28042:107;;;28127:4;28111:22;;;;:7;:22;;;;;;:38;;28138:10;28111:26;:38::i;:::-;28102:4;28086:22;;;;:7;:22;;;;;:63;27802:355;;;:::o;25696:147::-;25774:7;;:17;;25786:4;25774:11;:17::i;:::-;25764:7;:27;25815:10;;:20;;25830:4;25815:14;:20::i;:::-;25802:10;:33;-1:-1:-1;;25696:147:0:o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:257:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:2;;;147:6;139;132:22;94:2;191:9;178:23;210:31;235:5;210:31;:::i;276:261::-;346:6;399:2;387:9;378:7;374:23;370:32;367:2;;;420:6;412;405:22;367:2;457:9;451:16;476:31;501:5;476:31;:::i;812:398::-;880:6;888;941:2;929:9;920:7;916:23;912:32;909:2;;;962:6;954;947:22;909:2;1006:9;993:23;1025:31;1050:5;1025:31;:::i;:::-;1075:5;-1:-1:-1;1132:2:1;1117:18;;1104:32;1145:33;1104:32;1145:33;:::i;:::-;1197:7;1187:17;;;899:311;;;;;:::o;1215:466::-;1292:6;1300;1308;1361:2;1349:9;1340:7;1336:23;1332:32;1329:2;;;1382:6;1374;1367:22;1329:2;1426:9;1413:23;1445:31;1470:5;1445:31;:::i;:::-;1495:5;-1:-1:-1;1552:2:1;1537:18;;1524:32;1565:33;1524:32;1565:33;:::i;:::-;1319:362;;1617:7;;-1:-1:-1;;;1671:2:1;1656:18;;;;1643:32;;1319:362::o;1686:392::-;1751:6;1759;1812:2;1800:9;1791:7;1787:23;1783:32;1780:2;;;1833:6;1825;1818:22;1780:2;1877:9;1864:23;1896:31;1921:5;1896:31;:::i;:::-;1946:5;-1:-1:-1;2003:2:1;1988:18;;1975:32;2016:30;1975:32;2016:30;:::i;2083:325::-;2151:6;2159;2212:2;2200:9;2191:7;2187:23;2183:32;2180:2;;;2233:6;2225;2218:22;2180:2;2277:9;2264:23;2296:31;2321:5;2296:31;:::i;:::-;2346:5;2398:2;2383:18;;;;2370:32;;-1:-1:-1;;;2170:238:1:o;2413:460::-;2487:6;2495;2503;2556:2;2544:9;2535:7;2531:23;2527:32;2524:2;;;2577:6;2569;2562:22;2524:2;2621:9;2608:23;2640:31;2665:5;2640:31;:::i;:::-;2690:5;-1:-1:-1;2742:2:1;2727:18;;2714:32;;-1:-1:-1;2798:2:1;2783:18;;2770:32;2811:30;2770:32;2811:30;:::i;:::-;2860:7;2850:17;;;2514:359;;;;;:::o;2878:251::-;2934:6;2987:2;2975:9;2966:7;2962:23;2958:32;2955:2;;;3008:6;3000;2993:22;2955:2;3052:9;3039:23;3071:28;3093:5;3071:28;:::i;3134:255::-;3201:6;3254:2;3242:9;3233:7;3229:23;3225:32;3222:2;;;3275:6;3267;3260:22;3222:2;3312:9;3306:16;3331:28;3353:5;3331:28;:::i;3682:190::-;3741:6;3794:2;3782:9;3773:7;3769:23;3765:32;3762:2;;;3815:6;3807;3800:22;3762:2;-1:-1:-1;3843:23:1;;3752:120;-1:-1:-1;3752:120:1:o;3877:319::-;3942:6;3950;4003:2;3991:9;3982:7;3978:23;3974:32;3971:2;;;4024:6;4016;4009:22;3971:2;4065:9;4052:23;4042:33;;4125:2;4114:9;4110:18;4097:32;4138:28;4160:5;4138:28;:::i;4939:304::-;-1:-1:-1;;;;;5169:15:1;;;5151:34;;5221:15;;5216:2;5201:18;;5194:43;5101:2;5086:18;;5068:175::o;5953:603::-;6065:4;6094:2;6123;6112:9;6105:21;6155:6;6149:13;6198:6;6193:2;6182:9;6178:18;6171:34;6223:4;6236:140;6250:6;6247:1;6244:13;6236:140;;;6345:14;;;6341:23;;6335:30;6311:17;;;6330:2;6307:26;6300:66;6265:10;;6236:140;;;6394:6;6391:1;6388:13;6385:2;;;6464:4;6459:2;6450:6;6439:9;6435:22;6431:31;6424:45;6385:2;-1:-1:-1;6540:2:1;6519:15;-1:-1:-1;;6515:29:1;6500:45;;;;6547:2;6496:54;;6074:482;-1:-1:-1;;;6074:482:1:o;10780:356::-;10982:2;10964:21;;;11001:18;;;10994:30;11060:34;11055:2;11040:18;;11033:62;11127:2;11112:18;;10954:182::o;12302:350::-;12504:2;12486:21;;;12543:2;12523:18;;;12516:30;12582:28;12577:2;12562:18;;12555:56;12643:2;12628:18;;12476:176::o;15882:1039::-;16199:25;;;16186:3;16171:19;;16243:2;16265:18;;;16325:6;16144:4;16359:167;16373:4;16370:1;16367:11;16359:167;;;16432:13;;16420:26;;16466:12;;;;16501:15;;;;16393:1;16386:9;16359:167;;;16363:3;;;16563;16552:9;16548:19;16615:6;16641:1;16651:211;16667:4;16662:3;16659:13;16651:211;;;16736:15;;-1:-1:-1;;;;;16732:41:1;16718:56;;16796:14;;;;16835:17;;;;16770:1;16682:11;16651:211;;;-1:-1:-1;;;;4271:13:1;;4264:21;16910:3;16895:19;;4252:34;16153:768;;;;;;;:::o;17115:128::-;17155:3;17186:1;17182:6;17179:1;17176:13;17173:2;;;17192:18;;:::i;:::-;-1:-1:-1;17228:9:1;;17163:80::o;17248:217::-;17288:1;17314;17304:2;;-1:-1:-1;;;17339:31:1;;17393:4;17390:1;17383:15;17421:4;17346:1;17411:15;17304:2;-1:-1:-1;17450:9:1;;17294:171::o;17470:168::-;17510:7;17576:1;17572;17568:6;17564:14;17561:1;17558:21;17553:1;17546:9;17539:17;17535:45;17532:2;;;17583:18;;:::i;:::-;-1:-1:-1;17623:9:1;;17522:116::o;17643:125::-;17683:4;17711:1;17708;17705:8;17702:2;;;17716:18;;:::i;:::-;-1:-1:-1;17753:9:1;;17692:76::o;17773:380::-;17852:1;17848:12;;;;17895;;;17916:2;;17970:4;17962:6;17958:17;17948:27;;17916:2;18023;18015:6;18012:14;17992:18;17989:38;17986:2;;;18069:10;18064:3;18060:20;18057:1;18050:31;18104:4;18101:1;18094:15;18132:4;18129:1;18122:15;17986:2;;17828:325;;;:::o;18158:135::-;18197:3;-1:-1:-1;;18218:17:1;;18215:2;;;18238:18;;:::i;:::-;-1:-1:-1;18285:1:1;18274:13;;18205:88::o;18298:127::-;18359:10;18354:3;18350:20;18347:1;18340:31;18390:4;18387:1;18380:15;18414:4;18411:1;18404:15;18430:131;-1:-1:-1;;;;;18505:31:1;;18495:42;;18485:2;;18551:1;18548;18541:12;18566:118;18652:5;18645:13;18638:21;18631:5;18628:32;18618:2;;18674:1;18671;18664:12

Swarm Source

ipfs://b9562b30fbfffd4450edc236ec48e9dc17a2c83933fd6d4d5862da10a1bc42d7

Block Transaction Gas Used Reward
view all blocks produced
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
View All Validatorset

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

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.