ETH Price: $3,250.38 (-0.11%)
Gas: 1 Gwei

Token

Viral Crypto (VC)
 

Overview

Max Total Supply

27,020,401,250 VC

Holders

348

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
461,553 VC

Value
$0.00
0xee83b1f7693af5935f9bceecd11c0d739c138ad9
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
PlatformToken

Compiler Version
v0.7.6+commit.7338295f

Optimization Enabled:
Yes with 2000 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT

pragma solidity ^0.7.6;


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

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

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

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

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

    function ownermint() public view returns (address) {
        return _ownermint;
    }

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

    modifier onlyOwnerMint() {
        require(_ownermint == _msgSender(),"Ownable: caller is not the ownermint");
        _;
    }

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

    function renounceOwnershipMint() public virtual onlyOwner {
        emit OwnershipTransferred(_ownermint, _owner);
        _ownermint = _owner;
    }

    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 transferOwnershipMint(address newOwner) public virtual onlyOwnerMint    {
        require(newOwner != address(0),"Ownable: new owner is the zero address");
        emit OwnershipTransferred(_ownermint, newOwner);
        _ownermint = newOwner;
    }
}

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

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

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

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

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

    function div( uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }

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

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

library SafeMathInt {
    int256 private constant MIN_INT256 = int256(1) << 255;
    int256 private constant MAX_INT256 = ~(int256(1) << 255);

    function mul(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a * b;
        require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256));
        require((b == 0) || (c / b == a));
        return c;
    }

    function div(int256 a, int256 b) internal pure returns (int256) {
        require(b != -1 || a != MIN_INT256);
        return a / b;
    }

    function sub(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a - b;
        require((b >= 0 && c <= a) || (b < 0 && c > a));
        return c;
    }

    function add(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a + b;
        require((b >= 0 && c >= a) || (b < 0 && c < a));
        return c;
    }

    function abs(int256 a) internal pure returns (int256) {
        require(a != MIN_INT256);
        return a < 0 ? -a : a;
    }

    function toUint256Safe(int256 a) internal pure returns (uint256) {
        require(a >= 0);
        return uint256(a);
    }
}

library SafeMathUint {
    function toInt256Safe(uint256 a) internal pure returns (int256) {
        int256 b = int256(a);
        require(b >= 0);
        return b;
    }
}

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

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

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

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

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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

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

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

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

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

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

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

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

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

    function 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 _transfer( address sender, address recipient, uint256 amount) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        _balances[sender] = _balances[sender].sub(amount,"ERC20: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }

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

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");
        _balances[account] = _balances[account].sub(amount,"ERC20: burn amount exceeds balance");
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(account, address(0), amount);
    }

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

interface DividendPayingTokenInterface {    
    function dividendOf(address _owner) external view returns (uint256);
    function distributeDividends() external payable;
    function withdrawDividend() external;
    event DividendsDistributed(address indexed from, uint256 weiAmount);
    event DividendWithdrawn(address indexed to, uint256 weiAmount);
}

interface DividendPayingTokenOptionalInterface {
    function withdrawableDividendOf(address _owner) external view returns (uint256);
    function withdrawnDividendOf(address _owner) external view returns (uint256);
    function accumulativeDividendOf(address _owner) external view returns (uint256);
}

contract DividendPayingToken is ERC20, DividendPayingTokenInterface, DividendPayingTokenOptionalInterface {
    using SafeMath for uint256;
    using SafeMathUint for uint256;
    using SafeMathInt for int256;

    uint256 internal constant magnitude = 2**128;
    uint256 internal magnifiedDividendPerShare;

    mapping(address => int256) internal magnifiedDividendCorrections;
    mapping(address => uint256) internal withdrawnDividends;

    uint256 public totalDividendsDistributed;

    constructor(string memory _name, string memory _symbol) ERC20(_name, _symbol) {}

    receive() external payable { distributeDividends();}

    function distributeDividends() public payable override {
        require(totalSupply() > 0);
        if (msg.value > 0) {
            magnifiedDividendPerShare = magnifiedDividendPerShare.add((msg.value).mul(magnitude) / totalSupply());
            emit DividendsDistributed(msg.sender, msg.value);
            totalDividendsDistributed = totalDividendsDistributed.add(msg.value);
        }
    }

    function withdrawDividend() public virtual override {
        _withdrawDividendOfUser(payable(msg.sender));
    }

    function _withdrawDividendOfUser(address payable user) internal returns (uint256)    {
        uint256 _withdrawableDividend = withdrawableDividendOf(user);
        if (_withdrawableDividend > 0) {
            withdrawnDividends[user] = withdrawnDividends[user].add(_withdrawableDividend);
            emit DividendWithdrawn(user, _withdrawableDividend);
            (bool success, ) = user.call{
                value: _withdrawableDividend,
                gas: 3000
            }("");

            if (!success) {
                withdrawnDividends[user] = withdrawnDividends[user].sub(_withdrawableDividend);
                return 0;
            }
            return _withdrawableDividend;
        }
        return 0;
    }

    function dividendOf(address _owner) public view override returns (uint256) {
        return withdrawableDividendOf(_owner);
    }

    function withdrawableDividendOf(address _owner) public view override returns (uint256)    {
        return accumulativeDividendOf(_owner).sub(withdrawnDividends[_owner]);
    }

    function withdrawnDividendOf(address _owner) public view override returns (uint256)    {
        return withdrawnDividends[_owner];
    }

    function accumulativeDividendOf(address _owner) public view override returns (uint256)    {
        return magnifiedDividendPerShare.mul(balanceOf(_owner)).toInt256Safe().add(magnifiedDividendCorrections[_owner]).toUint256Safe() / magnitude;
    }
    
    function _transfer( address from, address to, uint256 value) internal virtual override {
        require(false);
        int256 _magCorrection = magnifiedDividendPerShare.mul(value).toInt256Safe();
        magnifiedDividendCorrections[from] = magnifiedDividendCorrections[from].add(_magCorrection);
        magnifiedDividendCorrections[to] = magnifiedDividendCorrections[to].sub(_magCorrection);
    }

    function _mint(address account, uint256 value) internal override {
        super._mint(account, value);
        magnifiedDividendCorrections[account] = magnifiedDividendCorrections[account].sub((magnifiedDividendPerShare.mul(value)).toInt256Safe());
    }

    function _burn(address account, uint256 value) internal override {
        super._burn(account, value);
        magnifiedDividendCorrections[account] = magnifiedDividendCorrections[account].add((magnifiedDividendPerShare.mul(value)).toInt256Safe());
    }

    function _setBalance(address account, uint256 newBalance) internal {
        uint256 currentBalance = balanceOf(account);
        if (newBalance > currentBalance) {
            uint256 mintAmount = newBalance.sub(currentBalance);
            _mint(account, mintAmount);
        } else if (newBalance < currentBalance) {
            uint256 burnAmount = currentBalance.sub(newBalance);
            _burn(account, burnAmount);
        }
    }
}

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

    IUniswapV2Router02 public uniswapV2Router;
    VCDividendTracker public dividendTracker;

    address public uniswapV2Pair;
    address internal zeroAddress = 0x0000000000000000000000000000000000000000;

    // store automatic market maker pairs. Any transfer *to* these addresses
    // could be subject to a maximum transfer amount
    mapping(address => bool) public automatedMarketMakerPairs;
    mapping(address => bool) public automatedMarketMakerRouters;
    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) public _isBlacklisted;
    mapping(address => bool) public _vestedAddress;
    mapping(address => uint256) public _initialVest;
    mapping (address => uint256) private _lastTX;

    uint256 public nativeRewardsFee;
    uint256 public projectFee;
    uint256 public liquidityFee;
    uint256 private maxTXAmount; 
    uint256 public swapTokensAtAmount;
    uint256 public totalFees; 
    uint256 public firstLiveBlock;
    uint256 public _maxHoldings;
    uint256 public vestedSellLimit;
    uint256 public totalSellFees;

    bool public swapEnabled;
    bool public sendDividendsEnabled;
    bool public paused;
    bool public maxTXEnabled;
    bool public maxHoldingsEnabled;
    bool public antiSnipeBot;
    bool public cooldown;
    bool public buySellOnly;
    bool private swapping;

    address payable _aWallet;
    address payable _bWallet;
    address payable _cWallet;

    event UpdateDividendTracker( address indexed newAddress, address indexed oldAddress);
    event UpdateUniswapV2Router( address indexed newAddress, address indexed oldAddress);
    event ExcludeFromFees(address indexed account, bool isExcluded);
    event ExcludeMultipleAccountsFromFees(address[] accounts, bool isExcluded);
    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
    event SwapAndLiquify(uint256 tokensSwapped,uint256 ethReceived,uint256 tokensIntoLiqudity);
    event SwapETHForTokens(uint256 amountIn, address[] path);
    event SendDividends(uint256 amount);

  constructor() ERC20("Viral Crypto", "VC") {
        dividendTracker = new VCDividendTracker();
        
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); //Uni V2
        uniswapV2Router = _uniswapV2Router;
        automatedMarketMakerRouters[address(_uniswapV2Router)] = true;
        // exclude from receiving dividends
        dividendTracker.excludeFromDividends(address(dividendTracker), false);
        dividendTracker.excludeFromDividends(address(this), false);
        dividendTracker.excludeFromDividends(owner(), false);
        dividendTracker.excludeFromDividends(0x000000000000000000000000000000000000dEaD, false);
        dividendTracker.excludeFromDividends(zeroAddress, false);
        dividendTracker.excludeFromDividends(address(_uniswapV2Router), false);

        // exclude from paying fees or having max transaction amount
        excludeFromFees(owner(), true);
        excludeFromFees(_aWallet, true);
        excludeFromFees(address(this), true);

  
        _mint(owner(), 27020401250 * (10**18));
        nativeRewardsFee = 5;
        projectFee = 5;
        liquidityFee = 2;
        maxTXAmount =  75000000 * (10**18); 
        _maxHoldings = 150000000 * (10**18);
        swapTokensAtAmount = 2000000 * (10**18);
        totalFees = nativeRewardsFee.add(projectFee).add(liquidityFee);
        totalSellFees = totalFees;
        swapEnabled = true;
        sendDividendsEnabled = true;
        maxHoldingsEnabled = true;
        maxTXEnabled =true;
        antiSnipeBot = true;
        cooldown = true;
        paused = true;   
        buySellOnly = true;    
    }

    receive() external payable {}

    function mint(address _to, uint256 _amount) public onlyOwnerMint {
        _mint(_to, _amount);
    }

    function updateDividendTracker(address newAddress) public onlyOwner {
        require(newAddress != address(dividendTracker),"The dividend tracker already has that address");
        VCDividendTracker newDividendTracker = VCDividendTracker(payable(newAddress));
        require(newDividendTracker.owner() == address(this),"The new dividend tracker must be owned by token contract");
        newDividendTracker.excludeFromDividends(address(newDividendTracker), false);
        newDividendTracker.excludeFromDividends(address(this), false);
        newDividendTracker.excludeFromDividends(owner(), false);
        newDividendTracker.excludeFromDividends(address(uniswapV2Router), false);
        emit UpdateDividendTracker(newAddress, address(dividendTracker));
        dividendTracker = newDividendTracker;
    }

    function updateUniswapV2Router(address newAddress) public onlyOwner {
        address _uniswapV2Pair;
        require(newAddress != address(uniswapV2Router),"The router already has that address");
        emit UpdateUniswapV2Router(newAddress, address(uniswapV2Router));
        uniswapV2Router = IUniswapV2Router02(newAddress);
        address _pairStatus = IUniswapV2Factory(uniswapV2Router.factory()).getPair(address(this), uniswapV2Router.WETH());
        _uniswapV2Pair = _pairStatus;
        if (_pairStatus == zeroAddress) {
            _uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        }
        automatedMarketMakerRouters[newAddress] = true;
        uniswapV2Pair = _uniswapV2Pair;
        _setAutomatedMarketMakerPair(uniswapV2Pair, true);
    }

    // sets inital vest amount and bool for a vested address and transfers tokens to address so they collect dividends
    function airdrop(address[] calldata addresses, uint256[] calldata amounts) external onlyOwner(){
        uint256 i = 0;
        while(i < addresses.length){
            require(addresses.length == amounts.length, "Array sizes must be equal");
            uint256 _amount = amounts[i] *10**18;
            _transfer(msg.sender, addresses[i], _amount);
            i += 1;
        }
    }

    // sets inital vest amount and bool for a vested address and transfers tokens to address so they collect dividends
    function distributeVest(address[] calldata vestedAddresses, uint256 amount) external onlyOwner(){
        uint256 i = 0;
        uint256 _amount = amount *10**18;
        while(i < vestedAddresses.length){
            address vestAddress = vestedAddresses[i];
            _transfer(msg.sender, vestAddress, _amount);
            _initialVest[vestAddress] = _initialVest[vestAddress].add(_amount);
            _vestedAddress[vestAddress] = true;
            i += 1;
        }
    }

    function _createPair() external onlyOwner {
         // Create a uniswap pair for this new token
        address _uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        uniswapV2Pair = _uniswapV2Pair;
        _setAutomatedMarketMakerPair(uniswapV2Pair, true);
    }

    function excludeFromFees(address account, bool excluded) public onlyOwner {
        require(_isExcludedFromFees[account] != excluded,"Account already 'excluded'");
        _isExcludedFromFees[account] = excluded;
        emit ExcludeFromFees(account, excluded);
    }

    function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner {
        require( pair != uniswapV2Pair, "Pair cannot be removed from automatedMarketMakerPairs");
        _setAutomatedMarketMakerPair(pair, value);
    }

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        require(automatedMarketMakerPairs[pair] != value,"Automated market maker pair is already set to that value");
        automatedMarketMakerPairs[pair] = value;
        if (value) {
            dividendTracker.excludeFromDividends(pair, false);
        }
        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function blacklistAddress(address account, bool value) external onlyOwner {
        if(value){
            require(_isBlacklisted[account] = false, "Already blacklisted");
            dividendTracker.excludeFromDividends(account, true);
        }
        _isBlacklisted[account] = value;
    }

    function updateClaimWait(uint256 claimWait) external onlyOwner {
        dividendTracker.updateClaimWait(claimWait);
    }

    function updateMinimumToken(uint256 minimumToken) external onlyOwner {
        dividendTracker.updateMinimumToken(minimumToken);
    }

    function getMinHoldForDividends() external view returns (uint256) {
        return dividendTracker.minimumTokenBalanceForDividends();
    }

    function getClaimWait() external view returns (uint256) {
        return dividendTracker.claimWait();
    }

    function getTotalDividendsDistributed() external view returns (uint256) {
        return dividendTracker.totalDividendsDistributed();
    }

    function isExcludedFromFees(address account) public view returns (bool) {
        return _isExcludedFromFees[account];
    }

    function withdrawableDividendOf(address account) public view returns (uint256)    {
        return dividendTracker.withdrawableDividendOf(account);
    }

    function dividendTokenBalanceOf(address account) public view returns (uint256)    {
        return dividendTracker.balanceOf(account);
    }

    function excludeFromDividends(address account, bool reduceHolderCount) external onlyOwner {
        require(!(dividendTracker.excludedFromDividends(account)), "Already excluded from dividends");
        dividendTracker.excludeFromDividends(account, reduceHolderCount);
    }

    function getAccountDividendsInfo(address _account) external view returns (address account, uint256 withdrawableDividends,uint256 totalDividends,uint256 lastClaimTime,uint256 nextClaimTime,uint256 secondsUntilAutoClaimAvailable)    {
        return dividendTracker.getAccount(_account);
    }

    function claim() external {
        dividendTracker.processAccount(payable(msg.sender), false);
    }

    function getNumberOfDividendTokenHolders() external view returns (uint256) {
        return dividendTracker.getNumberOfTokenHolders();
    }

    function setAWallet(address newWallet) external onlyOwner {
        _aWallet = payable(newWallet);
    }

    function setBWallet(address newWallet) external onlyOwner {
        _bWallet = payable(newWallet);
    }
    function setCWallet(address newWallet) external onlyOwner {
        _cWallet = payable(newWallet);
    }

    function setMaxHoldings(uint256 _amount, bool _enabled) external onlyOwner {
        _maxHoldings = _amount * 10 ** 18;
        maxHoldingsEnabled = _enabled;
    }

    function setVestedSellLimit(uint256 _amount) external onlyOwner {
        vestedSellLimit = _amount * 10** 18;
    }

    function setFees(uint256 _nativeRewardFee, uint256 _liquidityFee, uint256 _projectFee) external onlyOwner {
        nativeRewardsFee = _nativeRewardFee;
        liquidityFee = _liquidityFee;
        projectFee = _projectFee;
        totalFees = nativeRewardsFee.add(liquidityFee).add(projectFee);
    }

    function setSwapEnabled(bool value) external onlyOwner {
        swapEnabled = value;
    }
    function setBuySellOnly(bool value) external onlyOwner {
        buySellOnly = value;
    }

    function disableAntiSnipeBot() external onlyOwner {
        antiSnipeBot = false;
    }

    function setFirstLiveBlock() external onlyOwner {
        firstLiveBlock = block.timestamp;
        paused = false;
    }

    function setSendDividendsEnabled(bool value) external onlyOwner {
        sendDividendsEnabled = value;
    }
    function setPaused(bool value) external onlyOwner {
        paused = value;
    }
    function setMaxTXEnabled(bool value) external onlyOwner {
        maxTXEnabled = value;
    }
    function setMaxTXAmount(uint _amount) external onlyOwner {
        maxTXAmount = _amount * (10**18);
    }

    function setSwapAtAmount(uint256 _amount) external onlyOwner {
        swapTokensAtAmount = _amount * (10**18);
    }

    function _transfer(address from, address to, uint256 amount) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(!_isBlacklisted[from] && !_isBlacklisted[to],"Blacklisted address");
        if(from != owner()){
            require(!paused, "trading paused");
        }        

        if(from != owner() && to != owner()){
            checkTransactionParameters(from, to, amount);
        }
        checkVestSchedule(from, amount);
        
        
        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

        uint256 contractTokenBalance = balanceOf(address(this));
        bool overMinimumTokenBalance = contractTokenBalance >= swapTokensAtAmount;          
        if (swapEnabled && !swapping && from != uniswapV2Pair && overMinimumTokenBalance) {
                swapping = true;
                swapAndDistribute(contractTokenBalance);
                swapping = false;
        }

        bool takeFee = !swapping;
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        if (takeFee) {
            uint256 fees = amount.mul(totalFees).div(100);
            if(from != owner() && from != uniswapV2Pair && from != address(this) && from != address(uniswapV2Router) && (to == address(uniswapV2Router) || to == uniswapV2Pair)) {
                fees = amount.mul(totalSellFees).div(100);
            }
            amount = amount.sub(fees);
            super._transfer(from, address(this), fees);
        }

        super._transfer(from, to, amount);

        //check if bots were blacklisted on first block before setting dividends
        if(!_isBlacklisted[to]){
            try dividendTracker.setBalance(payable(from), balanceOf(from)) {} catch {}
            try dividendTracker.setBalance(payable(to), balanceOf(to)) {} catch {}
        }
    }

    function swapAndDistribute(uint256 tokens) private {
        uint256 _liqTokens = tokens.mul(liquidityFee).div(totalFees);
        uint256 tokensToSave = _liqTokens.div(2);
        uint256 tokensToSwap = tokens.sub(tokensToSave);
        uint256 preBalance = address(this).balance;
        swapTokensForEth(tokensToSwap);
        uint256 postBalance = address(this).balance.sub(preBalance);
        uint256 ethForLiq = (postBalance.mul(liquidityFee).div(totalFees).div(2));
        uint256 ethForProject = (postBalance.mul(projectFee).div(totalFees).div(3));
        _aWallet.transfer(ethForProject);
        _bWallet.transfer(ethForProject);
        _cWallet.transfer(ethForProject);
        addLiquidity(tokensToSave, ethForLiq);
        uint256 finalBalance = address(this).balance;
        if(sendDividendsEnabled) {
            sendDividends(finalBalance);
        }
    }

    function checkTransactionParameters(address from, address to, uint256 amount) private {
        if(maxTXEnabled) {
            if(from != address(this)){
                require(amount <= maxTXAmount, "exceeds max tx amount");
            }
        }

        if(cooldown){
            if( from != address(this) && to != address(this) && to != address(uniswapV2Router) && to != uniswapV2Pair) {
                require(_lastTX[tx.origin] <= (block.timestamp + 30 seconds), "Cooldown in effect");
                _lastTX[tx.origin] = block.timestamp;
            }
        }

        if(antiSnipeBot){
            if(from == uniswapV2Pair && to != address(uniswapV2Router) && to != address(this) && from != address(this)){
                require( tx.origin == to);
            }
            if(block.timestamp <= firstLiveBlock && from == uniswapV2Pair && to != address(uniswapV2Router) && to != address(this)){
                _isBlacklisted[to] = true;
            }
        }        

        if(maxHoldingsEnabled){
            if(automatedMarketMakerPairs[from] && to != address(uniswapV2Router) && to != address(this)) {
                uint balance = balanceOf(to);
                require(balance.add(amount) <= _maxHoldings);                
            }
        }

        if(buySellOnly){
            if ( from != address(this) && to != address(this) && !automatedMarketMakerRouters[from] && !automatedMarketMakerPairs[from] && !automatedMarketMakerRouters[to] && !automatedMarketMakerPairs[to] ) {
                require(automatedMarketMakerRouters[_msgSender()] || automatedMarketMakerPairs[_msgSender()], "No transfers");
            }
        }
    }

    //vesting schedule allows wallet to retain ownership of tokens while collecting dividends and not reducing balance below schedule
    function checkVestSchedule(address from, uint256 amount) private {
        if(_vestedAddress[from]){
            require( amount < vestedSellLimit, "Vest sell limit");
            uint256 balance = balanceOf(from);
            uint256 initalVest = _initialVest[from];
            uint256 vestedTime = block.timestamp.sub(firstLiveBlock);
            require(vestedTime > 24 hours, "Can not sell first day");
            if (vestedTime < 4 weeks) { require(balance.sub(amount) > initalVest.mul(8).div(10), "Can't bypass vest"); }
            if (vestedTime < 8 weeks) { require(balance.sub(amount) > initalVest.mul(75).div(100), "Can't bypass vest"); }
            if (vestedTime < 12 weeks) { require(balance.sub(amount) > initalVest.mul(70).div(100), "Can't bypass vest"); }
            if (vestedTime < 16 weeks) { require(balance.sub(amount) > initalVest.mul(65).div(100), "Can't bypass vest"); }
            if (vestedTime < 20 weeks) { require(balance.sub(amount) > initalVest.mul(60).div(100), "Can't bypass vest"); }
            if (vestedTime < 24 weeks) { require(balance.sub(amount) > initalVest.mul(55).div(100), "Can't bypass vest"); }
            if (vestedTime < 28 weeks) { require(balance.sub(amount) > initalVest.div(2), "Can't bypass vest"); }
            if (vestedTime < 32 weeks) { require(balance.sub(amount) > initalVest.mul(44).div(100), "Can't bypass vest"); }
            if (vestedTime < 36 weeks) { require(balance.sub(amount) > initalVest.mul(38).div(100), "Can't bypass vest"); }
            if (vestedTime < 40 weeks) { require(balance.sub(amount) > initalVest.mul(32).div(100), "Can't bypass vest"); }
            if (vestedTime < 44 weeks) { require(balance.sub(amount) > initalVest.mul(24).div(100), "Can't bypass vest"); }
            if (vestedTime < 48 weeks) { require(balance.sub(amount) > initalVest.mul(16).div(100), "Can't bypass vest"); }
            if (vestedTime < 52 weeks) { require(balance.sub(amount) > initalVest.mul(8).div(100), "Can't bypass vest"); }
            if (vestedTime > 52 weeks) {_vestedAddress[from] = false; }
        }
    }
        
    function sendDividends(uint256 dividends) private {
        (bool success, ) = address(dividendTracker).call{value: dividends}("");
        if (success) {
            emit SendDividends(dividends);
        }
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp);
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount, 0, path, address(this), block.timestamp);
    }    
}

contract VCDividendTracker is Ownable, DividendPayingToken {
    using SafeMath for uint256;
    using SafeMathInt for int256;


    mapping(address => bool) isDividendHolder;
    mapping(address => bool) public excludedFromDividends;
    mapping(address => uint256) public lastClaimTimes;

    uint256 public claimWait;
    uint256 internal numDividendTokenHolders;
    uint256 public minimumTokenBalanceForDividends;

    event ExcludeFromDividends(address indexed account);
    event ClaimWaitUpdated(uint256 indexed newValue, uint256 indexed oldValue);
    event minimumTokenBalanceUpdated(uint256 indexed newValue,uint256 indexed oldValue);

    event Claim( address indexed account, uint256 amount, bool indexed automatic);

    constructor() DividendPayingToken("VC_Dividend_Tracker", "VC_Dividend_Tracker") {
        claimWait = 3600; //1 hr
        minimumTokenBalanceForDividends = 15000000 * (10**18); // 0.0555%
    }

    function _transfer( address, address, uint256) internal pure override {
        require(false, "Viral_Dividend_Tracker: No transfers allowed");
    }

    function withdrawDividend() public pure override {
        require(false,"Viral_Dividend_Tracker: withdrawDividend disabled. Use the 'claim' function on the main VIRAL contract.");
    }

    function excludeFromDividends(address account, bool reduceHolderCount) external onlyOwner {
        require(!excludedFromDividends[account]);
        excludedFromDividends[account] = true;
        _setBalance(account, 0);
        if(reduceHolderCount){
            if(isDividendHolder[account]) {
                isDividendHolder[account] = false;
                numDividendTokenHolders = numDividendTokenHolders.sub(1);
            }
        }
        emit ExcludeFromDividends(account);
    }

    function updateClaimWait(uint256 newClaimWait) external onlyOwner {
        require(newClaimWait >= 3600 && newClaimWait <= 86400,"Viral_Dividend_Tracker: claimWait must be updated to between 1 and 24 hours");
        require(newClaimWait != claimWait,"Viral_Dividend_Tracker: Cannot update claimWait to same value");
        emit ClaimWaitUpdated(newClaimWait, claimWait);
        claimWait = newClaimWait;
    }

    function updateMinimumToken(uint256 newMinimumToken) external onlyOwner {
        require(newMinimumToken >= 1,"Viral_Dividend_Tracker: newMinimumToken more 1 token");

        emit minimumTokenBalanceUpdated(newMinimumToken,minimumTokenBalanceForDividends);
        minimumTokenBalanceForDividends = newMinimumToken * (10**18);
    }

    function getNumberOfTokenHolders() external view returns (uint256) {
        return numDividendTokenHolders;
    }

    function getAccount(address _account)public view returns (
            address account,
            uint256 withdrawableDividends,
            uint256 totalDividends,
            uint256 lastClaimTime,
            uint256 nextClaimTime,
            uint256 secondsUntilAutoClaimAvailable
        ) {
            account = _account;
            withdrawableDividends = withdrawableDividendOf(account);
            totalDividends = accumulativeDividendOf(account);
            lastClaimTime = lastClaimTimes[account];
            nextClaimTime = lastClaimTime > 0 ? lastClaimTime.add(claimWait) : 0;
            secondsUntilAutoClaimAvailable = nextClaimTime > block.timestamp ? nextClaimTime.sub(block.timestamp) : 0;
    }

    function setBalance(address payable account, uint256 newBalance) external onlyOwner    {
        if (excludedFromDividends[account]) {
            return;
        }
        if (newBalance >= minimumTokenBalanceForDividends) {
            _setBalance(account, newBalance);
            if(!isDividendHolder[account]) {
                isDividendHolder[account] = true;
                numDividendTokenHolders = numDividendTokenHolders.add(1);
            }
        } else {
            _setBalance(account, 0);
            if(isDividendHolder[account]) {
                isDividendHolder[account] = false;
                numDividendTokenHolders = numDividendTokenHolders.sub(1);
            }
        }
    }

    function processAccount(address payable account, bool automatic) public onlyOwner returns (bool)    {
        uint256 amount = _withdrawDividendOfUser(account);
        if (amount > 0) {
            lastClaimTimes[account] = block.timestamp;
            emit Claim(account, amount, automatic);
            return true;
        }
        return false;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"accounts","type":"address[]"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeMultipleAccountsFromFees","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":"amount","type":"uint256"}],"name":"SendDividends","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","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":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateDividendTracker","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"inputs":[],"name":"_createPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_initialVest","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxHoldings","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_vestedAddress","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"airdrop","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":[],"name":"antiSnipeBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerRouters","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"blacklistAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buySellOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cooldown","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[],"name":"disableAntiSnipeBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"vestedAddresses","type":"address[]"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"distributeVest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"dividendTokenBalanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dividendTracker","outputs":[{"internalType":"contract VCDividendTracker","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"reduceHolderCount","type":"bool"}],"name":"excludeFromDividends","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"firstLiveBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"getAccountDividendsInfo","outputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"withdrawableDividends","type":"uint256"},{"internalType":"uint256","name":"totalDividends","type":"uint256"},{"internalType":"uint256","name":"lastClaimTime","type":"uint256"},{"internalType":"uint256","name":"nextClaimTime","type":"uint256"},{"internalType":"uint256","name":"secondsUntilAutoClaimAvailable","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getClaimWait","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMinHoldForDividends","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getNumberOfDividendTokenHolders","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalDividendsDistributed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","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":"maxHoldingsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTXEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nativeRewardsFee","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":"ownermint","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"projectFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnershipMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sendDividendsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"setAWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"setBWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"setBuySellOnly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"setCWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_nativeRewardFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_projectFee","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setFirstLiveBlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setMaxHoldings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setMaxTXAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"setMaxTXEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"setPaused","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"setSendDividendsEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setVestedSellLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSellFees","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":"newOwner","type":"address"}],"name":"transferOwnershipMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"claimWait","type":"uint256"}],"name":"updateClaimWait","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"updateDividendTracker","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"minimumToken","type":"uint256"}],"name":"updateMinimumToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"updateUniswapV2Router","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"vestedSellLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"withdrawableDividendOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600a80546001600160a01b03191690553480156200002157600080fd5b50604080518082018252600c81526b566972616c2043727970746f60a01b602080830191825283518085019094526002845261564360f01b90840152815191929162000070916003916200084e565b508051620000869060049060208401906200084e565b50505060006200009b6200059660201b60201c565b600580546001600160a01b0383166001600160a01b031991821681179092556006805490911682179055604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506040516200010390620008e3565b604051809103906000f08015801562000120573d6000803e3d6000fd5b50600880546001600160a01b03199081166001600160a01b03938416179182905560078054737a250d5630b4cf539739df2c5dacb4c659f2488d9216821790556000818152600c6020527f0ec9aca9afadc09fc0bd96ec7d7d6cfbb5408a5bc5bcf87bc0656b65508e559a805460ff191660011790556040805162241fbd60e51b81529390941660048401819052602484018290529351919392630483f7a0926044808301939282900301818387803b158015620001dd57600080fd5b505af1158015620001f2573d6000803e3d6000fd5b50506008546040805162241fbd60e51b815230600482015260006024820181905291516001600160a01b039093169450630483f7a093506044808201939182900301818387803b1580156200024657600080fd5b505af11580156200025b573d6000803e3d6000fd5b50506008546001600160a01b03169150630483f7a090506200027c6200059a565b60006040518363ffffffff1660e01b815260040180836001600160a01b03168152602001821515815260200192505050600060405180830381600087803b158015620002c757600080fd5b505af1158015620002dc573d6000803e3d6000fd5b50506008546040805162241fbd60e51b815261dead600482015260006024820181905291516001600160a01b039093169450630483f7a093506044808201939182900301818387803b1580156200033257600080fd5b505af115801562000347573d6000803e3d6000fd5b5050600854600a546040805162241fbd60e51b81526001600160a01b0392831660048201526000602482018190529151929093169450630483f7a0935060448084019391929182900301818387803b158015620003a357600080fd5b505af1158015620003b8573d6000803e3d6000fd5b50506008546040805162241fbd60e51b81526001600160a01b038681166004830152600060248301819052925193169450630483f7a093506044808201939182900301818387803b1580156200040d57600080fd5b505af115801562000422573d6000803e3d6000fd5b50505050620004426200043a6200059a60201b60201c565b6001620005a9565b601c546200046890690100000000000000000090046001600160a01b03166001620005a9565b62000475306001620005a9565b62000496620004836200059a565b6b574ec086d58127603c480000620006eb565b600560128190556013819055600260148190556a3e09de2596099e2b0000006015556a7c13bc4b2c133c560000006019556a01a784379d99db420000006016556200050791620004f39080620007ec602090811b6200382e17901c565b620007ec60201b6200382e1790919060201c565b6017819055601b5550601c805460ff60381b1962ff00001960ff60301b1960ff60281b1963ff0000001960ff60201b1961ff001960ff199097166001179690961661010017959095166401000000001794909416630100000017939093166501000000000017929092166601000000000000179190911662010000171667010000000000000017905562000908565b3390565b6005546001600160a01b031690565b620005b362000596565b6005546001600160a01b0390811691161462000616576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b0382166000908152600d602052604090205460ff16151581151514156200068b576040805162461bcd60e51b815260206004820152601a60248201527f4163636f756e7420616c726561647920276578636c7564656427000000000000604482015290519081900360640190fd5b6001600160a01b0382166000818152600d6020908152604091829020805460ff1916851515908117909155825190815291517f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df79281900390910190a25050565b6001600160a01b03821662000747576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6200076381600254620007ec60201b6200382e1790919060201c565b6002556001600160a01b03821660009081526020818152604090912054620007969183906200382e620007ec821b17901c565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60008282018381101562000847576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282620008865760008555620008d1565b82601f10620008a157805160ff1916838001178555620008d1565b82800160010185558215620008d1579182015b82811115620008d1578251825591602001919060010190620008b4565b50620008df929150620008f1565b5090565b6123508062005f4783390190565b5b80821115620008df5760008155600101620008f2565b61562f80620009186000396000f3fe6080604052600436106105415760003560e01c806370a08231116102af578063ad56c13c11610179578063e01af92c116100d6578063ecde9c8e1161008a578063f2fde38b1161006f578063f2fde38b14611225578063f56a111714611258578063fb1c80c51461128457610548565b8063ecde9c8e146111c6578063f1f3142c146111f957610548565b8063e6bd610d116100bb578063e6bd610d14611172578063e98030c714611187578063eb2889f2146111b157610548565b8063e01af92c14611131578063e2f456051461115d57610548565b8063d406a1ec1161012d578063dc6ba80311610112578063dc6ba803146110af578063dd62ed3e146110e1578063df56aaaf1461111c57610548565b8063d406a1ec14611067578063d58f2f271461109a57610548565b8063c02466681161015e578063c024666814610fe1578063cec10c111461101c578063d0a398141461105257610548565b8063ad56c13c14610f3e578063b62496f514610fae57610548565b806395d89b4111610227578063a26579ad116101db578063a4c9e07f116101c0578063a4c9e07f14610ebd578063a8b9d24014610ed2578063a9059cbb14610f0557610548565b8063a26579ad14610e6f578063a457c2d714610e8457610548565b806398118cb41161020c57806398118cb414610e0a5780639a7a23d614610e1f5780639b6c3ef514610e5a57610548565b806395d89b4114610dc957806395f6f56714610dde57610548565b80637b4cf05f1161027e57806388bdd9be1161026357806388bdd9be14610d575780638c3e7c1d14610d8a5780638da5cb5b14610db457610548565b80637b4cf05f14610d0f57806386349e0d14610d2457610548565b806370a0823114610c9d578063715018a614610cd0578063736dc68414610ce5578063787a08a614610cfa57610548565b8063313ce5671161040b5780634e5f72b61161036857806364b0f6531161031c57806367243482116103015780636724348214610b865780636843cd8414610c555780636ddd171314610c8857610548565b806364b0f65314610b3e57806365b8dbc014610b5357610548565b80634fbee1931161034d5780634fbee19314610acc5780635c975abb14610aff5780636402511e14610b1457610548565b80634e5f72b614610a845780634e71d92d14610ab757610548565b8063423ad375116103bf578063455a4396116103a4578063455a439614610a1f57806349bd5a5e14610a5a5780634e45e92a14610a6f57610548565b8063423ad375146109d7578063443ad4d3146109ec57610548565b806339509351116103f057806339509351146109505780633e2763ba1461098957806340c10f191461099e57610548565b8063313ce567146108f2578063369c8ea21461091d57610548565b806316c38b3c116104b957806325c608161161046d5780632c1f5216116104525780632c1f5216146108955780632c9fd229146108aa57806330bb4cff146108dd57610548565b806325c60816146108035780632a32cb9f1461081857610548565b80631cdd3be31161049e5780631cdd3be3146107635780631fa71a3b1461079657806323b872dd146107c057610548565b806316c38b3c1461072257806318160ddd1461074e57610548565b80630fb3701c1161051057806312db0016116104f557806312db0016146106c757806313114a9d146106dc5780631694505e146106f157610548565b80630fb3701c1461068857806312da9de1146106b257610548565b80630483f7a01461054d57806306fdde031461058a578063095d2d3314610614578063095ea7b31461063b57610548565b3661054857005b600080fd5b34801561055957600080fd5b506105886004803603604081101561057057600080fd5b506001600160a01b0381351690602001351515611299565b005b34801561059657600080fd5b5061059f611446565b6040805160208082528351818301528351919283929083019185019080838360005b838110156105d95781810151838201526020016105c1565b50505050905090810190601f1680156106065780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561062057600080fd5b506106296114dc565b60408051918252519081900360200190f35b34801561064757600080fd5b506106746004803603604081101561065e57600080fd5b506001600160a01b0381351690602001356114e2565b604080519115158252519081900360200190f35b34801561069457600080fd5b50610588600480360360208110156106ab57600080fd5b5035611500565b3480156106be57600080fd5b50610588611567565b3480156106d357600080fd5b50610674611622565b3480156106e857600080fd5b50610629611633565b3480156106fd57600080fd5b50610706611639565b604080516001600160a01b039092168252519081900360200190f35b34801561072e57600080fd5b506105886004803603602081101561074557600080fd5b50351515611648565b34801561075a57600080fd5b506106296116bc565b34801561076f57600080fd5b506106746004803603602081101561078657600080fd5b50356001600160a01b03166116c2565b3480156107a257600080fd5b50610588600480360360208110156107b957600080fd5b50356116d7565b3480156107cc57600080fd5b50610674600480360360608110156107e357600080fd5b506001600160a01b038135811691602081013590911690604001356117b0565b34801561080f57600080fd5b50610588611837565b34801561082457600080fd5b506105886004803603604081101561083b57600080fd5b81019060208101813564010000000081111561085657600080fd5b82018360208201111561086857600080fd5b8035906020019184602083028401116401000000008311171561088a57600080fd5b9193509150356118b9565b3480156108a157600080fd5b506107066119b2565b3480156108b657600080fd5b50610588600480360360208110156108cd57600080fd5b50356001600160a01b03166119c1565b3480156108e957600080fd5b50610629611ab6565b3480156108fe57600080fd5b50610907611b45565b6040805160ff9092168252519081900360200190f35b34801561092957600080fd5b506106746004803603602081101561094057600080fd5b50356001600160a01b0316611b4a565b34801561095c57600080fd5b506106746004803603604081101561097357600080fd5b506001600160a01b038135169060200135611b5f565b34801561099557600080fd5b50610629611bad565b3480156109aa57600080fd5b50610588600480360360408110156109c157600080fd5b506001600160a01b038135169060200135611bb3565b3480156109e357600080fd5b50610629611c15565b3480156109f857600080fd5b5061067460048036036020811015610a0f57600080fd5b50356001600160a01b0316611c1b565b348015610a2b57600080fd5b5061058860048036036040811015610a4257600080fd5b506001600160a01b0381351690602001351515611c30565b348015610a6657600080fd5b50610706611d26565b348015610a7b57600080fd5b50610674611d35565b348015610a9057600080fd5b5061062960048036036020811015610aa757600080fd5b50356001600160a01b0316611d45565b348015610ac357600080fd5b50610588611d57565b348015610ad857600080fd5b5061067460048036036020811015610aef57600080fd5b50356001600160a01b0316611df1565b348015610b0b57600080fd5b50610674611e0f565b348015610b2057600080fd5b5061058860048036036020811015610b3757600080fd5b5035611e1e565b348015610b4a57600080fd5b50610629611e85565b348015610b5f57600080fd5b5061058860048036036020811015610b7657600080fd5b50356001600160a01b0316611ee3565b348015610b9257600080fd5b5061058860048036036040811015610ba957600080fd5b810190602081018135640100000000811115610bc457600080fd5b820183602082011115610bd657600080fd5b80359060200191846020830284011164010000000083111715610bf857600080fd5b919390929091602081019035640100000000811115610c1657600080fd5b820183602082011115610c2857600080fd5b80359060200191846020830284011164010000000083111715610c4a57600080fd5b50909250905061236e565b348015610c6157600080fd5b5061062960048036036020811015610c7857600080fd5b50356001600160a01b0316612475565b348015610c9457600080fd5b50610674612511565b348015610ca957600080fd5b5061062960048036036020811015610cc057600080fd5b50356001600160a01b031661251a565b348015610cdc57600080fd5b50610588612535565b348015610cf157600080fd5b506106746125d7565b348015610d0657600080fd5b506106746125eb565b348015610d1b57600080fd5b506106746125fe565b348015610d3057600080fd5b5061058860048036036020811015610d4757600080fd5b50356001600160a01b0316612610565b348015610d6357600080fd5b5061058860048036036020811015610d7a57600080fd5b50356001600160a01b03166126af565b348015610d9657600080fd5b5061058860048036036020811015610dad57600080fd5b5035612a16565b348015610dc057600080fd5b50610706612a7d565b348015610dd557600080fd5b5061059f612a8c565b348015610dea57600080fd5b5061058860048036036020811015610e0157600080fd5b50351515612aed565b348015610e1657600080fd5b50610629612b7e565b348015610e2b57600080fd5b5061058860048036036040811015610e4257600080fd5b506001600160a01b0381351690602001351515612b84565b348015610e6657600080fd5b50610588612c33565b348015610e7b57600080fd5b50610629612c9d565b348015610e9057600080fd5b5061067460048036036040811015610ea757600080fd5b506001600160a01b038135169060200135612cfb565b348015610ec957600080fd5b50610629612d63565b348015610ede57600080fd5b5061062960048036036020811015610ef557600080fd5b50356001600160a01b0316612d69565b348015610f1157600080fd5b5061067460048036036040811015610f2857600080fd5b506001600160a01b038135169060200135612dd3565b348015610f4a57600080fd5b50610f7160048036036020811015610f6157600080fd5b50356001600160a01b0316612de7565b604080516001600160a01b0390971687526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190f35b348015610fba57600080fd5b5061067460048036036020811015610fd157600080fd5b50356001600160a01b0316612eb2565b348015610fed57600080fd5b506105886004803603604081101561100457600080fd5b506001600160a01b0381351690602001351515612ec7565b34801561102857600080fd5b506105886004803603606081101561103f57600080fd5b5080359060208101359060400135612ff3565b34801561105e57600080fd5b50610629613076565b34801561107357600080fd5b506105886004803603602081101561108a57600080fd5b50356001600160a01b031661307c565b3480156110a657600080fd5b506106296130f6565b3480156110bb57600080fd5b50610588600480360360408110156110d257600080fd5b508035906020013515156130fc565b3480156110ed57600080fd5b506106296004803603604081101561110457600080fd5b506001600160a01b038135811691602001351661319d565b34801561112857600080fd5b506107066131c8565b34801561113d57600080fd5b506105886004803603602081101561115457600080fd5b503515156131d7565b34801561116957600080fd5b50610629613242565b34801561117e57600080fd5b50610629613248565b34801561119357600080fd5b50610588600480360360208110156111aa57600080fd5b50356132a6565b3480156111bd57600080fd5b50610674613364565b3480156111d257600080fd5b50610588600480360360208110156111e957600080fd5b50356001600160a01b0316613372565b34801561120557600080fd5b506105886004803603602081101561121c57600080fd5b503515156133ec565b34801561123157600080fd5b506105886004803603602081101561124857600080fd5b50356001600160a01b0316613481565b34801561126457600080fd5b506105886004803603602081101561127b57600080fd5b5035151561357a565b34801561129057600080fd5b50610588613609565b6112a161388f565b6005546001600160a01b039081169116146112f1576040805162461bcd60e51b8152602060048201819052602482015260008051602061550a833981519152604482015290519081900360640190fd5b600854604080517f4e7b827f0000000000000000000000000000000000000000000000000000000081526001600160a01b03858116600483015291519190921691634e7b827f916024808301926020929190829003018186803b15801561135757600080fd5b505afa15801561136b573d6000803e3d6000fd5b505050506040513d602081101561138157600080fd5b5051156113d5576040805162461bcd60e51b815260206004820152601f60248201527f416c7265616479206578636c756465642066726f6d206469766964656e647300604482015290519081900360640190fd5b6008546040805162241fbd60e51b81526001600160a01b038581166004830152841515602483015291519190921691630483f7a091604480830192600092919082900301818387803b15801561142a57600080fd5b505af115801561143e573d6000803e3d6000fd5b505050505050565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156114d25780601f106114a7576101008083540402835291602001916114d2565b820191906000526020600020905b8154815290600101906020018083116114b557829003601f168201915b5050505050905090565b60195481565b60006114f66114ef61388f565b8484613893565b5060015b92915050565b61150861388f565b6005546001600160a01b03908116911614611558576040805162461bcd60e51b8152602060048201819052602482015260008051602061550a833981519152604482015290519081900360640190fd5b670de0b6b3a764000002601555565b61156f61388f565b6005546001600160a01b039081169116146115bf576040805162461bcd60e51b8152602060048201819052602482015260008051602061550a833981519152604482015290519081900360640190fd5b6005546006546040516001600160a01b0392831692909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600554600680546001600160a01b0319166001600160a01b03909216919091179055565b601c54640100000000900460ff1681565b60175481565b6007546001600160a01b031681565b61165061388f565b6005546001600160a01b039081169116146116a0576040805162461bcd60e51b8152602060048201819052602482015260008051602061550a833981519152604482015290519081900360640190fd5b601c8054911515620100000262ff000019909216919091179055565b60025490565b600e6020526000908152604090205460ff1681565b6116df61388f565b6005546001600160a01b0390811691161461172f576040805162461bcd60e51b8152602060048201819052602482015260008051602061550a833981519152604482015290519081900360640190fd5b600854604080517f1fa71a3b0000000000000000000000000000000000000000000000000000000081526004810184905290516001600160a01b0390921691631fa71a3b9160248082019260009290919082900301818387803b15801561179557600080fd5b505af11580156117a9573d6000803e3d6000fd5b5050505050565b60006117bd84848461397f565b61182d846117c961388f565b611828856040518060600160405280602881526020016154e2602891396001600160a01b038a1660009081526001602052604081209061180761388f565b6001600160a01b031681526020810191909152604001600020549190613e93565b613893565b5060019392505050565b61183f61388f565b6005546001600160a01b0390811691161461188f576040805162461bcd60e51b8152602060048201819052602482015260008051602061550a833981519152604482015290519081900360640190fd5b601c80547fffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff169055565b6118c161388f565b6005546001600160a01b03908116911614611911576040805162461bcd60e51b8152602060048201819052602482015260008051602061550a833981519152604482015290519081900360640190fd5b6000670de0b6b3a764000082025b838210156117a957600085858481811061193557fe5b905060200201356001600160a01b0316905061195233828461397f565b6001600160a01b038116600090815260106020526040902054611975908361382e565b6001600160a01b03909116600090815260106020908152604080832093909355600f905220805460ff19166001908117909155919091019061191f565b6008546001600160a01b031681565b6119c961388f565b6006546001600160a01b03908116911614611a155760405162461bcd60e51b815260040180806020018281038252602481526020018061539c6024913960400191505060405180910390fd5b6001600160a01b038116611a5a5760405162461bcd60e51b81526004018080602001828103825260268152602001806153c06026913960400191505060405180910390fd5b6006546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b600854604080517f85a6b3ae00000000000000000000000000000000000000000000000000000000815290516000926001600160a01b0316916385a6b3ae916004808301926020929190829003018186803b158015611b1457600080fd5b505afa158015611b28573d6000803e3d6000fd5b505050506040513d6020811015611b3e57600080fd5b5051905090565b601290565b600f6020526000908152604090205460ff1681565b60006114f6611b6c61388f565b846118288560016000611b7d61388f565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549061382e565b601a5481565b611bbb61388f565b6006546001600160a01b03908116911614611c075760405162461bcd60e51b815260040180806020018281038252602481526020018061539c6024913960400191505060405180910390fd5b611c118282613f2a565b5050565b60185481565b600c6020526000908152604090205460ff1681565b611c3861388f565b6005546001600160a01b03908116911614611c88576040805162461bcd60e51b8152602060048201819052602482015260008051602061550a833981519152604482015290519081900360640190fd5b8015611cfb576001600160a01b0382166000908152600e60205260409020805460ff191690556040805162461bcd60e51b815260206004820152601360248201527f416c726561647920626c61636b6c697374656400000000000000000000000000604482015290519081900360640190fd5b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b6009546001600160a01b031681565b601c546301000000900460ff1681565b60106020526000908152604090205481565b600854604080517fbc4c4b3700000000000000000000000000000000000000000000000000000000815233600482015260006024820181905291516001600160a01b039093169263bc4c4b3792604480840193602093929083900390910190829087803b158015611dc757600080fd5b505af1158015611ddb573d6000803e3d6000fd5b505050506040513d6020811015611c1157600080fd5b6001600160a01b03166000908152600d602052604090205460ff1690565b601c5462010000900460ff1681565b611e2661388f565b6005546001600160a01b03908116911614611e76576040805162461bcd60e51b8152602060048201819052602482015260008051602061550a833981519152604482015290519081900360640190fd5b670de0b6b3a764000002601655565b600854604080517f09bbedde00000000000000000000000000000000000000000000000000000000815290516000926001600160a01b0316916309bbedde916004808301926020929190829003018186803b158015611b1457600080fd5b611eeb61388f565b6005546001600160a01b03908116911614611f3b576040805162461bcd60e51b8152602060048201819052602482015260008051602061550a833981519152604482015290519081900360640190fd5b6007546000906001600160a01b0383811691161415611f8b5760405162461bcd60e51b81526004018080602001828103825260238152602001806154666023913960400191505060405180910390fd5b6007546040516001600160a01b03918216918416907f8fc842bbd331dfa973645f4ed48b11683d501ebf1352708d77a5da2ab49a576e90600090a3600780546001600160a01b0319166001600160a01b038481169190911791829055604080517fc45a015500000000000000000000000000000000000000000000000000000000815290516000939092169163c45a015591600480820192602092909190829003018186803b15801561203d57600080fd5b505afa158015612051573d6000803e3d6000fd5b505050506040513d602081101561206757600080fd5b5051600754604080516315ab88c960e31b815290516001600160a01b039384169363e6a4390593309391169163ad5c464891600480820192602092909190829003018186803b1580156120b957600080fd5b505afa1580156120cd573d6000803e3d6000fd5b505050506040513d60208110156120e357600080fd5b5051604080517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526001600160a01b039384166004820152929091166024830152516044808301926020929190829003018186803b15801561214b57600080fd5b505afa15801561215f573d6000803e3d6000fd5b505050506040513d602081101561217557600080fd5b5051600a549092508291506001600160a01b038083169116141561232057600760009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156121e157600080fd5b505afa1580156121f5573d6000803e3d6000fd5b505050506040513d602081101561220b57600080fd5b5051600754604080516315ab88c960e31b815290516001600160a01b039384169363c9c6539693309391169163ad5c464891600480820192602092909190829003018186803b15801561225d57600080fd5b505afa158015612271573d6000803e3d6000fd5b505050506040513d602081101561228757600080fd5b5051604080517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526001600160a01b0393841660048201529290911660248301525160448083019260209291908290030181600087803b1580156122f157600080fd5b505af1158015612305573d6000803e3d6000fd5b505050506040513d602081101561231b57600080fd5b505191505b6001600160a01b038381166000908152600c602052604090208054600160ff199091168117909155600980546001600160a01b031916858416179081905561236992169061400e565b505050565b61237661388f565b6005546001600160a01b039081169116146123c6576040805162461bcd60e51b8152602060048201819052602482015260008051602061550a833981519152604482015290519081900360640190fd5b60005b838110156117a957838214612425576040805162461bcd60e51b815260206004820152601960248201527f41727261792073697a6573206d75737420626520657175616c00000000000000604482015290519081900360640190fd5b600083838381811061243357fe5b90506020020135670de0b6b3a764000002905061246c3387878581811061245657fe5b905060200201356001600160a01b03168361397f565b506001016123c9565b600854604080517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152915160009392909216916370a0823191602480820192602092909190829003018186803b1580156124df57600080fd5b505afa1580156124f3573d6000803e3d6000fd5b505050506040513d602081101561250957600080fd5b505192915050565b601c5460ff1681565b6001600160a01b031660009081526020819052604090205490565b61253d61388f565b6005546001600160a01b0390811691161461258d576040805162461bcd60e51b8152602060048201819052602482015260008051602061550a833981519152604482015290519081900360640190fd5b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b601c54670100000000000000900460ff1681565b601c546601000000000000900460ff1681565b601c5465010000000000900460ff1681565b61261861388f565b6005546001600160a01b03908116911614612668576040805162461bcd60e51b8152602060048201819052602482015260008051602061550a833981519152604482015290519081900360640190fd5b601c80546001600160a01b039092166901000000000000000000027fffffff0000000000000000000000000000000000000000ffffffffffffffffff909216919091179055565b6126b761388f565b6005546001600160a01b03908116911614612707576040805162461bcd60e51b8152602060048201819052602482015260008051602061550a833981519152604482015290519081900360640190fd5b6008546001600160a01b03828116911614156127545760405162461bcd60e51b815260040180806020018281038252602d8152602001806155cd602d913960400191505060405180910390fd5b6000819050306001600160a01b0316816001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561279c57600080fd5b505afa1580156127b0573d6000803e3d6000fd5b505050506040513d60208110156127c657600080fd5b50516001600160a01b03161461280d5760405162461bcd60e51b81526004018080602001828103825260388152602001806154896038913960400191505060405180910390fd5b6040805162241fbd60e51b81526001600160a01b0383166004820181905260006024830181905292519092630483f7a0926044808201939182900301818387803b15801561285a57600080fd5b505af115801561286e573d6000803e3d6000fd5b50506040805162241fbd60e51b815230600482015260006024820181905291516001600160a01b0386169450630483f7a093506044808301939282900301818387803b1580156128bd57600080fd5b505af11580156128d1573d6000803e3d6000fd5b50505050806001600160a01b0316630483f7a06128ec612a7d565b60006040518363ffffffff1660e01b815260040180836001600160a01b03168152602001821515815260200192505050600060405180830381600087803b15801561293657600080fd5b505af115801561294a573d6000803e3d6000fd5b50506007546040805162241fbd60e51b81526001600160a01b03928316600482015260006024820181905291519286169450630483f7a093506044808201939182900301818387803b15801561299f57600080fd5b505af11580156129b3573d6000803e3d6000fd5b50506008546040516001600160a01b03918216935090851691507f90c7d74461c613da5efa97d90740869367d74ab3aa5837aa4ae9a975f954b7a890600090a3600880546001600160a01b0319166001600160a01b039290921691909117905550565b612a1e61388f565b6005546001600160a01b03908116911614612a6e576040805162461bcd60e51b8152602060048201819052602482015260008051602061550a833981519152604482015290519081900360640190fd5b670de0b6b3a764000002601a55565b6005546001600160a01b031690565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156114d25780601f106114a7576101008083540402835291602001916114d2565b612af561388f565b6005546001600160a01b03908116911614612b45576040805162461bcd60e51b8152602060048201819052602482015260008051602061550a833981519152604482015290519081900360640190fd5b601c80549115156301000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff909216919091179055565b60145481565b612b8c61388f565b6005546001600160a01b03908116911614612bdc576040805162461bcd60e51b8152602060048201819052602482015260008051602061550a833981519152604482015290519081900360640190fd5b6009546001600160a01b0383811691161415612c295760405162461bcd60e51b815260040180806020018281038252603581526020018061552a6035913960400191505060405180910390fd5b611c11828261400e565b612c3b61388f565b6005546001600160a01b03908116911614612c8b576040805162461bcd60e51b8152602060048201819052602482015260008051602061550a833981519152604482015290519081900360640190fd5b42601855601c805462ff000019169055565b600854604080517f6f2789ec00000000000000000000000000000000000000000000000000000000815290516000926001600160a01b031691636f2789ec916004808301926020929190829003018186803b158015611b1457600080fd5b60006114f6612d0861388f565b84611828856040518060600160405280602581526020016155a86025913960016000612d3261388f565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190613e93565b60125481565b600854604080517fa8b9d2400000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301529151600093929092169163a8b9d24091602480820192602092909190829003018186803b1580156124df57600080fd5b60006114f6612de061388f565b848461397f565b600854604080517ffbcbc0f10000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152915160009384938493849384938493169163fbcbc0f19160248083019260c0929190829003018186803b158015612e5757600080fd5b505afa158015612e6b573d6000803e3d6000fd5b505050506040513d60c0811015612e8157600080fd5b508051602082015160408301516060840151608085015160a090950151939c929b5090995097509195509350915050565b600b6020526000908152604090205460ff1681565b612ecf61388f565b6005546001600160a01b03908116911614612f1f576040805162461bcd60e51b8152602060048201819052602482015260008051602061550a833981519152604482015290519081900360640190fd5b6001600160a01b0382166000908152600d602052604090205460ff1615158115151415612f93576040805162461bcd60e51b815260206004820152601a60248201527f4163636f756e7420616c726561647920276578636c7564656427000000000000604482015290519081900360640190fd5b6001600160a01b0382166000818152600d6020908152604091829020805460ff1916851515908117909155825190815291517f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df79281900390910190a25050565b612ffb61388f565b6005546001600160a01b0390811691161461304b576040805162461bcd60e51b8152602060048201819052602482015260008051602061550a833981519152604482015290519081900360640190fd5b60128390556014829055601381905561306e81613068858561382e565b9061382e565b601755505050565b601b5481565b61308461388f565b6005546001600160a01b039081169116146130d4576040805162461bcd60e51b8152602060048201819052602482015260008051602061550a833981519152604482015290519081900360640190fd5b601d80546001600160a01b0319166001600160a01b0392909216919091179055565b60135481565b61310461388f565b6005546001600160a01b03908116911614613154576040805162461bcd60e51b8152602060048201819052602482015260008051602061550a833981519152604482015290519081900360640190fd5b670de0b6b3a7640000909102601955601c8054911515640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff909216919091179055565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6006546001600160a01b031690565b6131df61388f565b6005546001600160a01b0390811691161461322f576040805162461bcd60e51b8152602060048201819052602482015260008051602061550a833981519152604482015290519081900360640190fd5b601c805460ff1916911515919091179055565b60165481565b600854604080517fbe10b61400000000000000000000000000000000000000000000000000000000815290516000926001600160a01b03169163be10b614916004808301926020929190829003018186803b158015611b1457600080fd5b6132ae61388f565b6005546001600160a01b039081169116146132fe576040805162461bcd60e51b8152602060048201819052602482015260008051602061550a833981519152604482015290519081900360640190fd5b600854604080517fe98030c70000000000000000000000000000000000000000000000000000000081526004810184905290516001600160a01b039092169163e98030c79160248082019260009290919082900301818387803b15801561179557600080fd5b601c54610100900460ff1681565b61337a61388f565b6005546001600160a01b039081169116146133ca576040805162461bcd60e51b8152602060048201819052602482015260008051602061550a833981519152604482015290519081900360640190fd5b601e80546001600160a01b0319166001600160a01b0392909216919091179055565b6133f461388f565b6005546001600160a01b03908116911614613444576040805162461bcd60e51b8152602060048201819052602482015260008051602061550a833981519152604482015290519081900360640190fd5b601c8054911515670100000000000000027fffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff909216919091179055565b61348961388f565b6005546001600160a01b039081169116146134d9576040805162461bcd60e51b8152602060048201819052602482015260008051602061550a833981519152604482015290519081900360640190fd5b6001600160a01b03811661351e5760405162461bcd60e51b81526004018080602001828103825260268152602001806153c06026913960400191505060405180910390fd5b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b61358261388f565b6005546001600160a01b039081169116146135d2576040805162461bcd60e51b8152602060048201819052602482015260008051602061550a833981519152604482015290519081900360640190fd5b601c8054911515610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909216919091179055565b61361161388f565b6005546001600160a01b03908116911614613661576040805162461bcd60e51b8152602060048201819052602482015260008051602061550a833981519152604482015290519081900360640190fd5b600754604080517fc45a015500000000000000000000000000000000000000000000000000000000815290516000926001600160a01b03169163c45a0155916004808301926020929190829003018186803b1580156136bf57600080fd5b505afa1580156136d3573d6000803e3d6000fd5b505050506040513d60208110156136e957600080fd5b5051600754604080516315ab88c960e31b815290516001600160a01b039384169363c9c6539693309391169163ad5c464891600480820192602092909190829003018186803b15801561373b57600080fd5b505afa15801561374f573d6000803e3d6000fd5b505050506040513d602081101561376557600080fd5b5051604080517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526001600160a01b0393841660048201529290911660248301525160448083019260209291908290030181600087803b1580156137cf57600080fd5b505af11580156137e3573d6000803e3d6000fd5b505050506040513d60208110156137f957600080fd5b5051600980546001600160a01b0319166001600160a01b03808416919091179182905591925061382b9116600161400e565b50565b600082820183811015613888576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b3390565b6001600160a01b0383166138d85760405162461bcd60e51b81526004018080602001828103825260248152602001806155846024913960400191505060405180910390fd5b6001600160a01b03821661391d5760405162461bcd60e51b81526004018080602001828103825260228152602001806153e66022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166139c45760405162461bcd60e51b815260040180806020018281038252602581526020018061555f6025913960400191505060405180910390fd5b6001600160a01b038216613a095760405162461bcd60e51b81526004018080602001828103825260238152602001806153796023913960400191505060405180910390fd5b6001600160a01b0383166000908152600e602052604090205460ff16158015613a4b57506001600160a01b0382166000908152600e602052604090205460ff16155b613a9c576040805162461bcd60e51b815260206004820152601360248201527f426c61636b6c6973746564206164647265737300000000000000000000000000604482015290519081900360640190fd5b613aa4612a7d565b6001600160a01b0316836001600160a01b031614613b1a57601c5462010000900460ff1615613b1a576040805162461bcd60e51b815260206004820152600e60248201527f74726164696e6720706175736564000000000000000000000000000000000000604482015290519081900360640190fd5b613b22612a7d565b6001600160a01b0316836001600160a01b031614158015613b5c5750613b46612a7d565b6001600160a01b0316826001600160a01b031614155b15613b6c57613b6c838383614140565b613b7683826145a3565b80613b8c57613b8783836000614c4b565b612369565b6000613b973061251a565b601654601c549192508210159060ff168015613bc25750601c5468010000000000000000900460ff16155b8015613bdc57506009546001600160a01b03868116911614155b8015613be55750805b15613c2357601c805468ff0000000000000000191668010000000000000000179055613c1082614d9b565b601c805468ff0000000000000000191690555b601c546001600160a01b0386166000908152600d602052604090205460ff68010000000000000000909204821615911680613c7657506001600160a01b0385166000908152600d602052604090205460ff165b15613c7f575060005b8015613d7a576000613ca76064613ca160175488614f2490919063ffffffff16565b90614f7d565b9050613cb1612a7d565b6001600160a01b0316876001600160a01b031614158015613ce057506009546001600160a01b03888116911614155b8015613cf557506001600160a01b0387163014155b8015613d0f57506007546001600160a01b03888116911614155b8015613d3f57506007546001600160a01b0387811691161480613d3f57506009546001600160a01b038781169116145b15613d6157613d5e6064613ca1601b5488614f2490919063ffffffff16565b90505b613d6b8582614fbf565b9450613d78873083614c4b565b505b613d85868686614c4b565b6001600160a01b0385166000908152600e602052604090205460ff1661143e576008546001600160a01b031663e30443bc87613dc08161251a565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b158015613e0657600080fd5b505af1925050508015613e17575060015b506008546001600160a01b031663e30443bc86613e338161251a565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b158015613e7957600080fd5b505af1925050508015613e8a575060015b61143e5761143e565b60008184841115613f225760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613ee7578181015183820152602001613ecf565b50505050905090810190601f168015613f145780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6001600160a01b038216613f85576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b600254613f92908261382e565b6002556001600160a01b038216600090815260208190526040902054613fb8908261382e565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6001600160a01b0382166000908152600b602052604090205460ff161515811515141561406c5760405162461bcd60e51b81526004018080602001828103825260388152602001806154086038913960400191505060405180910390fd5b6001600160a01b0382166000908152600b60205260409020805460ff19168215801591909117909155614104576008546040805162241fbd60e51b81526001600160a01b0385811660048301526000602483018190529251931692630483f7a09260448084019391929182900301818387803b1580156140eb57600080fd5b505af11580156140ff573d6000803e3d6000fd5b505050505b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b601c546301000000900460ff16156141b9576001600160a01b03831630146141b9576015548111156141b9576040805162461bcd60e51b815260206004820152601560248201527f65786365656473206d617820747820616d6f756e740000000000000000000000604482015290519081900360640190fd5b601c546601000000000000900460ff16156142a3576001600160a01b03831630148015906141f057506001600160a01b0382163014155b801561420a57506007546001600160a01b03838116911614155b801561422457506009546001600160a01b03838116911614155b156142a35732600090815260116020526040902054601e42011015614290576040805162461bcd60e51b815260206004820152601260248201527f436f6f6c646f776e20696e206566666563740000000000000000000000000000604482015290519081900360640190fd5b3260009081526011602052604090204290555b601c5465010000000000900460ff161561439d576009546001600160a01b0384811691161480156142e257506007546001600160a01b03838116911614155b80156142f757506001600160a01b0382163014155b801561430c57506001600160a01b0383163014155b1561432657326001600160a01b0383161461432657600080fd5b601854421115801561434557506009546001600160a01b038481169116145b801561435f57506007546001600160a01b03838116911614155b801561437457506001600160a01b0382163014155b1561439d576001600160a01b0382166000908152600e60205260409020805460ff191660011790555b601c54640100000000900460ff1615614428576001600160a01b0383166000908152600b602052604090205460ff1680156143e657506007546001600160a01b03838116911614155b80156143fb57506001600160a01b0382163014155b1561442857600061440b8361251a565b60195490915061441b828461382e565b111561442657600080fd5b505b601c54670100000000000000900460ff1615612369576001600160a01b038316301480159061446057506001600160a01b0382163014155b801561448557506001600160a01b0383166000908152600c602052604090205460ff16155b80156144aa57506001600160a01b0383166000908152600b602052604090205460ff16155b80156144cf57506001600160a01b0382166000908152600c602052604090205460ff16155b80156144f457506001600160a01b0382166000908152600b602052604090205460ff16155b1561236957600c600061450561388f565b6001600160a01b0316815260208101919091526040016000205460ff16806145525750600b600061453461388f565b6001600160a01b0316815260208101919091526040016000205460ff165b612369576040805162461bcd60e51b815260206004820152600c60248201527f4e6f207472616e73666572730000000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b0382166000908152600f602052604090205460ff1615611c1157601a54811061461a576040805162461bcd60e51b815260206004820152600f60248201527f566573742073656c6c206c696d69740000000000000000000000000000000000604482015290519081900360640190fd5b60006146258361251a565b6001600160a01b03841660009081526010602052604081205460185492935091614650904290614fbf565b90506201518081116146a9576040805162461bcd60e51b815260206004820152601660248201527f43616e206e6f742073656c6c2066697273742064617900000000000000000000604482015290519081900360640190fd5b6224ea00811015614714576146c4600a613ca1846008614f24565b6146ce8486614fbf565b11614714576040805162461bcd60e51b815260206004820152601160248201527010d85b89dd08189e5c185cdcc81d995cdd607a1b604482015290519081900360640190fd5b6249d40081101561477f5761472f6064613ca184604b614f24565b6147398486614fbf565b1161477f576040805162461bcd60e51b815260206004820152601160248201527010d85b89dd08189e5c185cdcc81d995cdd607a1b604482015290519081900360640190fd5b626ebe008110156147ea5761479a6064613ca1846046614f24565b6147a48486614fbf565b116147ea576040805162461bcd60e51b815260206004820152601160248201527010d85b89dd08189e5c185cdcc81d995cdd607a1b604482015290519081900360640190fd5b6293a800811015614855576148056064613ca1846041614f24565b61480f8486614fbf565b11614855576040805162461bcd60e51b815260206004820152601160248201527010d85b89dd08189e5c185cdcc81d995cdd607a1b604482015290519081900360640190fd5b62b892008110156148c0576148706064613ca184603c614f24565b61487a8486614fbf565b116148c0576040805162461bcd60e51b815260206004820152601160248201527010d85b89dd08189e5c185cdcc81d995cdd607a1b604482015290519081900360640190fd5b62dd7c0081101561492b576148db6064613ca1846037614f24565b6148e58486614fbf565b1161492b576040805162461bcd60e51b815260206004820152601160248201527010d85b89dd08189e5c185cdcc81d995cdd607a1b604482015290519081900360640190fd5b630102660081101561499257614942826002614f7d565b61494c8486614fbf565b11614992576040805162461bcd60e51b815260206004820152601160248201527010d85b89dd08189e5c185cdcc81d995cdd607a1b604482015290519081900360640190fd5b63012750008110156149fe576149ae6064613ca184602c614f24565b6149b88486614fbf565b116149fe576040805162461bcd60e51b815260206004820152601160248201527010d85b89dd08189e5c185cdcc81d995cdd607a1b604482015290519081900360640190fd5b63014c3a00811015614a6a57614a1a6064613ca1846026614f24565b614a248486614fbf565b11614a6a576040805162461bcd60e51b815260206004820152601160248201527010d85b89dd08189e5c185cdcc81d995cdd607a1b604482015290519081900360640190fd5b6301712400811015614ad657614a866064613ca1846020614f24565b614a908486614fbf565b11614ad6576040805162461bcd60e51b815260206004820152601160248201527010d85b89dd08189e5c185cdcc81d995cdd607a1b604482015290519081900360640190fd5b6301960e00811015614b4257614af26064613ca1846018614f24565b614afc8486614fbf565b11614b42576040805162461bcd60e51b815260206004820152601160248201527010d85b89dd08189e5c185cdcc81d995cdd607a1b604482015290519081900360640190fd5b6301baf800811015614bae57614b5e6064613ca1846010614f24565b614b688486614fbf565b11614bae576040805162461bcd60e51b815260206004820152601160248201527010d85b89dd08189e5c185cdcc81d995cdd607a1b604482015290519081900360640190fd5b6301dfe200811015614c1a57614bca6064613ca1846008614f24565b614bd48486614fbf565b11614c1a576040805162461bcd60e51b815260206004820152601160248201527010d85b89dd08189e5c185cdcc81d995cdd607a1b604482015290519081900360640190fd5b6301dfe2008111156117a957505050506001600160a01b03166000908152600f60205260409020805460ff19169055565b6001600160a01b038316614c905760405162461bcd60e51b815260040180806020018281038252602581526020018061555f6025913960400191505060405180910390fd5b6001600160a01b038216614cd55760405162461bcd60e51b81526004018080602001828103825260238152602001806153796023913960400191505060405180910390fd5b614d1281604051806060016040528060268152602001615440602691396001600160a01b0386166000908152602081905260409020549190613e93565b6001600160a01b038085166000908152602081905260408082209390935590841681522054614d41908261382e565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000614db8601754613ca160145485614f2490919063ffffffff16565b90506000614dc7826002614f7d565b90506000614dd58483614fbf565b905047614de182615001565b6000614ded4783614fbf565b90506000614e116002613ca1601754613ca160145487614f2490919063ffffffff16565b90506000614e356003613ca1601754613ca160135488614f2490919063ffffffff16565b601c54604051919250690100000000000000000090046001600160a01b0316906108fc8315029083906000818181858888f19350505050158015614e7d573d6000803e3d6000fd5b50601d546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015614eb8573d6000803e3d6000fd5b50601e546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015614ef3573d6000803e3d6000fd5b50614efe86836151ad565b601c544790610100900460ff1615614f1957614f1981615280565b505050505050505050565b600082614f33575060006114fa565b82820282848281614f4057fe5b04146138885760405162461bcd60e51b81526004018080602001828103825260218152602001806154c16021913960400191505060405180910390fd5b600061388883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250615313565b600061388883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613e93565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061503057fe5b6001600160a01b03928316602091820292909201810191909152600754604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561508457600080fd5b505afa158015615098573d6000803e3d6000fd5b505050506040513d60208110156150ae57600080fd5b50518151829060019081106150bf57fe5b6001600160a01b0392831660209182029290920101526007546150e59130911684613893565b6007546040517f791ac947000000000000000000000000000000000000000000000000000000008152600481018481526000602483018190523060648401819052426084850181905260a060448601908152875160a487015287516001600160a01b039097169663791ac947968a968a9594939092909160c40190602080880191028083838b5b8381101561518457818101518382015260200161516c565b505050509050019650505050505050600060405180830381600087803b15801561142a57600080fd5b6007546151c59030906001600160a01b031684613893565b6007546001600160a01b031663f305d7198230856000806151e4612a7d565b426040518863ffffffff1660e01b815260040180876001600160a01b03168152602001868152602001858152602001848152602001836001600160a01b0316815260200182815260200196505050505050506060604051808303818588803b15801561524f57600080fd5b505af1158015615263573d6000803e3d6000fd5b50505050506040513d606081101561527a57600080fd5b50505050565b6008546040516000916001600160a01b03169083908381818185875af1925050503d80600081146152cd576040519150601f19603f3d011682016040523d82523d6000602084013e6152d2565b606091505b505090508015611c11576040805183815290517fb0cc2628d6d644cf6be9d8110e142297ac910d6d8026d795a99f272fd9ad60b19181900360200190a15050565b600081836153625760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315613ee7578181015183820152602001613ecf565b50600083858161536e57fe5b049594505050505056fe45524332303a207472616e7366657220746f20746865207a65726f20616464726573734f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726d696e744f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573734175746f6d61746564206d61726b6574206d616b6572207061697220697320616c72656164792073657420746f20746861742076616c756545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636554686520726f7574657220616c72656164792068617320746861742061646472657373546865206e6577206469766964656e6420747261636b6572206d757374206265206f776e656420627920746f6b656e20636f6e7472616374536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572506169722063616e6e6f742062652072656d6f7665642066726f6d206175746f6d617465644d61726b65744d616b6572506169727345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f546865206469766964656e6420747261636b657220616c72656164792068617320746861742061646472657373a26469706673582212206e073d9ebf504856a4b009bb16a7fbc745e4b713cc07cde8a1e57c90a0dbb58564736f6c6343000706003360806040523480156200001157600080fd5b50604051806040016040528060138152602001722b21afa234bb34b232b7322faa3930b1b5b2b960691b815250604051806040016040528060138152602001722b21afa234bb34b232b7322faa3930b1b5b2b960691b815250818160006200007e6200012060201b60201c565b600080546001600160a01b0383166001600160a01b031991821681178355600180549092168117909155604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3508151620000ea90600590602085019062000124565b5080516200010090600690602084019062000124565b5050610e10600e5550506a0c685fa11e01ec6f00000060105550620001d0565b3390565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826200015c5760008555620001a7565b82601f106200017757805160ff1916838001178555620001a7565b82800160010185558215620001a7579182015b82811115620001a75782518255916020019190600101906200018a565b50620001b5929150620001b9565b5090565b5b80821115620001b55760008155600101620001ba565b61217080620001e06000396000f3fe6080604052600436106102385760003560e01c806370a0823111610138578063aafd847a116100b0578063df56aaaf1161007f578063e98030c711610064578063e98030c714610805578063f2fde38b1461082f578063fbcbc0f11461086257610247565b8063df56aaaf146107b7578063e30443bc146107cc57610247565b8063aafd847a146106f9578063bc4c4b371461072c578063be10b61414610767578063dd62ed3e1461077c57610247565b806391b89fba11610107578063a457c2d7116100ec578063a457c2d714610654578063a8b9d2401461068d578063a9059cbb146106c057610247565b806391b89fba1461060c57806395d89b411461063f57610247565b806370a082311461057e578063715018a6146105b157806385a6b3ae146105c65780638da5cb5b146105db57610247565b8063226cfa3d116101cb578063313ce5671161019a5780634e7b827f1161017f5780634e7b827f146105215780636a474002146105545780636f2789ec1461056957610247565b8063313ce567146104bd57806339509351146104e857610247565b8063226cfa3d146103e157806323b872dd1461041457806327ce0147146104575780632c9fd2291461048a57610247565b806309bbedde1161020757806309bbedde1461036657806312da9de11461038d57806318160ddd146103a25780631fa71a3b146103b757610247565b806303c833021461024c5780630483f7a01461025457806306fdde031461028f578063095ea7b31461031957610247565b36610247576102456108d2565b005b600080fd5b6102456108d2565b34801561026057600080fd5b506102456004803603604081101561027757600080fd5b506001600160a01b0381351690602001351515610970565b34801561029b57600080fd5b506102a4610abf565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102de5781810151838201526020016102c6565b50505050905090810190601f16801561030b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561032557600080fd5b506103526004803603604081101561033c57600080fd5b506001600160a01b038135169060200135610b55565b604080519115158252519081900360200190f35b34801561037257600080fd5b5061037b610b73565b60408051918252519081900360200190f35b34801561039957600080fd5b50610245610b79565b3480156103ae57600080fd5b5061037b610c52565b3480156103c357600080fd5b50610245600480360360208110156103da57600080fd5b5035610c58565b3480156103ed57600080fd5b5061037b6004803603602081101561040457600080fd5b50356001600160a01b0316610d3f565b34801561042057600080fd5b506103526004803603606081101561043757600080fd5b506001600160a01b03813581169160208101359091169060400135610d51565b34801561046357600080fd5b5061037b6004803603602081101561047a57600080fd5b50356001600160a01b0316610dd8565b34801561049657600080fd5b50610245600480360360208110156104ad57600080fd5b50356001600160a01b0316610e44565b3480156104c957600080fd5b506104d2610f46565b6040805160ff9092168252519081900360200190f35b3480156104f457600080fd5b506103526004803603604081101561050b57600080fd5b506001600160a01b038135169060200135610f4b565b34801561052d57600080fd5b506103526004803603602081101561054457600080fd5b50356001600160a01b0316610f99565b34801561056057600080fd5b50610245610fae565b34801561057557600080fd5b5061037b610fe5565b34801561058a57600080fd5b5061037b600480360360208110156105a157600080fd5b50356001600160a01b0316610feb565b3480156105bd57600080fd5b50610245611006565b3480156105d257600080fd5b5061037b6110c7565b3480156105e757600080fd5b506105f06110cd565b604080516001600160a01b039092168252519081900360200190f35b34801561061857600080fd5b5061037b6004803603602081101561062f57600080fd5b50356001600160a01b03166110dc565b34801561064b57600080fd5b506102a46110e7565b34801561066057600080fd5b506103526004803603604081101561067757600080fd5b506001600160a01b038135169060200135611148565b34801561069957600080fd5b5061037b600480360360208110156106b057600080fd5b50356001600160a01b03166111b0565b3480156106cc57600080fd5b50610352600480360360408110156106e357600080fd5b506001600160a01b0381351690602001356111dc565b34801561070557600080fd5b5061037b6004803603602081101561071c57600080fd5b50356001600160a01b03166111f0565b34801561073857600080fd5b506103526004803603604081101561074f57600080fd5b506001600160a01b038135169060200135151561120b565b34801561077357600080fd5b5061037b6112f2565b34801561078857600080fd5b5061037b6004803603604081101561079f57600080fd5b506001600160a01b03813581169160200135166112f8565b3480156107c357600080fd5b506105f0611323565b3480156107d857600080fd5b50610245600480360360408110156107ef57600080fd5b506001600160a01b038135169060200135611332565b34801561081157600080fd5b506102456004803603602081101561082857600080fd5b5035611492565b34801561083b57600080fd5b506102456004803603602081101561085257600080fd5b50356001600160a01b03166115c0565b34801561086e57600080fd5b506108956004803603602081101561088557600080fd5b50356001600160a01b03166116d7565b604080516001600160a01b0390971687526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190f35b60006108dc610c52565b116108e657600080fd5b341561096e576109246108f7610c52565b6109123470010000000000000000000000000000000061174f565b8161091957fe5b6007549190046117af565b60075560408051348152905133917fa493a9229478c3fcd73f66d2cdeb7f94fd0f341da924d1054236d78454116511919081900360200190a2600a5461096a90346117af565b600a555b565b610978611809565b6000546001600160a01b039081169116146109da576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b0382166000908152600c602052604090205460ff1615610a0057600080fd5b6001600160a01b0382166000908152600c60205260408120805460ff19166001179055610a2e90839061180d565b8015610a87576001600160a01b0382166000908152600b602052604090205460ff1615610a87576001600160a01b0382166000908152600b60205260409020805460ff19169055600f54610a83906001611867565b600f555b6040516001600160a01b038316907fa878b31040b2e6d0a9a3d3361209db3908ba62014b0dca52adbaee451d128b2590600090a25050565b60058054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610b4b5780601f10610b2057610100808354040283529160200191610b4b565b820191906000526020600020905b815481529060010190602001808311610b2e57829003601f168201915b5050505050905090565b6000610b69610b62611809565b84846118a9565b5060015b92915050565b600f5490565b610b81611809565b6000546001600160a01b03908116911614610be3576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546001546040516001600160a01b039283169392909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000546001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03909216919091179055565b60045490565b610c60611809565b6000546001600160a01b03908116911614610cc2576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001811015610d025760405162461bcd60e51b8152600401808060200182810382526034815260200180611f396034913960400191505060405180910390fd5b60105460405182907f9c9571fb23d65fec0768248b245e0bee0cd9e9036a4a9f9e8e417eb15188678590600090a3670de0b6b3a764000002601055565b600d6020526000908152604090205481565b6000610d5e848484611995565b610dce84610d6a611809565b610dc985604051806060016040528060288152602001612021602891396001600160a01b038a16600090815260036020526040812090610da8611809565b6001600160a01b0316815260208101919091526040016000205491906119cc565b6118a9565b5060019392505050565b6001600160a01b03811660009081526008602052604081205470010000000000000000000000000000000090610e3490610e2f90610e29610e24610e1b88610feb565b6007549061174f565b611a63565b90611a73565b611aa6565b81610e3b57fe5b0490505b919050565b610e4c611809565b6001546001600160a01b03908116911614610e985760405162461bcd60e51b8152600401808060200182810382526024815260200180611ecd6024913960400191505060405180910390fd5b6001600160a01b038116610edd5760405162461bcd60e51b8152600401808060200182810382526026815260200180611ef16026913960400191505060405180910390fd5b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b601290565b6000610b69610f58611809565b84610dc98560036000610f69611809565b6001600160a01b03908116825260208083019390935260409182016000908120918c1681529252902054906117af565b600c6020526000908152604090205460ff1681565b60405162461bcd60e51b8152600401808060200182810382526067815260200180611f6d6067913960800191505060405180910390fd5b600e5481565b6001600160a01b031660009081526002602052604090205490565b61100e611809565b6000546001600160a01b03908116911614611070576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a36000805473ffffffffffffffffffffffffffffffffffffffff19169055565b600a5481565b6000546001600160a01b031690565b6000610b6d826111b0565b60068054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610b4b5780601f10610b2057610100808354040283529160200191610b4b565b6000610b69611155611809565b84610dc985604051806060016040528060258152602001612116602591396003600061117f611809565b6001600160a01b03908116825260208083019390935260409182016000908120918d168152925290205491906119cc565b6001600160a01b038116600090815260096020526040812054610b6d906111d684610dd8565b90611867565b6000610b696111e9611809565b8484611995565b6001600160a01b031660009081526009602052604090205490565b6000611215611809565b6000546001600160a01b03908116911614611277576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600061128284611ab9565b905080156112e8576001600160a01b0384166000818152600d60209081526040918290204290558151848152915186151593927fa2c38e2d2fb7e3e1912d937fd1ca11ed6d51864dee4cfa7a7bf02becd7acf09292908290030190a36001915050610b6d565b5060009392505050565b60105481565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b6001546001600160a01b031690565b61133a611809565b6000546001600160a01b0390811691161461139c576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b0382166000908152600c602052604090205460ff16156113c25761148e565b6010548110611430576113d5828261180d565b6001600160a01b0382166000908152600b602052604090205460ff1661142b576001600160a01b0382166000908152600b60205260409020805460ff19166001908117909155600f54611427916117af565b600f555b61148e565b61143b82600061180d565b6001600160a01b0382166000908152600b602052604090205460ff161561148e576001600160a01b0382166000908152600b60205260409020805460ff19169055600f5461148a906001611867565b600f555b5050565b61149a611809565b6000546001600160a01b039081169116146114fc576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b610e1081101580156115115750620151808111155b61154c5760405162461bcd60e51b815260040180806020018281038252604b815260200180612049604b913960600191505060405180910390fd5b600e5481141561158d5760405162461bcd60e51b815260040180806020018281038252603d8152602001806120d9603d913960400191505060405180910390fd5b600e5460405182907f474ea64804364a1e29a4487ddb63c3342a2dd826ccd8acf48825e680a0e6f20f90600090a3600e55565b6115c8611809565b6000546001600160a01b0390811691161461162a576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b03811661166f5760405162461bcd60e51b8152600401808060200182810382526026815260200180611ef16026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b806000808080806116e7866111b0565b94506116f286610dd8565b6001600160a01b0387166000908152600d602052604090205490945092508261171c57600061172a565b600e5461172a9084906117af565b915042821161173a576000611744565b6117448242611867565b905091939550919395565b60008261175e57506000610b6d565b8282028284828161176b57fe5b04146117a85760405162461bcd60e51b8152600401808060200182810382526021815260200180611fd46021913960400191505060405180910390fd5b9392505050565b6000828201838110156117a8576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b3390565b600061181883610feb565b90508082111561184057600061182e8383611867565b905061183a8482611bfa565b50611862565b808210156118625760006118548284611867565b90506118608482611c5e565b505b505050565b60006117a883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506119cc565b6001600160a01b0383166118ee5760405162461bcd60e51b81526004018080602001828103825260248152602001806120b56024913960400191505060405180910390fd5b6001600160a01b0382166119335760405162461bcd60e51b8152600401808060200182810382526022815260200180611f176022913960400191505060405180910390fd5b6001600160a01b03808416600081815260036020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b60405162461bcd60e51b815260040180806020018281038252602c815260200180611ff5602c913960400191505060405180910390fd5b60008184841115611a5b5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611a20578181015183820152602001611a08565b50505050905090810190601f168015611a4d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008181811215610b6d57600080fd5b6000828201818312801590611a885750838112155b80611a9d5750600083128015611a9d57508381125b6117a857600080fd5b600080821215611ab557600080fd5b5090565b600080611ac5836111b0565b90508015611bf1576001600160a01b038316600090815260096020526040902054611af090826117af565b6001600160a01b038416600081815260096020908152604091829020939093558051848152905191927fee503bee2bb6a87e57bc57db795f98137327401a0e7b7ce42e37926cc1a9ca4d92918290030190a26040516000906001600160a01b03851690610bb890849084818181858888f193505050503d8060008114611b92576040519150601f19603f3d011682016040523d82523d6000602084013e611b97565b606091505b5050905080611be9576001600160a01b038416600090815260096020526040902054611bc39083611867565b6001600160a01b0385166000908152600960205260408120919091559250610e3f915050565b509050610e3f565b50600092915050565b611c048282611ca2565b611c3e611c1f610e248360075461174f90919063ffffffff16565b6001600160a01b03841660009081526008602052604090205490611d88565b6001600160a01b0390921660009081526008602052604090209190915550565b611c688282611dba565b611c3e611c83610e248360075461174f90919063ffffffff16565b6001600160a01b03841660009081526008602052604090205490611a73565b6001600160a01b038216611cfd576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b600454611d0a90826117af565b6004556001600160a01b038216600090815260026020526040902054611d3090826117af565b6001600160a01b03831660008181526002602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6000818303818312801590611d9d5750838113155b80611a9d5750600083128015611a9d57508381136117a857600080fd5b6001600160a01b038216611dff5760405162461bcd60e51b81526004018080602001828103825260218152602001806120946021913960400191505060405180910390fd5b611e3c81604051806060016040528060228152602001611eab602291396001600160a01b03851660009081526002602052604090205491906119cc565b6001600160a01b038316600090815260026020526040902055600454611e629082611867565b6004556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3505056fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726d696e744f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f2061646472657373566972616c5f4469766964656e645f547261636b65723a206e65774d696e696d756d546f6b656e206d6f7265203120746f6b656e566972616c5f4469766964656e645f547261636b65723a2077697468647261774469766964656e642064697361626c65642e20557365207468652027636c61696d272066756e6374696f6e206f6e20746865206d61696e20564952414c20636f6e74726163742e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77566972616c5f4469766964656e645f547261636b65723a204e6f207472616e736665727320616c6c6f77656445524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365566972616c5f4469766964656e645f547261636b65723a20636c61696d57616974206d757374206265207570646174656420746f206265747765656e203120616e6420323420686f75727345524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373566972616c5f4469766964656e645f547261636b65723a2043616e6e6f742075706461746520636c61696d5761697420746f2073616d652076616c756545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220ffbb4c2745d2ed5b10be7f91102b17b7c8c4c5e5934ed41f7dcb1061c2f828f864736f6c63430007060033

Deployed Bytecode

0x6080604052600436106105415760003560e01c806370a08231116102af578063ad56c13c11610179578063e01af92c116100d6578063ecde9c8e1161008a578063f2fde38b1161006f578063f2fde38b14611225578063f56a111714611258578063fb1c80c51461128457610548565b8063ecde9c8e146111c6578063f1f3142c146111f957610548565b8063e6bd610d116100bb578063e6bd610d14611172578063e98030c714611187578063eb2889f2146111b157610548565b8063e01af92c14611131578063e2f456051461115d57610548565b8063d406a1ec1161012d578063dc6ba80311610112578063dc6ba803146110af578063dd62ed3e146110e1578063df56aaaf1461111c57610548565b8063d406a1ec14611067578063d58f2f271461109a57610548565b8063c02466681161015e578063c024666814610fe1578063cec10c111461101c578063d0a398141461105257610548565b8063ad56c13c14610f3e578063b62496f514610fae57610548565b806395d89b4111610227578063a26579ad116101db578063a4c9e07f116101c0578063a4c9e07f14610ebd578063a8b9d24014610ed2578063a9059cbb14610f0557610548565b8063a26579ad14610e6f578063a457c2d714610e8457610548565b806398118cb41161020c57806398118cb414610e0a5780639a7a23d614610e1f5780639b6c3ef514610e5a57610548565b806395d89b4114610dc957806395f6f56714610dde57610548565b80637b4cf05f1161027e57806388bdd9be1161026357806388bdd9be14610d575780638c3e7c1d14610d8a5780638da5cb5b14610db457610548565b80637b4cf05f14610d0f57806386349e0d14610d2457610548565b806370a0823114610c9d578063715018a614610cd0578063736dc68414610ce5578063787a08a614610cfa57610548565b8063313ce5671161040b5780634e5f72b61161036857806364b0f6531161031c57806367243482116103015780636724348214610b865780636843cd8414610c555780636ddd171314610c8857610548565b806364b0f65314610b3e57806365b8dbc014610b5357610548565b80634fbee1931161034d5780634fbee19314610acc5780635c975abb14610aff5780636402511e14610b1457610548565b80634e5f72b614610a845780634e71d92d14610ab757610548565b8063423ad375116103bf578063455a4396116103a4578063455a439614610a1f57806349bd5a5e14610a5a5780634e45e92a14610a6f57610548565b8063423ad375146109d7578063443ad4d3146109ec57610548565b806339509351116103f057806339509351146109505780633e2763ba1461098957806340c10f191461099e57610548565b8063313ce567146108f2578063369c8ea21461091d57610548565b806316c38b3c116104b957806325c608161161046d5780632c1f5216116104525780632c1f5216146108955780632c9fd229146108aa57806330bb4cff146108dd57610548565b806325c60816146108035780632a32cb9f1461081857610548565b80631cdd3be31161049e5780631cdd3be3146107635780631fa71a3b1461079657806323b872dd146107c057610548565b806316c38b3c1461072257806318160ddd1461074e57610548565b80630fb3701c1161051057806312db0016116104f557806312db0016146106c757806313114a9d146106dc5780631694505e146106f157610548565b80630fb3701c1461068857806312da9de1146106b257610548565b80630483f7a01461054d57806306fdde031461058a578063095d2d3314610614578063095ea7b31461063b57610548565b3661054857005b600080fd5b34801561055957600080fd5b506105886004803603604081101561057057600080fd5b506001600160a01b0381351690602001351515611299565b005b34801561059657600080fd5b5061059f611446565b6040805160208082528351818301528351919283929083019185019080838360005b838110156105d95781810151838201526020016105c1565b50505050905090810190601f1680156106065780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561062057600080fd5b506106296114dc565b60408051918252519081900360200190f35b34801561064757600080fd5b506106746004803603604081101561065e57600080fd5b506001600160a01b0381351690602001356114e2565b604080519115158252519081900360200190f35b34801561069457600080fd5b50610588600480360360208110156106ab57600080fd5b5035611500565b3480156106be57600080fd5b50610588611567565b3480156106d357600080fd5b50610674611622565b3480156106e857600080fd5b50610629611633565b3480156106fd57600080fd5b50610706611639565b604080516001600160a01b039092168252519081900360200190f35b34801561072e57600080fd5b506105886004803603602081101561074557600080fd5b50351515611648565b34801561075a57600080fd5b506106296116bc565b34801561076f57600080fd5b506106746004803603602081101561078657600080fd5b50356001600160a01b03166116c2565b3480156107a257600080fd5b50610588600480360360208110156107b957600080fd5b50356116d7565b3480156107cc57600080fd5b50610674600480360360608110156107e357600080fd5b506001600160a01b038135811691602081013590911690604001356117b0565b34801561080f57600080fd5b50610588611837565b34801561082457600080fd5b506105886004803603604081101561083b57600080fd5b81019060208101813564010000000081111561085657600080fd5b82018360208201111561086857600080fd5b8035906020019184602083028401116401000000008311171561088a57600080fd5b9193509150356118b9565b3480156108a157600080fd5b506107066119b2565b3480156108b657600080fd5b50610588600480360360208110156108cd57600080fd5b50356001600160a01b03166119c1565b3480156108e957600080fd5b50610629611ab6565b3480156108fe57600080fd5b50610907611b45565b6040805160ff9092168252519081900360200190f35b34801561092957600080fd5b506106746004803603602081101561094057600080fd5b50356001600160a01b0316611b4a565b34801561095c57600080fd5b506106746004803603604081101561097357600080fd5b506001600160a01b038135169060200135611b5f565b34801561099557600080fd5b50610629611bad565b3480156109aa57600080fd5b50610588600480360360408110156109c157600080fd5b506001600160a01b038135169060200135611bb3565b3480156109e357600080fd5b50610629611c15565b3480156109f857600080fd5b5061067460048036036020811015610a0f57600080fd5b50356001600160a01b0316611c1b565b348015610a2b57600080fd5b5061058860048036036040811015610a4257600080fd5b506001600160a01b0381351690602001351515611c30565b348015610a6657600080fd5b50610706611d26565b348015610a7b57600080fd5b50610674611d35565b348015610a9057600080fd5b5061062960048036036020811015610aa757600080fd5b50356001600160a01b0316611d45565b348015610ac357600080fd5b50610588611d57565b348015610ad857600080fd5b5061067460048036036020811015610aef57600080fd5b50356001600160a01b0316611df1565b348015610b0b57600080fd5b50610674611e0f565b348015610b2057600080fd5b5061058860048036036020811015610b3757600080fd5b5035611e1e565b348015610b4a57600080fd5b50610629611e85565b348015610b5f57600080fd5b5061058860048036036020811015610b7657600080fd5b50356001600160a01b0316611ee3565b348015610b9257600080fd5b5061058860048036036040811015610ba957600080fd5b810190602081018135640100000000811115610bc457600080fd5b820183602082011115610bd657600080fd5b80359060200191846020830284011164010000000083111715610bf857600080fd5b919390929091602081019035640100000000811115610c1657600080fd5b820183602082011115610c2857600080fd5b80359060200191846020830284011164010000000083111715610c4a57600080fd5b50909250905061236e565b348015610c6157600080fd5b5061062960048036036020811015610c7857600080fd5b50356001600160a01b0316612475565b348015610c9457600080fd5b50610674612511565b348015610ca957600080fd5b5061062960048036036020811015610cc057600080fd5b50356001600160a01b031661251a565b348015610cdc57600080fd5b50610588612535565b348015610cf157600080fd5b506106746125d7565b348015610d0657600080fd5b506106746125eb565b348015610d1b57600080fd5b506106746125fe565b348015610d3057600080fd5b5061058860048036036020811015610d4757600080fd5b50356001600160a01b0316612610565b348015610d6357600080fd5b5061058860048036036020811015610d7a57600080fd5b50356001600160a01b03166126af565b348015610d9657600080fd5b5061058860048036036020811015610dad57600080fd5b5035612a16565b348015610dc057600080fd5b50610706612a7d565b348015610dd557600080fd5b5061059f612a8c565b348015610dea57600080fd5b5061058860048036036020811015610e0157600080fd5b50351515612aed565b348015610e1657600080fd5b50610629612b7e565b348015610e2b57600080fd5b5061058860048036036040811015610e4257600080fd5b506001600160a01b0381351690602001351515612b84565b348015610e6657600080fd5b50610588612c33565b348015610e7b57600080fd5b50610629612c9d565b348015610e9057600080fd5b5061067460048036036040811015610ea757600080fd5b506001600160a01b038135169060200135612cfb565b348015610ec957600080fd5b50610629612d63565b348015610ede57600080fd5b5061062960048036036020811015610ef557600080fd5b50356001600160a01b0316612d69565b348015610f1157600080fd5b5061067460048036036040811015610f2857600080fd5b506001600160a01b038135169060200135612dd3565b348015610f4a57600080fd5b50610f7160048036036020811015610f6157600080fd5b50356001600160a01b0316612de7565b604080516001600160a01b0390971687526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190f35b348015610fba57600080fd5b5061067460048036036020811015610fd157600080fd5b50356001600160a01b0316612eb2565b348015610fed57600080fd5b506105886004803603604081101561100457600080fd5b506001600160a01b0381351690602001351515612ec7565b34801561102857600080fd5b506105886004803603606081101561103f57600080fd5b5080359060208101359060400135612ff3565b34801561105e57600080fd5b50610629613076565b34801561107357600080fd5b506105886004803603602081101561108a57600080fd5b50356001600160a01b031661307c565b3480156110a657600080fd5b506106296130f6565b3480156110bb57600080fd5b50610588600480360360408110156110d257600080fd5b508035906020013515156130fc565b3480156110ed57600080fd5b506106296004803603604081101561110457600080fd5b506001600160a01b038135811691602001351661319d565b34801561112857600080fd5b506107066131c8565b34801561113d57600080fd5b506105886004803603602081101561115457600080fd5b503515156131d7565b34801561116957600080fd5b50610629613242565b34801561117e57600080fd5b50610629613248565b34801561119357600080fd5b50610588600480360360208110156111aa57600080fd5b50356132a6565b3480156111bd57600080fd5b50610674613364565b3480156111d257600080fd5b50610588600480360360208110156111e957600080fd5b50356001600160a01b0316613372565b34801561120557600080fd5b506105886004803603602081101561121c57600080fd5b503515156133ec565b34801561123157600080fd5b506105886004803603602081101561124857600080fd5b50356001600160a01b0316613481565b34801561126457600080fd5b506105886004803603602081101561127b57600080fd5b5035151561357a565b34801561129057600080fd5b50610588613609565b6112a161388f565b6005546001600160a01b039081169116146112f1576040805162461bcd60e51b8152602060048201819052602482015260008051602061550a833981519152604482015290519081900360640190fd5b600854604080517f4e7b827f0000000000000000000000000000000000000000000000000000000081526001600160a01b03858116600483015291519190921691634e7b827f916024808301926020929190829003018186803b15801561135757600080fd5b505afa15801561136b573d6000803e3d6000fd5b505050506040513d602081101561138157600080fd5b5051156113d5576040805162461bcd60e51b815260206004820152601f60248201527f416c7265616479206578636c756465642066726f6d206469766964656e647300604482015290519081900360640190fd5b6008546040805162241fbd60e51b81526001600160a01b038581166004830152841515602483015291519190921691630483f7a091604480830192600092919082900301818387803b15801561142a57600080fd5b505af115801561143e573d6000803e3d6000fd5b505050505050565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156114d25780601f106114a7576101008083540402835291602001916114d2565b820191906000526020600020905b8154815290600101906020018083116114b557829003601f168201915b5050505050905090565b60195481565b60006114f66114ef61388f565b8484613893565b5060015b92915050565b61150861388f565b6005546001600160a01b03908116911614611558576040805162461bcd60e51b8152602060048201819052602482015260008051602061550a833981519152604482015290519081900360640190fd5b670de0b6b3a764000002601555565b61156f61388f565b6005546001600160a01b039081169116146115bf576040805162461bcd60e51b8152602060048201819052602482015260008051602061550a833981519152604482015290519081900360640190fd5b6005546006546040516001600160a01b0392831692909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600554600680546001600160a01b0319166001600160a01b03909216919091179055565b601c54640100000000900460ff1681565b60175481565b6007546001600160a01b031681565b61165061388f565b6005546001600160a01b039081169116146116a0576040805162461bcd60e51b8152602060048201819052602482015260008051602061550a833981519152604482015290519081900360640190fd5b601c8054911515620100000262ff000019909216919091179055565b60025490565b600e6020526000908152604090205460ff1681565b6116df61388f565b6005546001600160a01b0390811691161461172f576040805162461bcd60e51b8152602060048201819052602482015260008051602061550a833981519152604482015290519081900360640190fd5b600854604080517f1fa71a3b0000000000000000000000000000000000000000000000000000000081526004810184905290516001600160a01b0390921691631fa71a3b9160248082019260009290919082900301818387803b15801561179557600080fd5b505af11580156117a9573d6000803e3d6000fd5b5050505050565b60006117bd84848461397f565b61182d846117c961388f565b611828856040518060600160405280602881526020016154e2602891396001600160a01b038a1660009081526001602052604081209061180761388f565b6001600160a01b031681526020810191909152604001600020549190613e93565b613893565b5060019392505050565b61183f61388f565b6005546001600160a01b0390811691161461188f576040805162461bcd60e51b8152602060048201819052602482015260008051602061550a833981519152604482015290519081900360640190fd5b601c80547fffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff169055565b6118c161388f565b6005546001600160a01b03908116911614611911576040805162461bcd60e51b8152602060048201819052602482015260008051602061550a833981519152604482015290519081900360640190fd5b6000670de0b6b3a764000082025b838210156117a957600085858481811061193557fe5b905060200201356001600160a01b0316905061195233828461397f565b6001600160a01b038116600090815260106020526040902054611975908361382e565b6001600160a01b03909116600090815260106020908152604080832093909355600f905220805460ff19166001908117909155919091019061191f565b6008546001600160a01b031681565b6119c961388f565b6006546001600160a01b03908116911614611a155760405162461bcd60e51b815260040180806020018281038252602481526020018061539c6024913960400191505060405180910390fd5b6001600160a01b038116611a5a5760405162461bcd60e51b81526004018080602001828103825260268152602001806153c06026913960400191505060405180910390fd5b6006546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b600854604080517f85a6b3ae00000000000000000000000000000000000000000000000000000000815290516000926001600160a01b0316916385a6b3ae916004808301926020929190829003018186803b158015611b1457600080fd5b505afa158015611b28573d6000803e3d6000fd5b505050506040513d6020811015611b3e57600080fd5b5051905090565b601290565b600f6020526000908152604090205460ff1681565b60006114f6611b6c61388f565b846118288560016000611b7d61388f565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549061382e565b601a5481565b611bbb61388f565b6006546001600160a01b03908116911614611c075760405162461bcd60e51b815260040180806020018281038252602481526020018061539c6024913960400191505060405180910390fd5b611c118282613f2a565b5050565b60185481565b600c6020526000908152604090205460ff1681565b611c3861388f565b6005546001600160a01b03908116911614611c88576040805162461bcd60e51b8152602060048201819052602482015260008051602061550a833981519152604482015290519081900360640190fd5b8015611cfb576001600160a01b0382166000908152600e60205260409020805460ff191690556040805162461bcd60e51b815260206004820152601360248201527f416c726561647920626c61636b6c697374656400000000000000000000000000604482015290519081900360640190fd5b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b6009546001600160a01b031681565b601c546301000000900460ff1681565b60106020526000908152604090205481565b600854604080517fbc4c4b3700000000000000000000000000000000000000000000000000000000815233600482015260006024820181905291516001600160a01b039093169263bc4c4b3792604480840193602093929083900390910190829087803b158015611dc757600080fd5b505af1158015611ddb573d6000803e3d6000fd5b505050506040513d6020811015611c1157600080fd5b6001600160a01b03166000908152600d602052604090205460ff1690565b601c5462010000900460ff1681565b611e2661388f565b6005546001600160a01b03908116911614611e76576040805162461bcd60e51b8152602060048201819052602482015260008051602061550a833981519152604482015290519081900360640190fd5b670de0b6b3a764000002601655565b600854604080517f09bbedde00000000000000000000000000000000000000000000000000000000815290516000926001600160a01b0316916309bbedde916004808301926020929190829003018186803b158015611b1457600080fd5b611eeb61388f565b6005546001600160a01b03908116911614611f3b576040805162461bcd60e51b8152602060048201819052602482015260008051602061550a833981519152604482015290519081900360640190fd5b6007546000906001600160a01b0383811691161415611f8b5760405162461bcd60e51b81526004018080602001828103825260238152602001806154666023913960400191505060405180910390fd5b6007546040516001600160a01b03918216918416907f8fc842bbd331dfa973645f4ed48b11683d501ebf1352708d77a5da2ab49a576e90600090a3600780546001600160a01b0319166001600160a01b038481169190911791829055604080517fc45a015500000000000000000000000000000000000000000000000000000000815290516000939092169163c45a015591600480820192602092909190829003018186803b15801561203d57600080fd5b505afa158015612051573d6000803e3d6000fd5b505050506040513d602081101561206757600080fd5b5051600754604080516315ab88c960e31b815290516001600160a01b039384169363e6a4390593309391169163ad5c464891600480820192602092909190829003018186803b1580156120b957600080fd5b505afa1580156120cd573d6000803e3d6000fd5b505050506040513d60208110156120e357600080fd5b5051604080517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526001600160a01b039384166004820152929091166024830152516044808301926020929190829003018186803b15801561214b57600080fd5b505afa15801561215f573d6000803e3d6000fd5b505050506040513d602081101561217557600080fd5b5051600a549092508291506001600160a01b038083169116141561232057600760009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156121e157600080fd5b505afa1580156121f5573d6000803e3d6000fd5b505050506040513d602081101561220b57600080fd5b5051600754604080516315ab88c960e31b815290516001600160a01b039384169363c9c6539693309391169163ad5c464891600480820192602092909190829003018186803b15801561225d57600080fd5b505afa158015612271573d6000803e3d6000fd5b505050506040513d602081101561228757600080fd5b5051604080517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526001600160a01b0393841660048201529290911660248301525160448083019260209291908290030181600087803b1580156122f157600080fd5b505af1158015612305573d6000803e3d6000fd5b505050506040513d602081101561231b57600080fd5b505191505b6001600160a01b038381166000908152600c602052604090208054600160ff199091168117909155600980546001600160a01b031916858416179081905561236992169061400e565b505050565b61237661388f565b6005546001600160a01b039081169116146123c6576040805162461bcd60e51b8152602060048201819052602482015260008051602061550a833981519152604482015290519081900360640190fd5b60005b838110156117a957838214612425576040805162461bcd60e51b815260206004820152601960248201527f41727261792073697a6573206d75737420626520657175616c00000000000000604482015290519081900360640190fd5b600083838381811061243357fe5b90506020020135670de0b6b3a764000002905061246c3387878581811061245657fe5b905060200201356001600160a01b03168361397f565b506001016123c9565b600854604080517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152915160009392909216916370a0823191602480820192602092909190829003018186803b1580156124df57600080fd5b505afa1580156124f3573d6000803e3d6000fd5b505050506040513d602081101561250957600080fd5b505192915050565b601c5460ff1681565b6001600160a01b031660009081526020819052604090205490565b61253d61388f565b6005546001600160a01b0390811691161461258d576040805162461bcd60e51b8152602060048201819052602482015260008051602061550a833981519152604482015290519081900360640190fd5b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b601c54670100000000000000900460ff1681565b601c546601000000000000900460ff1681565b601c5465010000000000900460ff1681565b61261861388f565b6005546001600160a01b03908116911614612668576040805162461bcd60e51b8152602060048201819052602482015260008051602061550a833981519152604482015290519081900360640190fd5b601c80546001600160a01b039092166901000000000000000000027fffffff0000000000000000000000000000000000000000ffffffffffffffffff909216919091179055565b6126b761388f565b6005546001600160a01b03908116911614612707576040805162461bcd60e51b8152602060048201819052602482015260008051602061550a833981519152604482015290519081900360640190fd5b6008546001600160a01b03828116911614156127545760405162461bcd60e51b815260040180806020018281038252602d8152602001806155cd602d913960400191505060405180910390fd5b6000819050306001600160a01b0316816001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561279c57600080fd5b505afa1580156127b0573d6000803e3d6000fd5b505050506040513d60208110156127c657600080fd5b50516001600160a01b03161461280d5760405162461bcd60e51b81526004018080602001828103825260388152602001806154896038913960400191505060405180910390fd5b6040805162241fbd60e51b81526001600160a01b0383166004820181905260006024830181905292519092630483f7a0926044808201939182900301818387803b15801561285a57600080fd5b505af115801561286e573d6000803e3d6000fd5b50506040805162241fbd60e51b815230600482015260006024820181905291516001600160a01b0386169450630483f7a093506044808301939282900301818387803b1580156128bd57600080fd5b505af11580156128d1573d6000803e3d6000fd5b50505050806001600160a01b0316630483f7a06128ec612a7d565b60006040518363ffffffff1660e01b815260040180836001600160a01b03168152602001821515815260200192505050600060405180830381600087803b15801561293657600080fd5b505af115801561294a573d6000803e3d6000fd5b50506007546040805162241fbd60e51b81526001600160a01b03928316600482015260006024820181905291519286169450630483f7a093506044808201939182900301818387803b15801561299f57600080fd5b505af11580156129b3573d6000803e3d6000fd5b50506008546040516001600160a01b03918216935090851691507f90c7d74461c613da5efa97d90740869367d74ab3aa5837aa4ae9a975f954b7a890600090a3600880546001600160a01b0319166001600160a01b039290921691909117905550565b612a1e61388f565b6005546001600160a01b03908116911614612a6e576040805162461bcd60e51b8152602060048201819052602482015260008051602061550a833981519152604482015290519081900360640190fd5b670de0b6b3a764000002601a55565b6005546001600160a01b031690565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156114d25780601f106114a7576101008083540402835291602001916114d2565b612af561388f565b6005546001600160a01b03908116911614612b45576040805162461bcd60e51b8152602060048201819052602482015260008051602061550a833981519152604482015290519081900360640190fd5b601c80549115156301000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff909216919091179055565b60145481565b612b8c61388f565b6005546001600160a01b03908116911614612bdc576040805162461bcd60e51b8152602060048201819052602482015260008051602061550a833981519152604482015290519081900360640190fd5b6009546001600160a01b0383811691161415612c295760405162461bcd60e51b815260040180806020018281038252603581526020018061552a6035913960400191505060405180910390fd5b611c11828261400e565b612c3b61388f565b6005546001600160a01b03908116911614612c8b576040805162461bcd60e51b8152602060048201819052602482015260008051602061550a833981519152604482015290519081900360640190fd5b42601855601c805462ff000019169055565b600854604080517f6f2789ec00000000000000000000000000000000000000000000000000000000815290516000926001600160a01b031691636f2789ec916004808301926020929190829003018186803b158015611b1457600080fd5b60006114f6612d0861388f565b84611828856040518060600160405280602581526020016155a86025913960016000612d3261388f565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190613e93565b60125481565b600854604080517fa8b9d2400000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301529151600093929092169163a8b9d24091602480820192602092909190829003018186803b1580156124df57600080fd5b60006114f6612de061388f565b848461397f565b600854604080517ffbcbc0f10000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152915160009384938493849384938493169163fbcbc0f19160248083019260c0929190829003018186803b158015612e5757600080fd5b505afa158015612e6b573d6000803e3d6000fd5b505050506040513d60c0811015612e8157600080fd5b508051602082015160408301516060840151608085015160a090950151939c929b5090995097509195509350915050565b600b6020526000908152604090205460ff1681565b612ecf61388f565b6005546001600160a01b03908116911614612f1f576040805162461bcd60e51b8152602060048201819052602482015260008051602061550a833981519152604482015290519081900360640190fd5b6001600160a01b0382166000908152600d602052604090205460ff1615158115151415612f93576040805162461bcd60e51b815260206004820152601a60248201527f4163636f756e7420616c726561647920276578636c7564656427000000000000604482015290519081900360640190fd5b6001600160a01b0382166000818152600d6020908152604091829020805460ff1916851515908117909155825190815291517f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df79281900390910190a25050565b612ffb61388f565b6005546001600160a01b0390811691161461304b576040805162461bcd60e51b8152602060048201819052602482015260008051602061550a833981519152604482015290519081900360640190fd5b60128390556014829055601381905561306e81613068858561382e565b9061382e565b601755505050565b601b5481565b61308461388f565b6005546001600160a01b039081169116146130d4576040805162461bcd60e51b8152602060048201819052602482015260008051602061550a833981519152604482015290519081900360640190fd5b601d80546001600160a01b0319166001600160a01b0392909216919091179055565b60135481565b61310461388f565b6005546001600160a01b03908116911614613154576040805162461bcd60e51b8152602060048201819052602482015260008051602061550a833981519152604482015290519081900360640190fd5b670de0b6b3a7640000909102601955601c8054911515640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff909216919091179055565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6006546001600160a01b031690565b6131df61388f565b6005546001600160a01b0390811691161461322f576040805162461bcd60e51b8152602060048201819052602482015260008051602061550a833981519152604482015290519081900360640190fd5b601c805460ff1916911515919091179055565b60165481565b600854604080517fbe10b61400000000000000000000000000000000000000000000000000000000815290516000926001600160a01b03169163be10b614916004808301926020929190829003018186803b158015611b1457600080fd5b6132ae61388f565b6005546001600160a01b039081169116146132fe576040805162461bcd60e51b8152602060048201819052602482015260008051602061550a833981519152604482015290519081900360640190fd5b600854604080517fe98030c70000000000000000000000000000000000000000000000000000000081526004810184905290516001600160a01b039092169163e98030c79160248082019260009290919082900301818387803b15801561179557600080fd5b601c54610100900460ff1681565b61337a61388f565b6005546001600160a01b039081169116146133ca576040805162461bcd60e51b8152602060048201819052602482015260008051602061550a833981519152604482015290519081900360640190fd5b601e80546001600160a01b0319166001600160a01b0392909216919091179055565b6133f461388f565b6005546001600160a01b03908116911614613444576040805162461bcd60e51b8152602060048201819052602482015260008051602061550a833981519152604482015290519081900360640190fd5b601c8054911515670100000000000000027fffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff909216919091179055565b61348961388f565b6005546001600160a01b039081169116146134d9576040805162461bcd60e51b8152602060048201819052602482015260008051602061550a833981519152604482015290519081900360640190fd5b6001600160a01b03811661351e5760405162461bcd60e51b81526004018080602001828103825260268152602001806153c06026913960400191505060405180910390fd5b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b61358261388f565b6005546001600160a01b039081169116146135d2576040805162461bcd60e51b8152602060048201819052602482015260008051602061550a833981519152604482015290519081900360640190fd5b601c8054911515610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909216919091179055565b61361161388f565b6005546001600160a01b03908116911614613661576040805162461bcd60e51b8152602060048201819052602482015260008051602061550a833981519152604482015290519081900360640190fd5b600754604080517fc45a015500000000000000000000000000000000000000000000000000000000815290516000926001600160a01b03169163c45a0155916004808301926020929190829003018186803b1580156136bf57600080fd5b505afa1580156136d3573d6000803e3d6000fd5b505050506040513d60208110156136e957600080fd5b5051600754604080516315ab88c960e31b815290516001600160a01b039384169363c9c6539693309391169163ad5c464891600480820192602092909190829003018186803b15801561373b57600080fd5b505afa15801561374f573d6000803e3d6000fd5b505050506040513d602081101561376557600080fd5b5051604080517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526001600160a01b0393841660048201529290911660248301525160448083019260209291908290030181600087803b1580156137cf57600080fd5b505af11580156137e3573d6000803e3d6000fd5b505050506040513d60208110156137f957600080fd5b5051600980546001600160a01b0319166001600160a01b03808416919091179182905591925061382b9116600161400e565b50565b600082820183811015613888576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b3390565b6001600160a01b0383166138d85760405162461bcd60e51b81526004018080602001828103825260248152602001806155846024913960400191505060405180910390fd5b6001600160a01b03821661391d5760405162461bcd60e51b81526004018080602001828103825260228152602001806153e66022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166139c45760405162461bcd60e51b815260040180806020018281038252602581526020018061555f6025913960400191505060405180910390fd5b6001600160a01b038216613a095760405162461bcd60e51b81526004018080602001828103825260238152602001806153796023913960400191505060405180910390fd5b6001600160a01b0383166000908152600e602052604090205460ff16158015613a4b57506001600160a01b0382166000908152600e602052604090205460ff16155b613a9c576040805162461bcd60e51b815260206004820152601360248201527f426c61636b6c6973746564206164647265737300000000000000000000000000604482015290519081900360640190fd5b613aa4612a7d565b6001600160a01b0316836001600160a01b031614613b1a57601c5462010000900460ff1615613b1a576040805162461bcd60e51b815260206004820152600e60248201527f74726164696e6720706175736564000000000000000000000000000000000000604482015290519081900360640190fd5b613b22612a7d565b6001600160a01b0316836001600160a01b031614158015613b5c5750613b46612a7d565b6001600160a01b0316826001600160a01b031614155b15613b6c57613b6c838383614140565b613b7683826145a3565b80613b8c57613b8783836000614c4b565b612369565b6000613b973061251a565b601654601c549192508210159060ff168015613bc25750601c5468010000000000000000900460ff16155b8015613bdc57506009546001600160a01b03868116911614155b8015613be55750805b15613c2357601c805468ff0000000000000000191668010000000000000000179055613c1082614d9b565b601c805468ff0000000000000000191690555b601c546001600160a01b0386166000908152600d602052604090205460ff68010000000000000000909204821615911680613c7657506001600160a01b0385166000908152600d602052604090205460ff165b15613c7f575060005b8015613d7a576000613ca76064613ca160175488614f2490919063ffffffff16565b90614f7d565b9050613cb1612a7d565b6001600160a01b0316876001600160a01b031614158015613ce057506009546001600160a01b03888116911614155b8015613cf557506001600160a01b0387163014155b8015613d0f57506007546001600160a01b03888116911614155b8015613d3f57506007546001600160a01b0387811691161480613d3f57506009546001600160a01b038781169116145b15613d6157613d5e6064613ca1601b5488614f2490919063ffffffff16565b90505b613d6b8582614fbf565b9450613d78873083614c4b565b505b613d85868686614c4b565b6001600160a01b0385166000908152600e602052604090205460ff1661143e576008546001600160a01b031663e30443bc87613dc08161251a565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b158015613e0657600080fd5b505af1925050508015613e17575060015b506008546001600160a01b031663e30443bc86613e338161251a565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b158015613e7957600080fd5b505af1925050508015613e8a575060015b61143e5761143e565b60008184841115613f225760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613ee7578181015183820152602001613ecf565b50505050905090810190601f168015613f145780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6001600160a01b038216613f85576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b600254613f92908261382e565b6002556001600160a01b038216600090815260208190526040902054613fb8908261382e565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6001600160a01b0382166000908152600b602052604090205460ff161515811515141561406c5760405162461bcd60e51b81526004018080602001828103825260388152602001806154086038913960400191505060405180910390fd5b6001600160a01b0382166000908152600b60205260409020805460ff19168215801591909117909155614104576008546040805162241fbd60e51b81526001600160a01b0385811660048301526000602483018190529251931692630483f7a09260448084019391929182900301818387803b1580156140eb57600080fd5b505af11580156140ff573d6000803e3d6000fd5b505050505b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b601c546301000000900460ff16156141b9576001600160a01b03831630146141b9576015548111156141b9576040805162461bcd60e51b815260206004820152601560248201527f65786365656473206d617820747820616d6f756e740000000000000000000000604482015290519081900360640190fd5b601c546601000000000000900460ff16156142a3576001600160a01b03831630148015906141f057506001600160a01b0382163014155b801561420a57506007546001600160a01b03838116911614155b801561422457506009546001600160a01b03838116911614155b156142a35732600090815260116020526040902054601e42011015614290576040805162461bcd60e51b815260206004820152601260248201527f436f6f6c646f776e20696e206566666563740000000000000000000000000000604482015290519081900360640190fd5b3260009081526011602052604090204290555b601c5465010000000000900460ff161561439d576009546001600160a01b0384811691161480156142e257506007546001600160a01b03838116911614155b80156142f757506001600160a01b0382163014155b801561430c57506001600160a01b0383163014155b1561432657326001600160a01b0383161461432657600080fd5b601854421115801561434557506009546001600160a01b038481169116145b801561435f57506007546001600160a01b03838116911614155b801561437457506001600160a01b0382163014155b1561439d576001600160a01b0382166000908152600e60205260409020805460ff191660011790555b601c54640100000000900460ff1615614428576001600160a01b0383166000908152600b602052604090205460ff1680156143e657506007546001600160a01b03838116911614155b80156143fb57506001600160a01b0382163014155b1561442857600061440b8361251a565b60195490915061441b828461382e565b111561442657600080fd5b505b601c54670100000000000000900460ff1615612369576001600160a01b038316301480159061446057506001600160a01b0382163014155b801561448557506001600160a01b0383166000908152600c602052604090205460ff16155b80156144aa57506001600160a01b0383166000908152600b602052604090205460ff16155b80156144cf57506001600160a01b0382166000908152600c602052604090205460ff16155b80156144f457506001600160a01b0382166000908152600b602052604090205460ff16155b1561236957600c600061450561388f565b6001600160a01b0316815260208101919091526040016000205460ff16806145525750600b600061453461388f565b6001600160a01b0316815260208101919091526040016000205460ff165b612369576040805162461bcd60e51b815260206004820152600c60248201527f4e6f207472616e73666572730000000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b0382166000908152600f602052604090205460ff1615611c1157601a54811061461a576040805162461bcd60e51b815260206004820152600f60248201527f566573742073656c6c206c696d69740000000000000000000000000000000000604482015290519081900360640190fd5b60006146258361251a565b6001600160a01b03841660009081526010602052604081205460185492935091614650904290614fbf565b90506201518081116146a9576040805162461bcd60e51b815260206004820152601660248201527f43616e206e6f742073656c6c2066697273742064617900000000000000000000604482015290519081900360640190fd5b6224ea00811015614714576146c4600a613ca1846008614f24565b6146ce8486614fbf565b11614714576040805162461bcd60e51b815260206004820152601160248201527010d85b89dd08189e5c185cdcc81d995cdd607a1b604482015290519081900360640190fd5b6249d40081101561477f5761472f6064613ca184604b614f24565b6147398486614fbf565b1161477f576040805162461bcd60e51b815260206004820152601160248201527010d85b89dd08189e5c185cdcc81d995cdd607a1b604482015290519081900360640190fd5b626ebe008110156147ea5761479a6064613ca1846046614f24565b6147a48486614fbf565b116147ea576040805162461bcd60e51b815260206004820152601160248201527010d85b89dd08189e5c185cdcc81d995cdd607a1b604482015290519081900360640190fd5b6293a800811015614855576148056064613ca1846041614f24565b61480f8486614fbf565b11614855576040805162461bcd60e51b815260206004820152601160248201527010d85b89dd08189e5c185cdcc81d995cdd607a1b604482015290519081900360640190fd5b62b892008110156148c0576148706064613ca184603c614f24565b61487a8486614fbf565b116148c0576040805162461bcd60e51b815260206004820152601160248201527010d85b89dd08189e5c185cdcc81d995cdd607a1b604482015290519081900360640190fd5b62dd7c0081101561492b576148db6064613ca1846037614f24565b6148e58486614fbf565b1161492b576040805162461bcd60e51b815260206004820152601160248201527010d85b89dd08189e5c185cdcc81d995cdd607a1b604482015290519081900360640190fd5b630102660081101561499257614942826002614f7d565b61494c8486614fbf565b11614992576040805162461bcd60e51b815260206004820152601160248201527010d85b89dd08189e5c185cdcc81d995cdd607a1b604482015290519081900360640190fd5b63012750008110156149fe576149ae6064613ca184602c614f24565b6149b88486614fbf565b116149fe576040805162461bcd60e51b815260206004820152601160248201527010d85b89dd08189e5c185cdcc81d995cdd607a1b604482015290519081900360640190fd5b63014c3a00811015614a6a57614a1a6064613ca1846026614f24565b614a248486614fbf565b11614a6a576040805162461bcd60e51b815260206004820152601160248201527010d85b89dd08189e5c185cdcc81d995cdd607a1b604482015290519081900360640190fd5b6301712400811015614ad657614a866064613ca1846020614f24565b614a908486614fbf565b11614ad6576040805162461bcd60e51b815260206004820152601160248201527010d85b89dd08189e5c185cdcc81d995cdd607a1b604482015290519081900360640190fd5b6301960e00811015614b4257614af26064613ca1846018614f24565b614afc8486614fbf565b11614b42576040805162461bcd60e51b815260206004820152601160248201527010d85b89dd08189e5c185cdcc81d995cdd607a1b604482015290519081900360640190fd5b6301baf800811015614bae57614b5e6064613ca1846010614f24565b614b688486614fbf565b11614bae576040805162461bcd60e51b815260206004820152601160248201527010d85b89dd08189e5c185cdcc81d995cdd607a1b604482015290519081900360640190fd5b6301dfe200811015614c1a57614bca6064613ca1846008614f24565b614bd48486614fbf565b11614c1a576040805162461bcd60e51b815260206004820152601160248201527010d85b89dd08189e5c185cdcc81d995cdd607a1b604482015290519081900360640190fd5b6301dfe2008111156117a957505050506001600160a01b03166000908152600f60205260409020805460ff19169055565b6001600160a01b038316614c905760405162461bcd60e51b815260040180806020018281038252602581526020018061555f6025913960400191505060405180910390fd5b6001600160a01b038216614cd55760405162461bcd60e51b81526004018080602001828103825260238152602001806153796023913960400191505060405180910390fd5b614d1281604051806060016040528060268152602001615440602691396001600160a01b0386166000908152602081905260409020549190613e93565b6001600160a01b038085166000908152602081905260408082209390935590841681522054614d41908261382e565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000614db8601754613ca160145485614f2490919063ffffffff16565b90506000614dc7826002614f7d565b90506000614dd58483614fbf565b905047614de182615001565b6000614ded4783614fbf565b90506000614e116002613ca1601754613ca160145487614f2490919063ffffffff16565b90506000614e356003613ca1601754613ca160135488614f2490919063ffffffff16565b601c54604051919250690100000000000000000090046001600160a01b0316906108fc8315029083906000818181858888f19350505050158015614e7d573d6000803e3d6000fd5b50601d546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015614eb8573d6000803e3d6000fd5b50601e546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015614ef3573d6000803e3d6000fd5b50614efe86836151ad565b601c544790610100900460ff1615614f1957614f1981615280565b505050505050505050565b600082614f33575060006114fa565b82820282848281614f4057fe5b04146138885760405162461bcd60e51b81526004018080602001828103825260218152602001806154c16021913960400191505060405180910390fd5b600061388883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250615313565b600061388883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613e93565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061503057fe5b6001600160a01b03928316602091820292909201810191909152600754604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561508457600080fd5b505afa158015615098573d6000803e3d6000fd5b505050506040513d60208110156150ae57600080fd5b50518151829060019081106150bf57fe5b6001600160a01b0392831660209182029290920101526007546150e59130911684613893565b6007546040517f791ac947000000000000000000000000000000000000000000000000000000008152600481018481526000602483018190523060648401819052426084850181905260a060448601908152875160a487015287516001600160a01b039097169663791ac947968a968a9594939092909160c40190602080880191028083838b5b8381101561518457818101518382015260200161516c565b505050509050019650505050505050600060405180830381600087803b15801561142a57600080fd5b6007546151c59030906001600160a01b031684613893565b6007546001600160a01b031663f305d7198230856000806151e4612a7d565b426040518863ffffffff1660e01b815260040180876001600160a01b03168152602001868152602001858152602001848152602001836001600160a01b0316815260200182815260200196505050505050506060604051808303818588803b15801561524f57600080fd5b505af1158015615263573d6000803e3d6000fd5b50505050506040513d606081101561527a57600080fd5b50505050565b6008546040516000916001600160a01b03169083908381818185875af1925050503d80600081146152cd576040519150601f19603f3d011682016040523d82523d6000602084013e6152d2565b606091505b505090508015611c11576040805183815290517fb0cc2628d6d644cf6be9d8110e142297ac910d6d8026d795a99f272fd9ad60b19181900360200190a15050565b600081836153625760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315613ee7578181015183820152602001613ecf565b50600083858161536e57fe5b049594505050505056fe45524332303a207472616e7366657220746f20746865207a65726f20616464726573734f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726d696e744f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573734175746f6d61746564206d61726b6574206d616b6572207061697220697320616c72656164792073657420746f20746861742076616c756545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636554686520726f7574657220616c72656164792068617320746861742061646472657373546865206e6577206469766964656e6420747261636b6572206d757374206265206f776e656420627920746f6b656e20636f6e7472616374536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572506169722063616e6e6f742062652072656d6f7665642066726f6d206175746f6d617465644d61726b65744d616b6572506169727345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f546865206469766964656e6420747261636b657220616c72656164792068617320746861742061646472657373a26469706673582212206e073d9ebf504856a4b009bb16a7fbc745e4b713cc07cde8a1e57c90a0dbb58564736f6c63430007060033

Deployed Bytecode Sourcemap

15546:20180:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25112:277;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;25112:277:0;;;;;;;;;;:::i;:::-;;7339:100;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16624:27;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;8262:172;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;8262:172:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;27651:108;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27651:108:0;;:::i;1295:152::-;;;;;;;;;;;;;:::i;16857:30::-;;;;;;;;;;;;;:::i;16556:24::-;;;;;;;;;;;;;:::i;15629:41::-;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;15629:41:0;;;;;;;;;;;;;;27461:83;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27461:83:0;;;;:::i;7660:108::-;;;;;;;;;;;;;:::i;16164:46::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16164:46:0;-1:-1:-1;;;;;16164:46:0;;:::i;24106:136::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24106:136:0;;:::i;8442:321::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;8442:321:0;;;;;;;;;;;;;;;;;:::i;27115:89::-;;;;;;;;;;;;;:::i;21890:490::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21890:490:0;-1:-1:-1;21890:490:0;;:::i;15677:40::-;;;;;;;;;;;;;:::i;1706:262::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1706:262:0;-1:-1:-1;;;;;1706:262:0;;:::i;24516:141::-;;;;;;;;;;;;;:::i;7559:93::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16217:46;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16217:46:0;-1:-1:-1;;;;;16217:46:0;;:::i;8771:219::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;8771:219:0;;;;;;;;:::i;16658:30::-;;;;;;;;;;;;;:::i;19460:103::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;19460:103:0;;;;;;;;:::i;16588:29::-;;;;;;;;;;;;;:::i;16039:59::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16039:59:0;-1:-1:-1;;;;;16039:59:0;;:::i;23667:299::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;23667:299:0;;;;;;;;;;:::i;15726:28::-;;;;;;;;;;;;;:::i;16826:24::-;;;;;;;;;;;;;:::i;16270:47::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16270:47:0;-1:-1:-1;;;;;16270:47:0;;:::i;25698:103::-;;;;;;;;;;;;;:::i;24665:126::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24665:126:0;-1:-1:-1;;;;;24665:126:0;;:::i;16801:18::-;;;;;;;;;;;;;:::i;27767:119::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27767:119:0;;:::i;25809:142::-;;;;;;;;;;;;;:::i;20400:840::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20400:840:0;-1:-1:-1;;;;;20400:840:0;;:::i;21368:394::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21368:394:0;;-1:-1:-1;21368:394:0;-1:-1:-1;21368:394:0;:::i;24962:142::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24962:142:0;-1:-1:-1;;;;;24962:142:0;;:::i;16732:23::-;;;;;;;;;;;;;:::i;7776:130::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7776:130:0;-1:-1:-1;;;;;7776:130:0;;:::i;1139:148::-;;;;;;;;;;;;;:::i;16952:23::-;;;;;;;;;;;;;:::i;16925:20::-;;;;;;;;;;;;;:::i;16894:24::-;;;;;;;;;;;;;:::i;25959:106::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25959:106:0;-1:-1:-1;;;;;25959:106:0;;:::i;19571:821::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19571:821:0;-1:-1:-1;;;;;19571:821:0;;:::i;26474:118::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26474:118:0;;:::i;692:79::-;;;;;;;;;;;;;:::i;7447:104::-;;;;;;;;;;;;;:::i;27550:95::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27550:95:0;;;;:::i;16447:27::-;;;;;;;;;;;;;:::i;23010:239::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;23010:239:0;;;;;;;;;;:::i;27212:124::-;;;;;;;;;;;;;:::i;24399:109::-;;;;;;;;;;;;;:::i;8998:269::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;8998:269:0;;;;;;;;:::i;16377:31::-;;;;;;;;;;;;;:::i;24799:155::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24799:155:0;-1:-1:-1;;;;;24799:155:0;;:::i;7914:178::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;7914:178:0;;;;;;;;:::i;25397:293::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25397:293:0;-1:-1:-1;;;;;25397:293:0;;:::i;:::-;;;;-1:-1:-1;;;;;25397:293:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15975:57;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15975:57:0;-1:-1:-1;;;;;15975:57:0;;:::i;22731:271::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;22731:271:0;;;;;;;;;;:::i;26600:307::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26600:307:0;;;;;;;;;;;;:::i;16695:28::-;;;;;;;;;;;;;:::i;26073:106::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26073:106:0;-1:-1:-1;;;;;26073:106:0;;:::i;16415:25::-;;;;;;;;;;;;;:::i;26299:167::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26299:167:0;;;;;;;;;:::i;8100:154::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;8100:154:0;;;;;;;;;;:::i;779:87::-;;;;;;;;;;;;;:::i;26915:93::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26915:93:0;;;;:::i;16516:33::-;;;;;;;;;;;;;:::i;24250:141::-;;;;;;;;;;;;;:::i;23974:124::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23974:124:0;;:::i;16762:32::-;;;;;;;;;;;;;:::i;26185:106::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26185:106:0;-1:-1:-1;;;;;26185:106:0;;:::i;27014:93::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27014:93:0;;;;:::i;1455:243::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1455:243:0;-1:-1:-1;;;;;1455:243:0;;:::i;27344:111::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27344:111:0;;;;:::i;22388:335::-;;;;;;;;;;;;;:::i;25112:277::-;924:12;:10;:12::i;:::-;914:6;;-1:-1:-1;;;;;914:6:0;;;:22;;;906:67;;;;;-1:-1:-1;;;906:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;906:67:0;;;;;;;;;;;;;;;25223:15:::1;::::0;:46:::1;::::0;;;;;-1:-1:-1;;;;;25223:46:0;;::::1;;::::0;::::1;::::0;;;:15;;;::::1;::::0;:37:::1;::::0;:46;;;;;::::1;::::0;;;;;;;;:15;:46;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;25223:46:0;25221:49:::1;25213:93;;;::::0;;-1:-1:-1;;;25213:93:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;25317:15;::::0;:64:::1;::::0;;-1:-1:-1;;;25317:64:0;;-1:-1:-1;;;;;25317:64:0;;::::1;;::::0;::::1;::::0;;::::1;;::::0;;;;;;:15;;;::::1;::::0;:36:::1;::::0;:64;;;;;:15:::1;::::0;:64;;;;;;;:15;;:64;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;25112:277:::0;;:::o;7339:100::-;7426:5;7419:12;;;;;;;;-1:-1:-1;;7419:12:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7393:13;;7419:12;;7426:5;;7419:12;;7426:5;7419:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7339:100;:::o;16624:27::-;;;;:::o;8262:172::-;8345:4;8365:39;8374:12;:10;:12::i;:::-;8388:7;8397:6;8365:8;:39::i;:::-;-1:-1:-1;8422:4:0;8262:172;;;;;:::o;27651:108::-;924:12;:10;:12::i;:::-;914:6;;-1:-1:-1;;;;;914:6:0;;;:22;;;906:67;;;;;-1:-1:-1;;;906:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;906:67:0;;;;;;;;;;;;;;;27744:6:::1;27733:18;27719:11;:32:::0;27651:108::o;1295:152::-;924:12;:10;:12::i;:::-;914:6;;-1:-1:-1;;;;;914:6:0;;;:22;;;906:67;;;;;-1:-1:-1;;;906:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;906:67:0;;;;;;;;;;;;;;;1402:6:::1;::::0;1390:10:::1;::::0;1369:40:::1;::::0;-1:-1:-1;;;;;1402:6:0;;::::1;::::0;1390:10;;::::1;::::0;1369:40:::1;::::0;1402:6:::1;::::0;1369:40:::1;1433:6;::::0;1420:10:::1;:19:::0;;-1:-1:-1;;;;;;1420:19:0::1;-1:-1:-1::0;;;;;1433:6:0;;::::1;1420:19:::0;;;::::1;::::0;;1295:152::o;16857:30::-;;;;;;;;;:::o;16556:24::-;;;;:::o;15629:41::-;;;-1:-1:-1;;;;;15629:41:0;;:::o;27461:83::-;924:12;:10;:12::i;:::-;914:6;;-1:-1:-1;;;;;914:6:0;;;:22;;;906:67;;;;;-1:-1:-1;;;906:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;906:67:0;;;;;;;;;;;;;;;27522:6:::1;:14:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;27522:14:0;;::::1;::::0;;;::::1;::::0;;27461:83::o;7660:108::-;7748:12;;7660:108;:::o;16164:46::-;;;;;;;;;;;;;;;:::o;24106:136::-;924:12;:10;:12::i;:::-;914:6;;-1:-1:-1;;;;;914:6:0;;;:22;;;906:67;;;;;-1:-1:-1;;;906:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;906:67:0;;;;;;;;;;;;;;;24186:15:::1;::::0;:48:::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;-1:-1:-1;;;;;24186:15:0;;::::1;::::0;:34:::1;::::0;:48;;;;;:15:::1;::::0;:48;;;;;;;;:15;;:48;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;24106:136:::0;:::o;8442:321::-;8546:4;8563:36;8573:6;8581:9;8592:6;8563:9;:36::i;:::-;8610:123;8620:6;8628:12;:10;:12::i;:::-;8642:90;8681:6;8642:90;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8642:19:0;;;;;;:11;:19;;;;;;8662:12;:10;:12::i;:::-;-1:-1:-1;;;;;8642:33:0;;;;;;;;;;;;-1:-1:-1;8642:33:0;;;:90;:37;:90::i;:::-;8610:8;:123::i;:::-;-1:-1:-1;8751:4:0;8442:321;;;;;:::o;27115:89::-;924:12;:10;:12::i;:::-;914:6;;-1:-1:-1;;;;;914:6:0;;;:22;;;906:67;;;;;-1:-1:-1;;;906:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;906:67:0;;;;;;;;;;;;;;;27176:12:::1;:20:::0;;;::::1;::::0;;27115:89::o;21890:490::-;924:12;:10;:12::i;:::-;914:6;;-1:-1:-1;;;;;914:6:0;;;:22;;;906:67;;;;;-1:-1:-1;;;906:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;906:67:0;;;;;;;;;;;;;;;21997:9:::1;22047:6;22039:14:::0;::::1;22064:309;22070:26:::0;;::::1;22064:309;;;22112:19;22134:15;;22150:1;22134:18;;;;;;;;;;;;;-1:-1:-1::0;;;;;22134:18:0::1;22112:40;;22167:43;22177:10;22189:11;22202:7;22167:9;:43::i;:::-;-1:-1:-1::0;;;;;22253:25:0;::::1;;::::0;;;:12:::1;:25;::::0;;;;;:38:::1;::::0;22283:7;22253:29:::1;:38::i;:::-;-1:-1:-1::0;;;;;22225:25:0;;::::1;;::::0;;;:12:::1;:25;::::0;;;;;;;:66;;;;22306:14:::1;:27:::0;;;:34;;-1:-1:-1;;22306:34:0::1;22336:4;22306:34:::0;;::::1;::::0;;;22355:6;;;::::1;::::0;22064:309:::1;;15677:40:::0;;;-1:-1:-1;;;;;15677:40:0;;:::o;1706:262::-;1059:12;:10;:12::i;:::-;1045:10;;-1:-1:-1;;;;;1045:10:0;;;:26;;;1037:74;;;;-1:-1:-1;;;1037:74:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1806:22:0;::::1;1798:72;;;;-1:-1:-1::0;;;1798:72:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1907:10;::::0;1886:42:::1;::::0;-1:-1:-1;;;;;1886:42:0;;::::1;::::0;1907:10:::1;::::0;1886:42:::1;::::0;1907:10:::1;::::0;1886:42:::1;1939:10;:21:::0;;-1:-1:-1;;;;;;1939:21:0::1;-1:-1:-1::0;;;;;1939:21:0;;;::::1;::::0;;;::::1;::::0;;1706:262::o;24516:141::-;24606:15;;:43;;;;;;;;24579:7;;-1:-1:-1;;;;;24606:15:0;;:41;;:43;;;;;;;;;;;;;;:15;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24606:43:0;;-1:-1:-1;24516:141:0;:::o;7559:93::-;7642:2;7559:93;:::o;16217:46::-;;;;;;;;;;;;;;;:::o;8771:219::-;8859:4;8879:81;8888:12;:10;:12::i;:::-;8901:7;8909:50;8948:10;8909:11;:25;8921:12;:10;:12::i;:::-;-1:-1:-1;;;;;8909:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;8909:25:0;;;:34;;;;;;;;;;;:38;:50::i;16658:30::-;;;;:::o;19460:103::-;1059:12;:10;:12::i;:::-;1045:10;;-1:-1:-1;;;;;1045:10:0;;;:26;;;1037:74;;;;-1:-1:-1;;;1037:74:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19536:19:::1;19542:3;19547:7;19536:5;:19::i;:::-;19460:103:::0;;:::o;16588:29::-;;;;:::o;16039:59::-;;;;;;;;;;;;;;;:::o;23667:299::-;924:12;:10;:12::i;:::-;914:6;;-1:-1:-1;;;;;914:6:0;;;:22;;;906:67;;;;;-1:-1:-1;;;906:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;906:67:0;;;;;;;;;;;;;;;23755:5:::1;23752:165;;;-1:-1:-1::0;;;;;23784:23:0;::::1;23810:5;23784:23:::0;;;:14:::1;:23;::::0;;;;:31;;-1:-1:-1;;23784:31:0::1;::::0;;23776:63:::1;::::0;;-1:-1:-1;;;23776:63:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;23752:165;-1:-1:-1::0;;;;;23927:23:0;;;::::1;;::::0;;;:14:::1;:23;::::0;;;;:31;;-1:-1:-1;;23927:31:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23667:299::o;15726:28::-;;;-1:-1:-1;;;;;15726:28:0;;:::o;16826:24::-;;;;;;;;;:::o;16270:47::-;;;;;;;;;;;;;:::o;25698:103::-;25735:15;;:58;;;;;;25774:10;25735:58;;;;:15;:58;;;;;;;;-1:-1:-1;;;;;25735:15:0;;;;:30;;:58;;;;;;;;;;;;;;;;;;:15;:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24665:126;-1:-1:-1;;;;;24755:28:0;24731:4;24755:28;;;:19;:28;;;;;;;;;24665:126::o;16801:18::-;;;;;;;;;:::o;27767:119::-;924:12;:10;:12::i;:::-;914:6;;-1:-1:-1;;;;;914:6:0;;;:22;;;906:67;;;;;-1:-1:-1;;;906:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;906:67:0;;;;;;;;;;;;;;;27871:6:::1;27860:18;27839;:39:::0;27767:119::o;25809:142::-;25902:15;;:41;;;;;;;;25875:7;;-1:-1:-1;;;;;25902:15:0;;:39;;:41;;;;;;;;;;;;;;:15;:41;;;;;;;;;;20400:840;924:12;:10;:12::i;:::-;914:6;;-1:-1:-1;;;;;914:6:0;;;:22;;;906:67;;;;;-1:-1:-1;;;906:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;906:67:0;;;;;;;;;;;;;;;20542:15:::1;::::0;20479:22:::1;::::0;-1:-1:-1;;;;;20520:38:0;;::::1;20542:15:::0;::::1;20520:38;;20512:85;;;;-1:-1:-1::0;;;20512:85:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20655:15;::::0;20613:59:::1;::::0;-1:-1:-1;;;;;20655:15:0;;::::1;::::0;20613:59;::::1;::::0;::::1;::::0;20655:15:::1;::::0;20613:59:::1;20683:15;:48:::0;;-1:-1:-1;;;;;;20683:48:0::1;-1:-1:-1::0;;;;;20683:48:0;;::::1;::::0;;;::::1;::::0;;;;20782:25:::1;::::0;;;;;;;-1:-1:-1;;20782:15:0;;::::1;::::0;:23:::1;::::0;:25:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;:15;:25;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;20782:25:0;20832:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;20832:22:0;;;;-1:-1:-1;;;;;20764:52:0;;::::1;::::0;::::1;::::0;20825:4:::1;::::0;20832:15;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;20782:25:::1;::::0;20832:22;;;;;;;;:15;:22;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;20832:22:0;20764:91:::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;;;;;20764:91:0;;::::1;;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;20832:22:::1;::::0;20764:91;;;;;;;;;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;20764:91:0;20924:11:::1;::::0;20764:91;;-1:-1:-1;20764:91:0;;-1:-1:-1;;;;;;20909:26:0;;::::1;20924:11:::0;::::1;20909:26;20905:170;;;20987:15;;;;;;;;;-1:-1:-1::0;;;;;20987:15:0::1;-1:-1:-1::0;;;;;20987:23:0::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;20987:25:0;21040:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;21040:22:0;;;;-1:-1:-1;;;;;20969:55:0;;::::1;::::0;::::1;::::0;21033:4:::1;::::0;21040:15;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;20987:25:::1;::::0;21040:22;;;;;;;;:15;:22;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;21040:22:0;20969:94:::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;;;;;20969:94:0;;::::1;;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;21040:22:::1;::::0;20969:94;;;;;;;-1:-1:-1;20969:94:0;;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;20969:94:0;;-1:-1:-1;20905:170:0::1;-1:-1:-1::0;;;;;21085:39:0;;::::1;;::::0;;;:27:::1;:39;::::0;;;;:46;;21127:4:::1;-1:-1:-1::0;;21085:46:0;;::::1;::::0;::::1;::::0;;;21142:13:::1;:30:::0;;-1:-1:-1;;;;;;21142:30:0::1;::::0;;::::1;;::::0;;;;21183:49:::1;::::0;21212:13:::1;::::0;21183:28:::1;:49::i;:::-;984:1;;20400:840:::0;:::o;21368:394::-;924:12;:10;:12::i;:::-;914:6;;-1:-1:-1;;;;;914:6:0;;;:22;;;906:67;;;;;-1:-1:-1;;;906:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;906:67:0;;;;;;;;;;;;;;;21474:9:::1;21498:257;21504:20:::0;;::::1;21498:257;;;21548:34:::0;;::::1;21540:72;;;::::0;;-1:-1:-1;;;21540:72:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;21627:15;21645:7;;21653:1;21645:10;;;;;;;;;;;;;21657:6;21645:18;21627:36;;21678:44;21688:10;21700:9;;21710:1;21700:12;;;;;;;;;;;;;-1:-1:-1::0;;;;;21700:12:0::1;21714:7;21678:9;:44::i;:::-;-1:-1:-1::0;21742:1:0::1;21737:6;21498:257;;24962:142:::0;25062:15;;:34;;;;;;-1:-1:-1;;;;;25062:34:0;;;;;;;;;25032:7;;25062:15;;;;;:25;;:34;;;;;;;;;;;;;;;:15;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25062:34:0;;24962:142;-1:-1:-1;;24962:142:0:o;16732:23::-;;;;;;:::o;7776:130::-;-1:-1:-1;;;;;7880:18:0;7850:7;7880:18;;;;;;;;;;;;7776:130::o;1139:148::-;924:12;:10;:12::i;:::-;914:6;;-1:-1:-1;;;;;914:6:0;;;:22;;;906:67;;;;;-1:-1:-1;;;906:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;906:67:0;;;;;;;;;;;;;;;1230:6:::1;::::0;1209:40:::1;::::0;1246:1:::1;::::0;-1:-1:-1;;;;;1230:6:0::1;::::0;1209:40:::1;::::0;1246:1;;1209:40:::1;1260:6;:19:::0;;-1:-1:-1;;;;;;1260:19:0::1;::::0;;1139:148::o;16952:23::-;;;;;;;;;:::o;16925:20::-;;;;;;;;;:::o;16894:24::-;;;;;;;;;:::o;25959:106::-;924:12;:10;:12::i;:::-;914:6;;-1:-1:-1;;;;;914:6:0;;;:22;;;906:67;;;;;-1:-1:-1;;;906:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;906:67:0;;;;;;;;;;;;;;;26028:8:::1;:29:::0;;-1:-1:-1;;;;;26028:29:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;25959:106::o;19571:821::-;924:12;:10;:12::i;:::-;914:6;;-1:-1:-1;;;;;914:6:0;;;:22;;;906:67;;;;;-1:-1:-1;;;906:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;906:67:0;;;;;;;;;;;;;;;19680:15:::1;::::0;-1:-1:-1;;;;;19658:38:0;;::::1;19680:15:::0;::::1;19658:38;;19650:95;;;;-1:-1:-1::0;;;19650:95:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19756:36;19821:10;19756:77;;19890:4;-1:-1:-1::0;;;;;19852:43:0::1;:18;-1:-1:-1::0;;;;;19852:24:0::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;19852:26:0;-1:-1:-1;;;;;19852:43:0::1;;19844:111;;;;-1:-1:-1::0;;;19844:111:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19966:75;::::0;;-1:-1:-1;;;19966:75:0;;-1:-1:-1;;;;;19966:39:0;::::1;:75;::::0;::::1;::::0;;;20035:5:::1;19966:75:::0;;;;;;;;:39;;::::1;::::0;:75;;;;;;;;;;;20035:5;19966:39;:75;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;20052:61:0::1;::::0;;-1:-1:-1;;;20052:61:0;;20100:4:::1;20052:61;::::0;::::1;::::0;20107:5:::1;20052:61:::0;;;;;;;;-1:-1:-1;;;;;20052:39:0;::::1;::::0;-1:-1:-1;20052:39:0::1;::::0;-1:-1:-1;20052:61:0;;;;;20107:5;20052:61;;;;;20107:5;20052:39;:61;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;20124:18;-1:-1:-1::0;;;;;20124:39:0::1;;20164:7;:5;:7::i;:::-;20173:5;20124:55;;;;;;;;;;;;;-1:-1:-1::0;;;;;20124:55:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;20238:15:0::1;::::0;20190:72:::1;::::0;;-1:-1:-1;;;20190:72:0;;-1:-1:-1;;;;;20238:15:0;;::::1;20190:72;::::0;::::1;::::0;20238:15:::1;20190:72:::0;;;;;;;;:39;;::::1;::::0;-1:-1:-1;20190:39:0::1;::::0;-1:-1:-1;20190:72:0;;;;;;;;;;;20238:15;20190:39;:72;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;20320:15:0::1;::::0;20278:59:::1;::::0;-1:-1:-1;;;;;20320:15:0;;::::1;::::0;-1:-1:-1;20278:59:0;;::::1;::::0;-1:-1:-1;20278:59:0::1;::::0;20320:15:::1;::::0;20278:59:::1;20348:15;:36:::0;;-1:-1:-1;;;;;;20348:36:0::1;-1:-1:-1::0;;;;;20348:36:0;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;19571:821:0:o;26474:118::-;924:12;:10;:12::i;:::-;914:6;;-1:-1:-1;;;;;914:6:0;;;:22;;;906:67;;;;;-1:-1:-1;;;906:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;906:67:0;;;;;;;;;;;;;;;26577:7:::1;26567:17;26549:15;:35:::0;26474:118::o;692:79::-;757:6;;-1:-1:-1;;;;;757:6:0;692:79;:::o;7447:104::-;7536:7;7529:14;;;;;;;;-1:-1:-1;;7529:14:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7503:13;;7529:14;;7536:7;;7529:14;;7536:7;7529:14;;;;;;;;;;;;;;;;;;;;;;;;27550:95;924:12;:10;:12::i;:::-;914:6;;-1:-1:-1;;;;;914:6:0;;;:22;;;906:67;;;;;-1:-1:-1;;;906:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;906:67:0;;;;;;;;;;;;;;;27617:12:::1;:20:::0;;;::::1;;::::0;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;27550:95::o;16447:27::-;;;;:::o;23010:239::-;924:12;:10;:12::i;:::-;914:6;;-1:-1:-1;;;;;914:6:0;;;:22;;;906:67;;;;;-1:-1:-1;;;906:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;906:67:0;;;;;;;;;;;;;;;23118:13:::1;::::0;-1:-1:-1;;;;;23110:21:0;;::::1;23118:13:::0;::::1;23110:21;;23101:88;;;;-1:-1:-1::0;;;23101:88:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23200:41;23229:4;23235:5;23200:28;:41::i;27212:124::-:0;924:12;:10;:12::i;:::-;914:6;;-1:-1:-1;;;;;914:6:0;;;:22;;;906:67;;;;;-1:-1:-1;;;906:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;906:67:0;;;;;;;;;;;;;;;27288:15:::1;27271:14;:32:::0;27314:6:::1;:14:::0;;-1:-1:-1;;27314:14:0::1;::::0;;27212:124::o;24399:109::-;24473:15;;:27;;;;;;;;24446:7;;-1:-1:-1;;;;;24473:15:0;;:25;;:27;;;;;;;;;;;;;;:15;:27;;;;;;;;;;8998:269;9091:4;9111:126;9120:12;:10;:12::i;:::-;9133:7;9141:95;9180:15;9141:95;;;;;;;;;;;;;;;;;:11;:25;9153:12;:10;:12::i;:::-;-1:-1:-1;;;;;9141:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;9141:25:0;;;:34;;;;;;;;;;;:95;:38;:95::i;16377:31::-;;;;:::o;24799:155::-;24899:15;;:47;;;;;;-1:-1:-1;;;;;24899:47:0;;;;;;;;;24869:7;;24899:15;;;;;:38;;:47;;;;;;;;;;;;;;;:15;:47;;;;;;;;;;7914:178;8000:4;8020:42;8030:12;:10;:12::i;:::-;8044:9;8055:6;8020:9;:42::i;25397:293::-;25646:15;;:36;;;;;;-1:-1:-1;;;;;25646:36:0;;;;;;;;;25471:15;;;;;;;;;;;;25646;;:26;;:36;;;;;;;;;;;;;;:15;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25646:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25646:36:0;;-1:-1:-1;25646:36:0;-1:-1:-1;25646:36:0;;-1:-1:-1;25646:36:0;-1:-1:-1;25397:293:0;-1:-1:-1;;25397:293:0:o;15975:57::-;;;;;;;;;;;;;;;:::o;22731:271::-;924:12;:10;:12::i;:::-;914:6;;-1:-1:-1;;;;;914:6:0;;;:22;;;906:67;;;;;-1:-1:-1;;;906:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;906:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;22824:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;::::1;;:40;;::::0;::::1;;;;22816:78;;;::::0;;-1:-1:-1;;;22816:78:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;;;;;22905:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;22905:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;22960:34;;;;;;;::::1;::::0;;;;;;;;::::1;22731:271:::0;;:::o;26600:307::-;924:12;:10;:12::i;:::-;914:6;;-1:-1:-1;;;;;914:6:0;;;:22;;;906:67;;;;;-1:-1:-1;;;906:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;906:67:0;;;;;;;;;;;;;;;26717:16:::1;:35:::0;;;26763:12:::1;:28:::0;;;26802:10:::1;:24:::0;;;26849:50:::1;26815:11:::0;26849:34:::1;26736:16:::0;26778:13;26849:20:::1;:34::i;:::-;:38:::0;::::1;:50::i;:::-;26837:9;:62:::0;-1:-1:-1;;;26600:307:0:o;16695:28::-;;;;:::o;26073:106::-;924:12;:10;:12::i;:::-;914:6;;-1:-1:-1;;;;;914:6:0;;;:22;;;906:67;;;;;-1:-1:-1;;;906:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;906:67:0;;;;;;;;;;;;;;;26142:8:::1;:29:::0;;-1:-1:-1;;;;;;26142:29:0::1;-1:-1:-1::0;;;;;26142:29:0;;;::::1;::::0;;;::::1;::::0;;26073:106::o;16415:25::-;;;;:::o;26299:167::-;924:12;:10;:12::i;:::-;914:6;;-1:-1:-1;;;;;914:6:0;;;:22;;;906:67;;;;;-1:-1:-1;;;906:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;906:67:0;;;;;;;;;;;;;;;26410:8:::1;26400:18:::0;;::::1;26385:12;:33:::0;26429:18:::1;:29:::0;;;::::1;;::::0;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;26299:167::o;8100:154::-;-1:-1:-1;;;;;8219:18:0;;;8189:7;8219:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8100:154::o;779:87::-;848:10;;-1:-1:-1;;;;;848:10:0;779:87;:::o;26915:93::-;924:12;:10;:12::i;:::-;914:6;;-1:-1:-1;;;;;914:6:0;;;:22;;;906:67;;;;;-1:-1:-1;;;906:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;906:67:0;;;;;;;;;;;;;;;26981:11:::1;:19:::0;;-1:-1:-1;;26981:19:0::1;::::0;::::1;;::::0;;;::::1;::::0;;26915:93::o;16516:33::-;;;;:::o;24250:141::-;24334:15;;:49;;;;;;;;24307:7;;-1:-1:-1;;;;;24334:15:0;;:47;;:49;;;;;;;;;;;;;;:15;:49;;;;;;;;;;23974:124;924:12;:10;:12::i;:::-;914:6;;-1:-1:-1;;;;;914:6:0;;;:22;;;906:67;;;;;-1:-1:-1;;;906:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;906:67:0;;;;;;;;;;;;;;;24048:15:::1;::::0;:42:::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;-1:-1:-1;;;;;24048:15:0;;::::1;::::0;:31:::1;::::0;:42;;;;;:15:::1;::::0;:42;;;;;;;;:15;;:42;::::1;;::::0;::::1;;;;::::0;::::1;16762:32:::0;;;;;;;;;:::o;26185:106::-;924:12;:10;:12::i;:::-;914:6;;-1:-1:-1;;;;;914:6:0;;;:22;;;906:67;;;;;-1:-1:-1;;;906:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;906:67:0;;;;;;;;;;;;;;;26254:8:::1;:29:::0;;-1:-1:-1;;;;;;26254:29:0::1;-1:-1:-1::0;;;;;26254:29:0;;;::::1;::::0;;;::::1;::::0;;26185:106::o;27014:93::-;924:12;:10;:12::i;:::-;914:6;;-1:-1:-1;;;;;914:6:0;;;:22;;;906:67;;;;;-1:-1:-1;;;906:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;906:67:0;;;;;;;;;;;;;;;27080:11:::1;:19:::0;;;::::1;;::::0;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;27014:93::o;1455:243::-;924:12;:10;:12::i;:::-;914:6;;-1:-1:-1;;;;;914:6:0;;;:22;;;906:67;;;;;-1:-1:-1;;;906:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;906:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;1544:22:0;::::1;1536:72;;;;-1:-1:-1::0;;;1536:72:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1645:6;::::0;1624:38:::1;::::0;-1:-1:-1;;;;;1624:38:0;;::::1;::::0;1645:6:::1;::::0;1624:38:::1;::::0;1645:6:::1;::::0;1624:38:::1;1673:6;:17:::0;;-1:-1:-1;;;;;;1673:17:0::1;-1:-1:-1::0;;;;;1673:17:0;;;::::1;::::0;;;::::1;::::0;;1455:243::o;27344:111::-;924:12;:10;:12::i;:::-;914:6;;-1:-1:-1;;;;;914:6:0;;;:22;;;906:67;;;;;-1:-1:-1;;;906:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;906:67:0;;;;;;;;;;;;;;;27419:20:::1;:28:::0;;;::::1;;;;::::0;;;::::1;::::0;;;::::1;::::0;;27344:111::o;22388:335::-;924:12;:10;:12::i;:::-;914:6;;-1:-1:-1;;;;;914:6:0;;;:22;;;906:67;;;;;-1:-1:-1;;;906:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;906:67:0;;;;;;;;;;;;;;;22538:15:::1;::::0;:25:::1;::::0;;;;;;;22495:22:::1;::::0;-1:-1:-1;;;;;22538:15:0::1;::::0;:23:::1;::::0;:25:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:15;:25;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;22538:25:0;22591:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;22591:22:0;;;;-1:-1:-1;;;;;22520:55:0;;::::1;::::0;::::1;::::0;22584:4:::1;::::0;22591:15;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;22538:25:::1;::::0;22591:22;;;;;;;;:15;:22;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;22591:22:0;22520:94:::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;;;;;22520:94:0;;::::1;;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;22591:22:::1;::::0;22520:94;;;;;;;-1:-1:-1;22520:94:0;;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;22520:94:0;22625:13:::1;:30:::0;;-1:-1:-1;;;;;;22625:30:0::1;-1:-1:-1::0;;;;;22625:30:0;;::::1;::::0;;;::::1;::::0;;;;22520:94;;-1:-1:-1;22666:49:0::1;::::0;22695:13:::1;-1:-1:-1::0;22666:28:0::1;:49::i;:::-;984:1;22388:335::o:0;1999:179::-;2057:7;2089:5;;;2113:6;;;;2105:46;;;;;-1:-1:-1;;;2105:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;2169:1;1999:179;-1:-1:-1;;;1999:179:0:o;97:98::-;177:10;97:98;:::o;10443:345::-;-1:-1:-1;;;;;10546:19:0;;10538:68;;;;-1:-1:-1;;;10538:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10625:21:0;;10617:68;;;;-1:-1:-1;;;10617:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10696:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10748:32;;;;;;;;;;;;;;;;;10443:345;;;:::o;27894:2045::-;-1:-1:-1;;;;;27992:18:0;;27984:68;;;;-1:-1:-1;;;27984:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;28071:16:0;;28063:64;;;;-1:-1:-1;;;28063:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;28147:20:0;;;;;;:14;:20;;;;;;;;28146:21;:44;;;;-1:-1:-1;;;;;;28172:18:0;;;;;;:14;:18;;;;;;;;28171:19;28146:44;28138:75;;;;;-1:-1:-1;;;28138:75:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;28235:7;:5;:7::i;:::-;-1:-1:-1;;;;;28227:15:0;:4;-1:-1:-1;;;;;28227:15:0;;28224:80;;28267:6;;;;;;;28266:7;28258:34;;;;;-1:-1:-1;;;28258:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;28335:7;:5;:7::i;:::-;-1:-1:-1;;;;;28327:15:0;:4;-1:-1:-1;;;;;28327:15:0;;;:32;;;;;28352:7;:5;:7::i;:::-;-1:-1:-1;;;;;28346:13:0;:2;-1:-1:-1;;;;;28346:13:0;;;28327:32;28324:107;;;28375:44;28402:4;28408:2;28412:6;28375:26;:44::i;:::-;28441:31;28459:4;28465:6;28441:17;:31::i;:::-;28507:11;28503:93;;28535:28;28551:4;28557:2;28561:1;28535:15;:28::i;:::-;28578:7;;28503:93;28608:28;28639:24;28657:4;28639:9;:24::i;:::-;28729:18;;28772:11;;28608:55;;-1:-1:-1;28705:42:0;;;;28772:11;;:24;;;;-1:-1:-1;28788:8:0;;;;;;;28787:9;28772:24;:49;;;;-1:-1:-1;28808:13:0;;-1:-1:-1;;;;;28800:21:0;;;28808:13;;28800:21;;28772:49;:76;;;;;28825:23;28772:76;28768:221;;;28869:8;:15;;-1:-1:-1;;28869:15:0;;;;;28903:39;28921:20;28903:17;:39::i;:::-;28961:8;:16;;-1:-1:-1;;28961:16:0;;;28768:221;29017:8;;-1:-1:-1;;;;;29040:25:0;;29001:12;29040:25;;;:19;:25;;;;;;29017:8;;;;;;;29016:9;;29040:25;;:52;;-1:-1:-1;;;;;;29069:23:0;;;;;;:19;:23;;;;;;;;29040:52;29036:100;;;-1:-1:-1;29119:5:0;29036:100;29152:7;29148:437;;;29176:12;29191:30;29217:3;29191:21;29202:9;;29191:6;:10;;:21;;;;:::i;:::-;:25;;:30::i;:::-;29176:45;;29247:7;:5;:7::i;:::-;-1:-1:-1;;;;;29239:15:0;:4;-1:-1:-1;;;;;29239:15:0;;;:40;;;;-1:-1:-1;29266:13:0;;-1:-1:-1;;;;;29258:21:0;;;29266:13;;29258:21;;29239:40;:65;;;;-1:-1:-1;;;;;;29283:21:0;;29299:4;29283:21;;29239:65;:101;;;;-1:-1:-1;29324:15:0;;-1:-1:-1;;;;;29308:32:0;;;29324:15;;29308:32;;29239:101;:160;;;;-1:-1:-1;29359:15:0;;-1:-1:-1;;;;;29345:30:0;;;29359:15;;29345:30;;:53;;-1:-1:-1;29385:13:0;;-1:-1:-1;;;;;29379:19:0;;;29385:13;;29379:19;29345:53;29236:241;;;29427:34;29457:3;29427:25;29438:13;;29427:6;:10;;:25;;;;:::i;:34::-;29420:41;;29236:241;29500:16;:6;29511:4;29500:10;:16::i;:::-;29491:25;;29531:42;29547:4;29561;29568;29531:15;:42::i;:::-;29148:437;;29597:33;29613:4;29619:2;29623:6;29597:15;:33::i;:::-;-1:-1:-1;;;;;29729:18:0;;;;;;:14;:18;;;;;;;;29725:207;;29767:15;;-1:-1:-1;;;;;29767:15:0;:26;29802:4;29809:15;29802:4;29809:9;:15::i;:::-;29767:58;;;;;;;;;;;;;-1:-1:-1;;;;;29767:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29763:74;29855:15;;-1:-1:-1;;;;;29855:15:0;:26;29890:2;29895:13;29890:2;29895:9;:13::i;:::-;29855:54;;;;;;;;;;;;;-1:-1:-1;;;;;29855:54:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29851:70;;;;2330:197;2423:7;2459:12;2451:6;;;;2443:29;;;;-1:-1:-1;;;2443:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2495:5:0;;;2330:197::o;9760:314::-;-1:-1:-1;;;;;9844:21:0;;9836:65;;;;;-1:-1:-1;;;9836:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;9927:12;;:24;;9944:6;9927:16;:24::i;:::-;9912:12;:39;-1:-1:-1;;;;;9983:18:0;;:9;:18;;;;;;;;;;;:30;;10006:6;9983:22;:30::i;:::-;-1:-1:-1;;;;;9962:18:0;;:9;:18;;;;;;;;;;;:51;;;;10029:37;;;;;;;9962:18;;:9;;10029:37;;;;;;;;;;9760:314;;:::o;23257:402::-;-1:-1:-1;;;;;23348:31:0;;;;;;:25;:31;;;;;;;;:40;;;;;;;23340:108;;;;-1:-1:-1;;;23340:108:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;23459:31:0;;;;;;:25;:31;;;;;:39;;-1:-1:-1;;23459:39:0;;;;;;;;;;;;23509:87;;23535:15;;:49;;;-1:-1:-1;;;23535:49:0;;-1:-1:-1;;;;;23535:49:0;;;;;;;:15;:49;;;;;;;;:15;;;:36;;:49;;;;;:15;;:49;;;;;;:15;;:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23509:87;23611:40;;;;;;-1:-1:-1;;;;;23611:40:0;;;;;;;;23257:402;;:::o;30849:1702::-;30949:12;;;;;;;30946:158;;;-1:-1:-1;;;;;30981:21:0;;30997:4;30981:21;30978:115;;31040:11;;31030:6;:21;;31022:55;;;;;-1:-1:-1;;;31022:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;31119:8;;;;;;;31116:318;;;-1:-1:-1;;;;;31147:21:0;;31163:4;31147:21;;;;:44;;-1:-1:-1;;;;;;31172:19:0;;31186:4;31172:19;;31147:44;:78;;;;-1:-1:-1;31209:15:0;;-1:-1:-1;;;;;31195:30:0;;;31209:15;;31195:30;;31147:78;:101;;;;-1:-1:-1;31235:13:0;;-1:-1:-1;;;;;31229:19:0;;;31235:13;;31229:19;;31147:101;31143:280;;;31285:9;31277:18;;;;:7;:18;;;;;;31318:10;31300:15;:28;-1:-1:-1;31277:52:0;31269:83;;;;;-1:-1:-1;;;31269:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;31379:9;31371:18;;;;:7;:18;;;;;31392:15;31371:36;;31143:280;31449:12;;;;;;;31446:402;;;31488:13;;-1:-1:-1;;;;;31480:21:0;;;31488:13;;31480:21;:55;;;;-1:-1:-1;31519:15:0;;-1:-1:-1;;;;;31505:30:0;;;31519:15;;31505:30;;31480:55;:78;;;;-1:-1:-1;;;;;;31539:19:0;;31553:4;31539:19;;31480:78;:103;;;;-1:-1:-1;;;;;;31562:21:0;;31578:4;31562:21;;31480:103;31477:167;;;31612:9;-1:-1:-1;;;;;31612:15:0;;;31603:25;;;;;;31680:14;;31661:15;:33;;:58;;;;-1:-1:-1;31706:13:0;;-1:-1:-1;;;;;31698:21:0;;;31706:13;;31698:21;31661:58;:92;;;;-1:-1:-1;31737:15:0;;-1:-1:-1;;;;;31723:30:0;;;31737:15;;31723:30;;31661:92;:115;;;;-1:-1:-1;;;;;;31757:19:0;;31771:4;31757:19;;31661:115;31658:179;;;-1:-1:-1;;;;;31796:18:0;;;;;;:14;:18;;;;;:25;;-1:-1:-1;;31796:25:0;31817:4;31796:25;;;31658:179;31871:18;;;;;;;31868:283;;;-1:-1:-1;;;;;31908:31:0;;;;;;:25;:31;;;;;;;;:65;;;;-1:-1:-1;31957:15:0;;-1:-1:-1;;;;;31943:30:0;;;31957:15;;31943:30;;31908:65;:88;;;;-1:-1:-1;;;;;;31977:19:0;;31991:4;31977:19;;31908:88;31905:235;;;32017:12;32032:13;32042:2;32032:9;:13::i;:::-;32095:12;;32017:28;;-1:-1:-1;32072:19:0;32017:28;32084:6;32072:11;:19::i;:::-;:35;;32064:44;;;;;;31905:235;;32166:11;;;;;;;32163:381;;;-1:-1:-1;;;;;32198:21:0;;32214:4;32198:21;;;;:44;;-1:-1:-1;;;;;;32223:19:0;;32237:4;32223:19;;32198:44;:82;;;;-1:-1:-1;;;;;;32247:33:0;;;;;;:27;:33;;;;;;;;32246:34;32198:82;:118;;;;-1:-1:-1;;;;;;32285:31:0;;;;;;:25;:31;;;;;;;;32284:32;32198:118;:154;;;;-1:-1:-1;;;;;;32321:31:0;;;;;;:27;:31;;;;;;;;32320:32;32198:154;:188;;;;-1:-1:-1;;;;;;32357:29:0;;;;;;:25;:29;;;;;;;;32356:30;32198:188;32193:340;;;32416:27;:41;32444:12;:10;:12::i;:::-;-1:-1:-1;;;;;32416:41:0;;;;;;;;;;;;-1:-1:-1;32416:41:0;;;;;:84;;;32461:25;:39;32487:12;:10;:12::i;:::-;-1:-1:-1;;;;;32461:39:0;;;;;;;;;;;;-1:-1:-1;32461:39:0;;;;32416:84;32408:109;;;;;-1:-1:-1;;;32408:109:0;;;;;;;;;;;;;;;;;;;;;;;;;;;32694:2114;-1:-1:-1;;;;;32773:20:0;;;;;;:14;:20;;;;;;;;32770:2031;;;32827:15;;32818:6;:24;32809:53;;;;;-1:-1:-1;;;32809:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;32877:15;32895;32905:4;32895:9;:15::i;:::-;-1:-1:-1;;;;;32946:18:0;;32925;32946;;;:12;:18;;;;;;33020:14;;32877:33;;-1:-1:-1;32946:18:0;33000:35;;:15;;:19;:35::i;:::-;32979:56;;33071:8;33058:10;:21;33050:56;;;;;-1:-1:-1;;;33050:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;33138:7;33125:10;:20;33121:108;;;33179:25;33201:2;33179:17;:10;33194:1;33179:14;:17::i;:25::-;33157:19;:7;33169:6;33157:11;:19::i;:::-;:47;33149:77;;;;;-1:-1:-1;;;33149:77:0;;;;;;;;;;;;-1:-1:-1;;;33149:77:0;;;;;;;;;;;;;;;33260:7;33247:10;:20;33243:110;;;33301:27;33324:3;33301:18;:10;33316:2;33301:14;:18::i;:27::-;33279:19;:7;33291:6;33279:11;:19::i;:::-;:49;33271:79;;;;;-1:-1:-1;;;33271:79:0;;;;;;;;;;;;-1:-1:-1;;;33271:79:0;;;;;;;;;;;;;;;33384:8;33371:10;:21;33367:111;;;33426:27;33449:3;33426:18;:10;33441:2;33426:14;:18::i;:27::-;33404:19;:7;33416:6;33404:11;:19::i;:::-;:49;33396:79;;;;;-1:-1:-1;;;33396:79:0;;;;;;;;;;;;-1:-1:-1;;;33396:79:0;;;;;;;;;;;;;;;33509:8;33496:10;:21;33492:111;;;33551:27;33574:3;33551:18;:10;33566:2;33551:14;:18::i;:27::-;33529:19;:7;33541:6;33529:11;:19::i;:::-;:49;33521:79;;;;;-1:-1:-1;;;33521:79:0;;;;;;;;;;;;-1:-1:-1;;;33521:79:0;;;;;;;;;;;;;;;33634:8;33621:10;:21;33617:111;;;33676:27;33699:3;33676:18;:10;33691:2;33676:14;:18::i;:27::-;33654:19;:7;33666:6;33654:11;:19::i;:::-;:49;33646:79;;;;;-1:-1:-1;;;33646:79:0;;;;;;;;;;;;-1:-1:-1;;;33646:79:0;;;;;;;;;;;;;;;33759:8;33746:10;:21;33742:111;;;33801:27;33824:3;33801:18;:10;33816:2;33801:14;:18::i;:27::-;33779:19;:7;33791:6;33779:11;:19::i;:::-;:49;33771:79;;;;;-1:-1:-1;;;33771:79:0;;;;;;;;;;;;-1:-1:-1;;;33771:79:0;;;;;;;;;;;;;;;33884:8;33871:10;:21;33867:101;;;33926:17;:10;33941:1;33926:14;:17::i;:::-;33904:19;:7;33916:6;33904:11;:19::i;:::-;:39;33896:69;;;;;-1:-1:-1;;;33896:69:0;;;;;;;;;;;;-1:-1:-1;;;33896:69:0;;;;;;;;;;;;;;;33999:8;33986:10;:21;33982:111;;;34041:27;34064:3;34041:18;:10;34056:2;34041:14;:18::i;:27::-;34019:19;:7;34031:6;34019:11;:19::i;:::-;:49;34011:79;;;;;-1:-1:-1;;;34011:79:0;;;;;;;;;;;;-1:-1:-1;;;34011:79:0;;;;;;;;;;;;;;;34124:8;34111:10;:21;34107:111;;;34166:27;34189:3;34166:18;:10;34181:2;34166:14;:18::i;:27::-;34144:19;:7;34156:6;34144:11;:19::i;:::-;:49;34136:79;;;;;-1:-1:-1;;;34136:79:0;;;;;;;;;;;;-1:-1:-1;;;34136:79:0;;;;;;;;;;;;;;;34249:8;34236:10;:21;34232:111;;;34291:27;34314:3;34291:18;:10;34306:2;34291:14;:18::i;:27::-;34269:19;:7;34281:6;34269:11;:19::i;:::-;:49;34261:79;;;;;-1:-1:-1;;;34261:79:0;;;;;;;;;;;;-1:-1:-1;;;34261:79:0;;;;;;;;;;;;;;;34374:8;34361:10;:21;34357:111;;;34416:27;34439:3;34416:18;:10;34431:2;34416:14;:18::i;:27::-;34394:19;:7;34406:6;34394:11;:19::i;:::-;:49;34386:79;;;;;-1:-1:-1;;;34386:79:0;;;;;;;;;;;;-1:-1:-1;;;34386:79:0;;;;;;;;;;;;;;;34499:8;34486:10;:21;34482:111;;;34541:27;34564:3;34541:18;:10;34556:2;34541:14;:18::i;:27::-;34519:19;:7;34531:6;34519:11;:19::i;:::-;:49;34511:79;;;;;-1:-1:-1;;;34511:79:0;;;;;;;;;;;;-1:-1:-1;;;34511:79:0;;;;;;;;;;;;;;;34624:8;34611:10;:21;34607:110;;;34666:26;34688:3;34666:17;:10;34681:1;34666:14;:17::i;:26::-;34644:19;:7;34656:6;34644:11;:19::i;:::-;:48;34636:78;;;;;-1:-1:-1;;;34636:78:0;;;;;;;;;;;;-1:-1:-1;;;34636:78:0;;;;;;;;;;;;;;;34748:8;34735:10;:21;34731:59;;;-1:-1:-1;;;;;;;;;34759:20:0;34782:5;34759:20;;;:14;:20;;;;;:28;;-1:-1:-1;;34759:28:0;;;32694:2114::o;9275:477::-;-1:-1:-1;;;;;9382:20:0;;9374:70;;;;-1:-1:-1;;;9374:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9463:23:0;;9455:71;;;;-1:-1:-1;;;9455:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9557:70;9579:6;9557:70;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9557:17:0;;:9;:17;;;;;;;;;;;;:70;:21;:70::i;:::-;-1:-1:-1;;;;;9537:17:0;;;:9;:17;;;;;;;;;;;:90;;;;9661:20;;;;;;;:32;;9686:6;9661:24;:32::i;:::-;-1:-1:-1;;;;;9638:20:0;;;:9;:20;;;;;;;;;;;;:55;;;;9709:35;;;;;;;9638:20;;9709:35;;;;;;;;;;;;;9275:477;;;:::o;29947:894::-;30009:18;30030:39;30059:9;;30030:24;30041:12;;30030:6;:10;;:24;;;;:::i;:39::-;30009:60;-1:-1:-1;30080:20:0;30103:17;30009:60;30118:1;30103:14;:17::i;:::-;30080:40;-1:-1:-1;30131:20:0;30154:24;:6;30080:40;30154:10;:24::i;:::-;30131:47;-1:-1:-1;30210:21:0;30242:30;30131:47;30242:16;:30::i;:::-;30283:19;30305:37;:21;30331:10;30305:25;:37::i;:::-;30283:59;;30353:17;30374:51;30423:1;30374:44;30408:9;;30374:29;30390:12;;30374:11;:15;;:29;;;;:::i;:51::-;30353:73;;30437:21;30462:49;30509:1;30462:42;30494:9;;30462:27;30478:10;;30462:11;:15;;:27;;;;:::i;:49::-;30523:8;;:32;;30437:75;;-1:-1:-1;30523:8:0;;;-1:-1:-1;;;;;30523:8:0;;:32;;;;;30437:75;;30523:32;;;;30437:75;30523:8;:32;;;;;;;;;;;;;;;;;;;;-1:-1:-1;30566:8:0;;:32;;-1:-1:-1;;;;;30566:8:0;;;;:32;;;;;30584:13;;30566:8;:32;:8;:32;30584:13;30566:8;:32;;;;;;;;;;;;;;;;;;;;-1:-1:-1;30609:8:0;;:32;;-1:-1:-1;;;;;30609:8:0;;;;:32;;;;;30627:13;;30609:8;:32;:8;:32;30627:13;30609:8;:32;;;;;;;;;;;;;;;;;;;;;30652:37;30665:12;30679:9;30652:12;:37::i;:::-;30758:20;;30723:21;;30758:20;;;;;30755:79;;;30795:27;30809:12;30795:13;:27::i;:::-;29947:894;;;;;;;;;:::o;2535:246::-;2593:7;2617:6;2613:47;;-1:-1:-1;2647:1:0;2640:8;;2613:47;2682:5;;;2686:1;2682;:5;:1;2706:5;;;;;:10;2698:56;;;;-1:-1:-1;;;2698:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2789:132;2847:7;2874:39;2878:1;2881;2874:39;;;;;;;;;;;;;;;;;:3;:39::i;2186:136::-;2244:7;2271:43;2275:1;2278;2271:43;;;;;;;;;;;;;;;;;:3;:43::i;35324:395::-;35414:16;;;35428:1;35414:16;;;;;;;;35390:21;;35414:16;;;;;;;;;;-1:-1:-1;35414:16:0;35390:40;;35459:4;35441;35446:1;35441:7;;;;;;;;-1:-1:-1;;;;;35441:23:0;;;:7;;;;;;;;;;:23;;;;35485:15;;:22;;;-1:-1:-1;;;35485:22:0;;;;:15;;;;;:20;;:22;;;;;35441:7;;35485:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;35485:22:0;35475:7;;:4;;35480:1;;35475:7;;;;;;-1:-1:-1;;;;;35475:32:0;;;:7;;;;;;;;;:32;35550:15;;35518:62;;35535:4;;35550:15;35568:11;35518:8;:62::i;:::-;35591:15;;:120;;;;;;;;;;;:15;:120;;;;;;35688:4;35591:120;;;;;;35695:15;35591:120;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;35591:15:0;;;;:66;;35658:11;;35674:4;;35688;35695:15;35591:120;;;;;;;;;;;;;;;;:15;:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35050:266;35163:15;;35131:62;;35148:4;;-1:-1:-1;;;;;35163:15:0;35181:11;35131:8;:62::i;:::-;35204:15;;-1:-1:-1;;;;;35204:15:0;:31;35243:9;35262:4;35268:11;35204:15;;35284:7;:5;:7::i;:::-;35292:15;35204:104;;;;;;;;;;;;;-1:-1:-1;;;;;35204:104:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;35204:104:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;35050:266:0:o;34824:218::-;34912:15;;34904:51;;34886:12;;-1:-1:-1;;;;;34912:15:0;;34941:9;;34886:12;34904:51;34886:12;34904:51;34941:9;34912:15;34904:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34885:70;;;34970:7;34966:69;;;34999:24;;;;;;;;;;;;;;;;;34824:218;;:::o;2929:190::-;3016:7;3051:12;3044:5;3036:28;;;;-1:-1:-1;;;3036:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3075:9;3091:1;3087;:5;;;;;;;2929:190;-1:-1:-1;;;;;2929:190:0:o

Swarm Source

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

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