ETH Price: $2,863.75 (+6.43%)
 

Overview

Max Total Supply

50,000,000 GLDNRTVR

Holders

27

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
gldn21.eth
Balance
0 GLDNRTVR

Value
$0.00
0xb2c78c261272b78ad8a503f549ee15a578486213
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:
GoldenRetriever

Compiler Version
v0.7.4+commit.3f05b770

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-06-17
*/

/*


████████ ██   ██ ███████      ██████   ██████  ██      ██████  ███████ ███    ██     ██████  ███████ ████████ ██████  ██ ███████ ██    ██ ███████ ██████  
   ██    ██   ██ ██          ██       ██    ██ ██      ██   ██ ██      ████   ██     ██   ██ ██         ██    ██   ██ ██ ██      ██    ██ ██      ██   ██ 
   ██    ███████ █████       ██   ███ ██    ██ ██      ██   ██ █████   ██ ██  ██     ██████  █████      ██    ██████  ██ █████   ██    ██ █████   ██████  
   ██    ██   ██ ██          ██    ██ ██    ██ ██      ██   ██ ██      ██  ██ ██     ██   ██ ██         ██    ██   ██ ██ ██       ██  ██  ██      ██   ██ 
   ██    ██   ██ ███████      ██████   ██████  ███████ ██████  ███████ ██   ████     ██   ██ ███████    ██    ██   ██ ██ ███████   ████   ███████ ██   ██ 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 

Two things that have held true since the beginning of time. The first, dogs have given us unconditional love. 
The perfect example is The Golden Retriever. If you don’t believe in God go play with one and you will. 
The second is that Gold is the only real money.  Put it on the blockchain it’s unstoppable. I have given you both. 
Rewards in real gold, and a website where you watch golden retrievers when you feel down and post your pics too, 
maybe for extra rewards one day as well. This contract will locked for quite some time. 
Use it well and save your gold, you will need it as the fiat markets crumble which is NOW.  
The gold rewards you receive are redeemable for real physical gold. You will see how on the website below. 

www.thegoldenretrievertoken.com
https://t.me/GLDNRTVR_ETH

Tokenomics:

* 50 Million Supply
* Buys : 3 Percent Auto LP, 2 Percent Marketing, 5 Percent PAXG Rewards
* Sells:  5 Percent Auto LP, 2 Percent Marketing, 3 percent PAXG Rewards

*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.7.4;

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;
    }
}

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) {
        require(b != 0);
        return a % b;
    }
}

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

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

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

    function transfer(address to, uint256 value) external returns (bool);

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

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external returns (bool);

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

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

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

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

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

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

		function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;

		event Mint(address indexed sender, uint amount0, uint amount1);
		event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
		event Swap(
				address indexed sender,
				uint amount0In,
				uint amount1In,
				uint amount0Out,
				uint amount1Out,
				address indexed to
		);
		event Sync(uint112 reserve0, uint112 reserve1);

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

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

		function initialize(address, address) external;
}

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

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

		function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
		function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
		function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
		function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
		function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
		function removeLiquidityETHSupportingFeeOnTransferTokens(
			address token,
			uint liquidity,
			uint amountTokenMin,
			uint amountETHMin,
			address to,
			uint deadline
		) external returns (uint amountETH);
		function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
			address token,
			uint liquidity,
			uint amountTokenMin,
			uint amountETHMin,
			address to,
			uint deadline,
			bool approveMax, uint8 v, bytes32 r, bytes32 s
		) external returns (uint amountETH);
	
		function swapExactTokensForTokensSupportingFeeOnTransferTokens(
			uint amountIn,
			uint amountOutMin,
			address[] calldata path,
			address to,
			uint deadline
		) external;
		function swapExactETHForTokensSupportingFeeOnTransferTokens(
			uint amountOutMin,
			address[] calldata path,
			address to,
			uint deadline
		) external payable;
		function swapExactTokensForETHSupportingFeeOnTransferTokens(
			uint amountIn,
			uint amountOutMin,
			address[] calldata path,
			address to,
			uint deadline
		) external;
}

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

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

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

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

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

interface IDividendDistributor {
    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external;
    function setShare(address shareholder, uint256 amount) external;
    function deposit() external payable;
    function process(uint256 gas) external;
}

contract DividendDistributor is IDividendDistributor {
    using SafeMath for uint256;

    address _token;

    struct Share {
        uint256 amount;
        uint256 totalExcluded;
        uint256 totalRealised;
    }
    //Mainnet
    IERC20 PAX = IERC20(0x45804880De22913dAFE09f4980848ECE6EcbAf78); 

    //Testnet 
    // IERC20 PAX = IERC20(0xaD6D458402F60fD3Bd25163575031ACDce07538D);  //DAI TOKEN

    IPancakeSwapRouter router;

    address[] shareholders;
    mapping (address => uint256) shareholderIndexes;
    mapping (address => uint256) shareholderClaims;

    mapping (address => Share) public shares;

    uint256 public totalShares;
    uint256 public totalDividends;
    uint256 public totalDistributed;
    uint256 public dividendsPerShare;
    uint256 public currentIndex;

    uint256 public dividendsPerShareAccuracyFactor = 10 ** 36;
    uint256 public minPeriod = 1 hours;
    uint256 public minDistribution = 1 * (10 ** 18);

    bool initialized;
    modifier initialization() {
        require(!initialized);
        _;
        initialized = true;
    }

    modifier onlyToken() {
        require(msg.sender == _token); _;
    }

    constructor (address _router) {
        router = _router != address(0)
        ? IPancakeSwapRouter(_router)
        : IPancakeSwapRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D );
        _token = msg.sender;
    }

    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external override onlyToken {
        minPeriod = _minPeriod;
        minDistribution = _minDistribution;
    }

    function setShare(address shareholder, uint256 amount) external override onlyToken {
        if(shares[shareholder].amount > 0){
            distributeDividend(shareholder);
        }

        if(amount > 0 && shares[shareholder].amount == 0){
            addShareholder(shareholder);
        }else if(amount == 0 && shares[shareholder].amount > 0){
            removeShareholder(shareholder);
        }

        totalShares = totalShares.sub(shares[shareholder].amount).add(amount);
        shares[shareholder].amount = amount;
        shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
    }

    function rescueToken(address tokenAddress,address _receiver, uint256 tokens) external onlyToken returns (bool success){
        return IERC20(tokenAddress).transfer(_receiver, tokens);
    }

    function deposit() external payable override onlyToken {
        uint256 balanceBefore = PAX.balanceOf(address(this));

        address[] memory path = new address[](2);
        path[0] = router.WETH();
        path[1] = address(PAX);

        router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: msg.value}(
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amount = PAX.balanceOf(address(this)).sub(balanceBefore);

        totalDividends = totalDividends.add(amount);
        dividendsPerShare = dividendsPerShare.add(dividendsPerShareAccuracyFactor.mul(amount).div(totalShares));
    }

    function process(uint256 gas) external override onlyToken {
        uint256 shareholderCount = shareholders.length;

        if(shareholderCount == 0) { return; }

        uint256 gasUsed = 0;
        uint256 gasLeft = gasleft();
        uint256 iterations = 0;

        while(gasUsed < gas && iterations < shareholderCount) {
            if(currentIndex >= shareholderCount){
                currentIndex = 0;
            }

            if(shouldDistribute(shareholders[currentIndex])){
                distributeDividend(shareholders[currentIndex]);
            }

            gasUsed = gasUsed.add(gasLeft.sub(gasleft()));
            gasLeft = gasleft();
            currentIndex++;
            iterations++;
        }
    }

    function shouldDistribute(address shareholder) internal view returns (bool) {
        return shareholderClaims[shareholder] + minPeriod < block.timestamp && getUnpaidEarnings(shareholder) > minDistribution;
    }

    function distributeDividend(address shareholder) internal {
        if(shares[shareholder].amount == 0){ return; }

        uint256 amount = getUnpaidEarnings(shareholder);
        if(amount > 0){
            totalDistributed = totalDistributed.add(amount);
            PAX.transfer(shareholder, amount);
            shareholderClaims[shareholder] = block.timestamp;
            shares[shareholder].totalRealised = shares[shareholder].totalRealised.add(amount);
            shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
        }
    }

    function claimDividend() external {
        distributeDividend(msg.sender);
    }

    function getUnpaidEarnings(address shareholder) public view returns (uint256) {
        if(shares[shareholder].amount == 0){ return 0; }

        uint256 shareholderTotalDividends = getCumulativeDividends(shares[shareholder].amount);
        uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded;

        if(shareholderTotalDividends <= shareholderTotalExcluded){ return 0; }

        return shareholderTotalDividends.sub(shareholderTotalExcluded);
    }

    function getCumulativeDividends(uint256 share) internal view returns (uint256) {
        return share.mul(dividendsPerShare).div(dividendsPerShareAccuracyFactor);
    }

    function addShareholder(address shareholder) internal {
        shareholderIndexes[shareholder] = shareholders.length;
        shareholders.push(shareholder);
    }

    function removeShareholder(address shareholder) internal {
        shareholders[shareholderIndexes[shareholder]] = shareholders[shareholders.length-1];
        shareholderIndexes[shareholders[shareholders.length-1]] = shareholderIndexes[shareholder];
        shareholders.pop();
    }
}

contract Ownable {
    address private _owner;

    event OwnershipRenounced(address indexed previousOwner);

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

    constructor() {
        _owner = msg.sender;
    }

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

    modifier onlyOwner() {
        require(isOwner());
        _;
    }

    function isOwner() public view returns (bool) {
        return msg.sender == _owner;
    }

    function renounceOwnership() public onlyOwner {
        emit OwnershipRenounced(_owner);
        _owner = address(0);
    }

    function transferOwnership(address newOwner) public onlyOwner {
        _transferOwnership(newOwner);
    }

    function _transferOwnership(address newOwner) internal {
        require(newOwner != address(0));
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

abstract contract ERC20Detailed is IERC20 {
    string private _name;
    string private _symbol;
    uint8 private _decimals;

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

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

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

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

contract GoldenRetriever is ERC20Detailed, Ownable {

    using SafeMath for uint256;
    using SafeMathInt for int256;


    modifier validRecipient(address to) {
        require(to != address(0x0));
        _;
    }

    uint256 public buyLiquidityFee = 30;
    uint256 public buyMarketingFee = 20;
    uint256 public buyRewardsFee = 50;

    uint256 public sellLiquidityFee = 50;
    uint256 public sellMarketingFee = 20;
    uint256 public sellRewardsFee = 30;

    uint256 public AmountLiquidityFee;
    uint256 public AmountMarketingFee;
    uint256 public AmountRewardsFee;

    uint256 public feeDenominator = 1000;

    address public _marketingWalletAddress = 0x76b61a1AFe8711F431d3d6F770E8fE7e7004E871;

    address private constant deadWallet = 0x000000000000000000000000000000000000dEaD;
    address private constant ZeroWallet = 0x0000000000000000000000000000000000000000;

    mapping(address => bool) public blacklist;
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) public isTxLimitExempt;
    mapping (address => bool) public isWalletLimitExempt;
    mapping (address => bool) public automatedMarketMakerPairs;
    mapping(address => bool) public isDividendExempt;
    mapping (address => bool) private allowTransfer;

    uint256 public constant DECIMALS = 18;

    uint256 public _totalSupply = 50_000_000 * (10 ** DECIMALS);
    uint256 public swapTokensAtAmount = _totalSupply.mul(5).div(1e5); //0.05%

    uint256 public MaxWalletLimit = _totalSupply.mul(30).div(feeDenominator);  //3%
    uint256 public MaxTxLimit = _totalSupply.mul(15).div(feeDenominator);    //1.5%

    bool public EnableTransactionLimit = true;
    bool public checkWalletLimit = true;

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

    bool public _autoAddLiquidity = true;
    bool public initalDistribution;
  
    DividendDistributor distributor;
    address public GLDNRTVRDividendReceiver;

    uint256 distributorGas = 500000;
    
    address public pair;
    IPancakeSwapPair public pairContract;
    IPancakeSwapRouter public router;

    bool inSwap = false;

    modifier swapping() {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() ERC20Detailed("THE GOLDEN RETRIEVER", "GLDNRTVR", uint8(DECIMALS)) Ownable() {

        router = IPancakeSwapRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D ); 

        pair = IPancakeSwapFactory(router.factory()).createPair(
            router.WETH(),
            address(this)
        );

        _allowances[address(this)][address(router)] = uint256(-1);

        pairContract = IPancakeSwapPair(pair);
        automatedMarketMakerPairs[pair] = true;

        distributor = new DividendDistributor(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D );

        GLDNRTVRDividendReceiver = address(distributor);

        isDividendExempt[owner()] = true;
        isDividendExempt[pair] = true;
        isDividendExempt[address(this)] = true;
        isDividendExempt[deadWallet] = true;
        isDividendExempt[ZeroWallet] = true;
        
        isWalletLimitExempt[owner()] = true;
        isWalletLimitExempt[pair] = true;
        isWalletLimitExempt[address(this)] = true;

        _isExcludedFromFees[owner()] = true;
        _isExcludedFromFees[address(this)] = true;

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

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

    function transfer(address to, uint256 value)
        external
        override
        validRecipient(to)
        returns (bool)
    {
        _transferFrom(msg.sender, to, value);
        return true;
    }

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external override validRecipient(to) returns (bool) {
        
        if (_allowances[from][msg.sender] != uint256(-1)) {
            _allowances[from][msg.sender] = _allowances[from][
                msg.sender
            ].sub(value, "Insufficient Allowance");
        }
        _transferFrom(from, to, value);
        return true;
    }

    function _basicTransfer(
        address from,
        address to,
        uint256 amount
    ) internal returns (bool) {
        _balances[from] = _balances[from].sub(amount);
        _balances[to] = _balances[to].add(amount);
        return true;
    }

    function _transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (bool) {

        require(!blacklist[sender] && !blacklist[recipient], "in_blacklist");

        require(initalDistribution || allowTransfer[msg.sender] || isOwner() ,"Trade is Currently Paused!!");

        if(!isTxLimitExempt[sender] && !isTxLimitExempt[recipient] && EnableTransactionLimit) {
            require(amount <= MaxTxLimit, "Transfer amount exceeds the maxTxAmount.");
        }


        if (inSwap) {
            return _basicTransfer(sender, recipient, amount);
        }

        if (shouldAddLiquidity()) {
            addLiquidity();
        }

        if (shouldSwapBack()) {
            swapBack();
        }
        
        _balances[sender] = _balances[sender].sub(amount);
        
        uint256 AmountReceived = shouldTakeFee(sender, recipient)
            ? takeFee(sender, recipient, amount)
            : amount;

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

        if(checkWalletLimit && !isWalletLimitExempt[recipient]) {
            require(balanceOf(recipient).add(AmountReceived) <= MaxWalletLimit);
        }

        if(!isDividendExempt[sender]){ try distributor.setShare(sender, balanceOf(sender)) {} catch {} }
        if(!isDividendExempt[recipient]){ try distributor.setShare(recipient, balanceOf(recipient)) {} catch {} }

        try distributor.process(distributorGas) {} catch {}

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

    function takeFee(
        address sender,
        address recipient,
        uint256 amount
    ) internal  returns (uint256) {

        uint256 feeAmount;
        uint LFEE;
        uint MFEE;
        uint RFEE;
        
        if(automatedMarketMakerPairs[sender]){

            LFEE = amount.mul(buyLiquidityFee).div(feeDenominator);
            AmountLiquidityFee += LFEE;
            MFEE = amount.mul(buyMarketingFee).div(feeDenominator);
            AmountMarketingFee += MFEE;
            RFEE = amount.mul(buyRewardsFee).div(feeDenominator);
            AmountRewardsFee += RFEE;

            feeAmount = LFEE.add(MFEE).add(RFEE);
        }
        else if(automatedMarketMakerPairs[recipient]){

            LFEE = amount.mul(sellLiquidityFee).div(feeDenominator);
            AmountLiquidityFee += LFEE;
            MFEE = amount.mul(sellMarketingFee).div(feeDenominator);
            AmountMarketingFee += MFEE;
            RFEE = amount.mul(sellRewardsFee).div(feeDenominator);
            AmountRewardsFee += RFEE;

            feeAmount = LFEE.add(MFEE).add(RFEE);
    
        }

        if(feeAmount > 0) {
            _balances[address(this)] = _balances[address(this)].add(feeAmount);
            emit Transfer(sender, address(this), feeAmount);
        }

        return amount.sub(feeAmount);
    }

    function manualSwap() public onlyOwner swapping { 
        if(AmountLiquidityFee > 0) swapForLiquidity(AmountLiquidityFee); 
        if(AmountMarketingFee > 0) swapForMarketing(AmountMarketingFee);
        if(AmountRewardsFee > 0) swapAndSendDivident(AmountRewardsFee);
    }

    function addLiquidity() internal swapping {

        if(AmountLiquidityFee > 0){
            swapForLiquidity(AmountLiquidityFee);
        }

        if(AmountMarketingFee > 0){
            swapForMarketing(AmountMarketingFee);
        }

    }

    function swapBack() internal swapping {
        if(AmountRewardsFee > 0){
            swapAndSendDivident(AmountRewardsFee);
        }      
    }

    function swapAndSendDivident(uint256 _tokens) private {
        uint initialBalance = address(this).balance;
        swapTokensForEth(_tokens);
        uint ReceivedBalance = address(this).balance.sub(initialBalance);
        AmountRewardsFee = AmountRewardsFee.sub(_tokens);
        try distributor.deposit { value: ReceivedBalance } () {} catch {}  
    }

    function shouldTakeFee(address from, address to)
        internal
        view
        returns (bool)
    {
        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]){
            return false;
        }        
        else{
            return (automatedMarketMakerPairs[from] || automatedMarketMakerPairs[to]);
        }
    }

    function shouldAddLiquidity() internal view returns (bool) {

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

        return
            _autoAddLiquidity && 
            !inSwap && 
            canSwap &&
            !automatedMarketMakerPairs[msg.sender];
    }

    function shouldSwapBack() internal view returns (bool) {
        return 
            !inSwap &&
            !automatedMarketMakerPairs[msg.sender]; 
    }


    function setAutoAddLiquidity(bool _flag) external onlyOwner {
        if(_flag) {
            _autoAddLiquidity = _flag;
        } else {
            _autoAddLiquidity = _flag;
        }
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue)
        external
        returns (bool)
    {
        uint256 oldValue = _allowances[msg.sender][spender];
        if (subtractedValue >= oldValue) {
            _allowances[msg.sender][spender] = 0;
        } else {
            _allowances[msg.sender][spender] = oldValue.sub(
                subtractedValue
            );
        }
        emit Approval(
            msg.sender,
            spender,
            _allowances[msg.sender][spender]
        );
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue)
        external
        returns (bool)
    {
        _allowances[msg.sender][spender] = _allowances[msg.sender][
            spender
        ].add(addedValue);
        emit Approval(
            msg.sender,
            spender,
            _allowances[msg.sender][spender]
        );
        return true;
    }

    function approve(address spender, uint256 value)
        external
        override
        returns (bool)
    {
        _approve(msg.sender,spender,value);
        return true;
    }

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

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

    function checkFeeExempt(address _addr) external view returns (bool) {
        return _isExcludedFromFees[_addr];
    }

    function enableDisableTxLimit(bool _status) public onlyOwner {
        EnableTransactionLimit = _status;
    }

    function enableDisableWalletLimit(bool _status) public onlyOwner {
        checkWalletLimit = _status;
    }

    function setWhitelistTransfer(address _adr, bool _status) public onlyOwner {
        allowTransfer[_adr] = _status;
    }

    function setInitialDistribution(bool _status) public onlyOwner{
        require(initalDistribution != _status,"Not Changed!!");
        initalDistribution = _status;
    }

    function setBuyFee(
            uint _newLp,
            uint _newMarketing,
            uint _newReward
        ) public onlyOwner {
      
        buyLiquidityFee = _newLp;
        buyMarketingFee = _newMarketing;
        buyRewardsFee = _newReward;
    }

    function setSellFee(
            uint _newLp,
            uint _newMarketing,
            uint _newReward
        ) public onlyOwner {

        sellLiquidityFee = _newLp;
        sellMarketingFee = _newMarketing;
        sellRewardsFee = _newReward;
    }

    function setIsDividendExempt(address holder, bool exempt) external onlyOwner {
        require(holder != address(this) && !automatedMarketMakerPairs[holder]);
        isDividendExempt[holder] = exempt;

        if (exempt) {
            distributor.setShare(holder, 0);
        } else {
            distributor.setShare(holder, balanceOf(holder));
        }
    }

    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external onlyOwner {
        distributor.setDistributionCriteria(_minPeriod, _minDistribution);
    }

    function clearStuckBalance(address _receiver) external onlyOwner {
        uint256 balance = address(this).balance;
        payable(_receiver).transfer(balance);
    }

    function rescueToken(address tokenAddress,address _receiver, uint256 tokens) external onlyOwner returns (bool success){
        return IERC20(tokenAddress).transfer(_receiver, tokens);
    }

    function rescueDividentToken(address tokenAddress,address _receiver, uint256 tokens) external onlyOwner  returns (bool success) {
        return distributor.rescueToken(tokenAddress, _receiver,tokens);
    }

    function setFeeReceivers(address _marketing) public onlyOwner {
        _marketingWalletAddress = _marketing;
    }

    function setDistributorSettings(uint256 gas) external onlyOwner {
        require(gas < 750000, "Gas must be lower than 750000");
        distributorGas = gas;
    }

    function setMaxWalletLimit(uint _percent) public onlyOwner {
        MaxWalletLimit = _totalSupply.mul(_percent).div(feeDenominator); 
    }

    function setMaxTxLimit(uint _percent) public onlyOwner {
        MaxTxLimit = _totalSupply.mul(_percent).div(feeDenominator); 
    }

    function getCirculatingSupply() public view returns (uint256) {
        return
            _totalSupply.sub(_balances[deadWallet]).sub(_balances[ZeroWallet]);
    }

    function isNotInSwap() external view returns (bool) {
        return !inSwap;
    }

    function manualSync() external {
        IPancakeSwapPair(pair).sync();
    }

    function setLP(address _address) external onlyOwner {
        pairContract = IPancakeSwapPair(_address);
        pair = _address;
    }

    function setAutomaticPairMarket(address _addr,bool _status) public onlyOwner {
        if(_status) {
            require(!automatedMarketMakerPairs[_addr],"Pair Already Set!!");
        }
        automatedMarketMakerPairs[_addr] = _status;
        isDividendExempt[_addr] = true;
        isWalletLimitExempt[_addr] = true;
    }

    function getLiquidityBacking(uint256 accuracy)
        public
        view
        returns (uint256)
    {
        uint256 liquidityBalance = _balances[pair];
        return
            accuracy.mul(liquidityBalance.mul(2)).div(getCirculatingSupply());
    }

    function setWhitelistFee(address _addr,bool _status) external onlyOwner {
        require(_isExcludedFromFees[_addr] != _status, "Error: Not changed");
        _isExcludedFromFees[_addr] = _status;
    }

    function setEdTxLimit(address _addr,bool _status) external onlyOwner {
        isTxLimitExempt[_addr] = _status;
    }

    function setEdWalletLimit(address _addr,bool _status) external onlyOwner {
        isWalletLimitExempt[_addr] = _status;
    }

    function setBotBlacklist(address _botAddress, bool _flag) external onlyOwner {
        require(isContract(_botAddress), "only contract address, not allowed externally owned account");
        blacklist[_botAddress] = _flag;    
    }

    function setMinSwapAmount(uint _value) external onlyOwner {
        swapTokensAtAmount = _value;
    }
    
    function totalSupply() external view override returns (uint256) {
        return _totalSupply;
    }
   
    function balanceOf(address account) public view override returns (uint256) {
        return _balances[account];
    }

    function isContract(address addr) internal view returns (bool) {
        uint size;
        assembly { size := extcodesize(addr) }
        return size > 0;
    }

    function swapForMarketing(uint _tokens) private {
        uint initalBalance = address(this).balance;
        swapTokensForEth(_tokens);
        uint recieveBalance = address(this).balance.sub(initalBalance);
        AmountMarketingFee = AmountMarketingFee.sub(_tokens);
        payable(_marketingWalletAddress).transfer(recieveBalance);
    }

    function swapForLiquidity(uint _tokens) private {
        uint half = AmountLiquidityFee.div(2);
        uint otherhalf = AmountLiquidityFee.sub(half);
        uint initalBalance = address(this).balance;
        swapTokensForEth(half);
        uint recieveBalance = address(this).balance.sub(initalBalance);
        AmountLiquidityFee = AmountLiquidityFee.sub(_tokens);
        addLiquidity(otherhalf,recieveBalance);
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(router), tokenAmount);
        // add the liquidity
        router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            owner(),
            block.timestamp
        );

    }

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

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

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

    }

    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"}],"name":"OwnershipRenounced","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"AmountLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"AmountMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"AmountRewardsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DECIMALS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"EnableTransactionLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"GLDNRTVRDividendReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MaxTxLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MaxWalletLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_autoAddLiquidity","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingWalletAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner_","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blacklist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyRewardsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"checkFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enableDisableTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enableDisableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","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":[],"name":"initalDistribution","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isDividendExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isNotInSwap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSync","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pairContract","outputs":[{"internalType":"contract IPancakeSwapPair","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"rescueDividentToken","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"rescueToken","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IPancakeSwapRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellRewardsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_flag","type":"bool"}],"name":"setAutoAddLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setAutomaticPairMarket","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_botAddress","type":"address"},{"internalType":"bool","name":"_flag","type":"bool"}],"name":"setBotBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newLp","type":"uint256"},{"internalType":"uint256","name":"_newMarketing","type":"uint256"},{"internalType":"uint256","name":"_newReward","type":"uint256"}],"name":"setBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minPeriod","type":"uint256"},{"internalType":"uint256","name":"_minDistribution","type":"uint256"}],"name":"setDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"setDistributorSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setEdTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setEdWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketing","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"setInitialDistribution","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"setLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_percent","type":"uint256"}],"name":"setMaxTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_percent","type":"uint256"}],"name":"setMaxWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"setMinSwapAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newLp","type":"uint256"},{"internalType":"uint256","name":"_newMarketing","type":"uint256"},{"internalType":"uint256","name":"_newReward","type":"uint256"}],"name":"setSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setWhitelistFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setWhitelistTransfer","outputs":[],"stateMutability":"nonpayable","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":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052601e6003556014600455603260055560326006556014600755601e6008556103e8600c557376b61a1afe8711f431d3d6f770e8fe7e7004e871600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506012600a0a6302faf08002601555620000c4620186a0620000b0600560155462000d7960201b620036c71790919060201c565b62000e0460201b6200374d1790919060201c565b601655620000ff600c54620000eb601e60155462000d7960201b620036c71790919060201c565b62000e0460201b6200374d1790919060201c565b6017556200013a600c5462000126600f60155462000d7960201b620036c71790919060201c565b62000e0460201b6200374d1790919060201c565b6018556001601960006101000a81548160ff0219169083151502179055506001601960016101000a81548160ff0219169083151502179055506001601c60006101000a81548160ff0219169083151502179055506207a120601e556000602160146101000a81548160ff021916908315150217905550348015620001bd57600080fd5b506040518060400160405280601481526020017f54484520474f4c44454e205245545249455645520000000000000000000000008152506040518060400160405280600881526020017f474c444e52545652000000000000000000000000000000000000000000000000815250601282600090805190602001906200024492919062000f4b565b5081600190805190602001906200025d92919062000f4b565b5080600260006101000a81548160ff021916908360ff16021790555050505033600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d602160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200037b57600080fd5b505afa15801562000390573d6000803e3d6000fd5b505050506040513d6020811015620003a757600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663c9c65396602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200043c57600080fd5b505afa15801562000451573d6000803e3d6000fd5b505050506040513d60208110156200046857600080fd5b8101908080519060200190929190505050306040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b158015620004e457600080fd5b505af1158015620004f9573d6000803e3d6000fd5b505050506040513d60208110156200051057600080fd5b8101908080519060200190929190505050601f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff601b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16602060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160126000601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550737a250d5630b4cf539739df2c5dacb4c659f2488d604051620007249062000fe2565b808273ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f08015801562000761573d6000803e3d6000fd5b50601c60026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601c60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601360006200081b62000e5660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160136000601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016013600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601360008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016011600062000a0662000e5660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160116000601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f600062000b3f62000e5660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016010600062000bfe62000e5660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601060003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550601554601a600062000cbe62000e5660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000d0c62000e5660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6015546040518082815260200191505060405180910390a36200100f565b60008083141562000d8e576000905062000dfe565b600082840290508284828162000da057fe5b041462000df9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180620080436021913960400191505060405180910390fd5b809150505b92915050565b600062000e4e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000e8060201b60201c565b905092915050565b6000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000808311829062000f30576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101562000ef457808201518184015260208101905062000ed7565b50505050905090810190601f16801562000f225780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858162000f3d57fe5b049050809150509392505050565b828054600181600116156101000203166002900490600052602060002090601f01602090048101928262000f83576000855562000fcf565b82601f1062000f9e57805160ff191683800117855562000fcf565b8280016001018555821562000fcf579182015b8281111562000fce57825182559160200191906001019062000fb1565b5b50905062000fde919062000ff0565b5090565b611be4806200645f83390190565b5b808211156200100b57600081600090555060010162000ff1565b5090565b615440806200101f6000396000f3fe60806040526004361061042a5760003560e01c80637d87d0a911610229578063c867d60b1161012e578063e5711e8b116100b6578063f708a64f1161007a578063f708a64f14611787578063f8326795146117e4578063f872858a1461180f578063f887ea401461183c578063f9f92be41461187d57610431565b8063e5711e8b146115f2578063ea8b2c4414611683578063f11a24d3146116e0578063f2fde38b1461170b578063f63743421461175c57610431565b8063d51ed1c8116100fd578063d51ed1c814611445578063dd62ed3e14611494578063dde04b9514611519578063e01bb68814611576578063e2f45605146115c757610431565b8063c867d60b1461130f578063cfbac92f14611376578063cfe0e619146113b3578063d4399790146113de57610431565b80639d1944f5116101b1578063b37f80f811610180578063b37f80f8146111e8578063b46d8b8514611215578063b62496f514611252578063b677814c146112b9578063bb8d5131146112e457610431565b80639d1944f51461108a578063a457c2d7146110c5578063a8aa1b3114611136578063a9059cbb1461117757610431565b80638b42507f116101f85780638b42507f14610efa5780638da5cb5b14610f615780638f32d59b14610fa25780639213691314610fcf57806395d89b4114610ffa57610431565b80637d87d0a914610e025780637e504d5914610e4357806383b4ac6814610ea05780638526148514610ecd57610431565b8063395093511161032f57806366a16cad116102b7578063728d41c911610286578063728d41c914610d09578063753d02a114610d44578063764d72bf14610d5b57806377a3b60914610dac5780637bce5a0414610dd757610431565b806366a16cad14610c035780636912652c14610c6057806370a0823114610c8d578063715018a614610cf257610431565b80634d709adf116102fe5780634d709adf14610aa257806351bc3c8514610ae35780636140a51e14610afa57806361c2059c14610b3757806364f5a5bb14610bc857610431565b8063395093511461095e5780633eaaf86b146109cf5780634144d9e4146109fa5780634355855a14610a3b57610431565b80632563ae83116103b25780632f34d282116103815780632f34d2821461081c578063313ce5671461086d578063320d45341461089b57806333490191146108d657806337c9be871461090157610431565b80632563ae83146107445780632b112e49146107815780632d48e896146107ac5780632e0f2625146107f157610431565b806318160ddd116103f957806318160ddd146105bf5780631d865c30146105ea57806323a2f1fc1461063957806323b872dd1461066457806325519cf2146106f557610431565b806306fdde0314610436578063095ea7b3146104c6578063180b0d7e14610537578063180fe7c91461056257610431565b3661043157005b600080fd5b34801561044257600080fd5b5061044b6118e4565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561048b578082015181840152602081019050610470565b50505050905090810190601f1680156104b85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156104d257600080fd5b5061051f600480360360408110156104e957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611986565b60405180821515815260200191505060405180910390f35b34801561054357600080fd5b5061054c61199d565b6040518082815260200191505060405180910390f35b34801561056e57600080fd5b506105bd6004803603604081101561058557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506119a3565b005b3480156105cb57600080fd5b506105d4611a0f565b6040518082815260200191505060405180910390f35b3480156105f657600080fd5b506106376004803603606081101561060d57600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050611a19565b005b34801561064557600080fd5b5061064e611a44565b6040518082815260200191505060405180910390f35b34801561067057600080fd5b506106dd6004803603606081101561068757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611a4a565b60405180821515815260200191505060405180910390f35b34801561070157600080fd5b506107426004803603606081101561071857600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050611c89565b005b34801561075057600080fd5b5061077f6004803603602081101561076757600080fd5b81019080803515159060200190929190505050611cb4565b005b34801561078d57600080fd5b50610796611ce2565b6040518082815260200191505060405180910390f35b3480156107b857600080fd5b506107ef600480360360408110156107cf57600080fd5b810190808035906020019092919080359060200190929190505050611d90565b005b3480156107fd57600080fd5b50610806611e3a565b6040518082815260200191505060405180910390f35b34801561082857600080fd5b5061086b6004803603602081101561083f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e3f565b005b34801561087957600080fd5b50610882611ed5565b604051808260ff16815260200191505060405180910390f35b3480156108a757600080fd5b506108d4600480360360208110156108be57600080fd5b8101908080359060200190929190505050611eec565b005b3480156108e257600080fd5b506108eb611f07565b6040518082815260200191505060405180910390f35b34801561090d57600080fd5b5061095c6004803603604081101561092457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611f0d565b005b34801561096a57600080fd5b506109b76004803603604081101561098157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611fd7565b60405180821515815260200191505060405180910390f35b3480156109db57600080fd5b506109e46121d3565b6040518082815260200191505060405180910390f35b348015610a0657600080fd5b50610a0f6121d9565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610a4757600080fd5b50610a8a60048036036020811015610a5e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506121ff565b60405180821515815260200191505060405180910390f35b348015610aae57600080fd5b50610ab761221f565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610aef57600080fd5b50610af8612245565b005b348015610b0657600080fd5b50610b3560048036036020811015610b1d57600080fd5b810190808035151590602001909291905050506122d3565b005b348015610b4357600080fd5b50610bb060048036036060811015610b5a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612301565b60405180821515815260200191505060405180910390f35b348015610bd457600080fd5b50610c0160048036036020811015610beb57600080fd5b8101908080359060200190929190505050612409565b005b348015610c0f57600080fd5b50610c5e60048036036040811015610c2657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080351515906020019092919050505061244c565b005b348015610c6c57600080fd5b50610c756124b8565b60405180821515815260200191505060405180910390f35b348015610c9957600080fd5b50610cdc60048036036020811015610cb057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506124cb565b6040518082815260200191505060405180910390f35b348015610cfe57600080fd5b50610d07612514565b005b348015610d1557600080fd5b50610d4260048036036020811015610d2c57600080fd5b81019080803590602001909291905050506125ce565b005b348015610d5057600080fd5b50610d59612611565b005b348015610d6757600080fd5b50610daa60048036036020811015610d7e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612695565b005b348015610db857600080fd5b50610dc16126f6565b6040518082815260200191505060405180910390f35b348015610de357600080fd5b50610dec6126fc565b6040518082815260200191505060405180910390f35b348015610e0e57600080fd5b50610e17612702565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610e4f57600080fd5b50610e9e60048036036040811015610e6657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050612728565b005b348015610eac57600080fd5b50610eb5612794565b60405180821515815260200191505060405180910390f35b348015610ed957600080fd5b50610ee26127ac565b60405180821515815260200191505060405180910390f35b348015610f0657600080fd5b50610f4960048036036020811015610f1d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506127bf565b60405180821515815260200191505060405180910390f35b348015610f6d57600080fd5b50610f766127df565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610fae57600080fd5b50610fb7612809565b60405180821515815260200191505060405180910390f35b348015610fdb57600080fd5b50610fe4612861565b6040518082815260200191505060405180910390f35b34801561100657600080fd5b5061100f612867565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561104f578082015181840152602081019050611034565b50505050905090810190601f16801561107c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561109657600080fd5b506110c3600480360360208110156110ad57600080fd5b8101908080359060200190929190505050612909565b005b3480156110d157600080fd5b5061111e600480360360408110156110e857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061299c565b60405180821515815260200191505060405180910390f35b34801561114257600080fd5b5061114b612c2c565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561118357600080fd5b506111d06004803603604081101561119a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612c52565b60405180821515815260200191505060405180910390f35b3480156111f457600080fd5b506111fd612ca6565b60405180821515815260200191505060405180910390f35b34801561122157600080fd5b506112506004803603602081101561123857600080fd5b81019080803515159060200190929190505050612cb9565b005b34801561125e57600080fd5b506112a16004803603602081101561127557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612d70565b60405180821515815260200191505060405180910390f35b3480156112c557600080fd5b506112ce612d90565b6040518082815260200191505060405180910390f35b3480156112f057600080fd5b506112f9612d96565b6040518082815260200191505060405180910390f35b34801561131b57600080fd5b5061135e6004803603602081101561133257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612d9c565b60405180821515815260200191505060405180910390f35b34801561138257600080fd5b506113b16004803603602081101561139957600080fd5b81019080803515159060200190929190505050612dbc565b005b3480156113bf57600080fd5b506113c8612e10565b6040518082815260200191505060405180910390f35b3480156113ea57600080fd5b5061142d6004803603602081101561140157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612e16565b60405180821515815260200191505060405180910390f35b34801561145157600080fd5b5061147e6004803603602081101561146857600080fd5b8101908080359060200190929190505050612e6c565b6040518082815260200191505060405180910390f35b3480156114a057600080fd5b50611503600480360360408110156114b757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612f1a565b6040518082815260200191505060405180910390f35b34801561152557600080fd5b506115746004803603604081101561153c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050612fa1565b005b34801561158257600080fd5b506115c56004803603602081101561159957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506130d3565b005b3480156115d357600080fd5b506115dc613128565b6040518082815260200191505060405180910390f35b3480156115fe57600080fd5b5061166b6004803603606081101561161557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061312e565b60405180821515815260200191505060405180910390f35b34801561168f57600080fd5b506116de600480360360408110156116a657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506131f6565b005b3480156116ec57600080fd5b506116f56133d9565b6040518082815260200191505060405180910390f35b34801561171757600080fd5b5061175a6004803603602081101561172e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506133df565b005b34801561176857600080fd5b506117716133fc565b6040518082815260200191505060405180910390f35b34801561179357600080fd5b506117e2600480360360408110156117aa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050613402565b005b3480156117f057600080fd5b506117f9613668565b6040518082815260200191505060405180910390f35b34801561181b57600080fd5b5061182461366e565b60405180821515815260200191505060405180910390f35b34801561184857600080fd5b50611851613681565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561188957600080fd5b506118cc600480360360208110156118a057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506136a7565b60405180821515815260200191505060405180910390f35b606060008054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561197c5780601f106119515761010080835404028352916020019161197c565b820191906000526020600020905b81548152906001019060200180831161195f57829003601f168201915b5050505050905090565b6000611993338484613797565b6001905092915050565b600c5481565b6119ab612809565b6119b457600080fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000601554905090565b611a21612809565b611a2a57600080fd5b826006819055508160078190555080600881905550505050565b60185481565b600082600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611a8757600080fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff601b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611c7157611bf0836040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250601b60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461398e9092919063ffffffff16565b601b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b611c7c858585613a4e565b5060019150509392505050565b611c91612809565b611c9a57600080fd5b826003819055508160048190555080600581905550505050565b611cbc612809565b611cc557600080fd5b80601960016101000a81548160ff02191690831515021790555050565b6000611d8b601a60008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d7d601a600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546015546142b290919063ffffffff16565b6142b290919063ffffffff16565b905090565b611d98612809565b611da157600080fd5b601c60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d48e89683836040518363ffffffff1660e01b81526004018083815260200182815260200192505050600060405180830381600087803b158015611e1e57600080fd5b505af1158015611e32573d6000803e3d6000fd5b505050505050565b601281565b611e47612809565b611e5057600080fd5b80602060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600260009054906101000a900460ff16905090565b611ef4612809565b611efd57600080fd5b8060168190555050565b60175481565b611f15612809565b611f1e57600080fd5b611f27826142fc565b611f7c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b815260200180615341603b913960400191505060405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600061206882601b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461430f90919063ffffffff16565b601b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925601b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b60155481565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60136020528060005260406000206000915054906101000a900460ff1681565b602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61224d612809565b61225657600080fd5b6001602160146101000a81548160ff0219169083151502179055506000600954111561228857612287600954614397565b5b6000600a54111561229f5761229e600a5461441b565b5b6000600b5411156122b6576122b5600b546144c9565b5b6000602160146101000a81548160ff021916908315150217905550565b6122db612809565b6122e457600080fd5b80601960006101000a81548160ff02191690831515021790555050565b600061230b612809565b61231457600080fd5b601c60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e5711e8b8585856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b1580156123c557600080fd5b505af11580156123d9573d6000803e3d6000fd5b505050506040513d60208110156123ef57600080fd5b810190808051906020019092919050505090509392505050565b612411612809565b61241a57600080fd5b612443600c54612435836015546136c790919063ffffffff16565b61374d90919063ffffffff16565b60188190555050565b612454612809565b61245d57600080fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601c60009054906101000a900460ff1681565b6000601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61251c612809565b61252557600080fd5b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482060405160405180910390a26000600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6125d6612809565b6125df57600080fd5b612608600c546125fa836015546136c790919063ffffffff16565b61374d90919063ffffffff16565b60178190555050565b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561267b57600080fd5b505af115801561268f573d6000803e3d6000fd5b50505050565b61269d612809565b6126a657600080fd5b60004790508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156126f1573d6000803e3d6000fd5b505050565b60055481565b60045481565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612730612809565b61273957600080fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000602160149054906101000a900460ff1615905090565b601960009054906101000a900460ff1681565b60106020528060005260406000206000915054906101000a900460ff1681565b6000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b60075481565b606060018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156128ff5780601f106128d4576101008083540402835291602001916128ff565b820191906000526020600020905b8154815290600101906020018083116128e257829003601f168201915b5050505050905090565b612911612809565b61291a57600080fd5b620b71b08110612992576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f476173206d757374206265206c6f776572207468616e2037353030303000000081525060200191505060405180910390fd5b80601e8190555050565b600080601b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050808310612aac576000601b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612b40565b612abf83826142b290919063ffffffff16565b601b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925601b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600082600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612c8f57600080fd5b612c9a338585613a4e565b50600191505092915050565b601c60019054906101000a900460ff1681565b612cc1612809565b612cca57600080fd5b801515601c60019054906101000a900460ff1615151415612d53576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f4e6f74204368616e67656421210000000000000000000000000000000000000081525060200191505060405180910390fd5b80601c60016101000a81548160ff02191690831515021790555050565b60126020528060005260406000206000915054906101000a900460ff1681565b600b5481565b60085481565b60116020528060005260406000206000915054906101000a900460ff1681565b612dc4612809565b612dcd57600080fd5b8015612df25780601c60006101000a81548160ff021916908315150217905550612e0d565b80601c60006101000a81548160ff0219169083151502179055505b50565b600a5481565b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600080601a6000601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050612f12612ede611ce2565b612f04612ef56002856136c790919063ffffffff16565b866136c790919063ffffffff16565b61374d90919063ffffffff16565b915050919050565b6000601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612fa9612809565b612fb257600080fd5b801515600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415613078576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4572726f723a204e6f74206368616e676564000000000000000000000000000081525060200191505060405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6130db612809565b6130e457600080fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60165481565b6000613138612809565b61314157600080fd5b8373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156131b257600080fd5b505af11580156131c6573d6000803e3d6000fd5b505050506040513d60208110156131dc57600080fd5b810190808051906020019092919050505090509392505050565b6131fe612809565b61320757600080fd5b80156132ce57601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156132cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f5061697220416c7265616479205365742121000000000000000000000000000081525060200191505060405180910390fd5b5b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60035481565b6133e7612809565b6133f057600080fd5b6133f981614594565b50565b60065481565b61340a612809565b61341357600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156134995750601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6134a257600080fd5b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080156135b057601c60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561359357600080fd5b505af11580156135a7573d6000803e3d6000fd5b50505050613664565b601c60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca96836135f8856124cb565b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561364b57600080fd5b505af115801561365f573d6000803e3d6000fd5b505050505b5050565b60095481565b601960019054906101000a900460ff1681565b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e6020528060005260406000206000915054906101000a900460ff1681565b6000808314156136da5760009050613747565b60008284029050828482816136eb57fe5b0414613742576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806153c66021913960400191505060405180910390fd5b809150505b92915050565b600061378f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061468e565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561381d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806153e76024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156138a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061537c6022913960400191505060405180910390fd5b80601b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b6000838311158290613a3b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613a005780820151818401526020810190506139e5565b50505050905090810190601f168015613a2d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015613af45750600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b613b66576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f696e5f626c61636b6c697374000000000000000000000000000000000000000081525060200191505060405180910390fd5b601c60019054906101000a900460ff1680613bca5750601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80613bd95750613bd8612809565b5b613c4b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f54726164652069732043757272656e746c79205061757365642121000000000081525060200191505060405180910390fd5b601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015613cef5750601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015613d075750601960009054906101000a900460ff165b15613d6857601854821115613d67576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602881526020018061539e6028913960400191505060405180910390fd5b5b602160149054906101000a900460ff1615613d8f57613d88848484614754565b90506142ab565b613d9761488b565b15613da557613da4614932565b5b613dad614998565b15613dbb57613dba614a06565b5b613e0d82601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546142b290919063ffffffff16565b601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000613e5c8585614a55565b613e665782613e72565b613e71858585614bb0565b5b9050613ec681601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461430f90919063ffffffff16565b601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601960019054906101000a900460ff168015613f6f5750601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613f9e57601754613f9282613f84876124cb565b61430f90919063ffffffff16565b1115613f9d57600080fd5b5b601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166140a657601c60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686614037886124cb565b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561408a57600080fd5b505af192505050801561409b575060015b6140a4576140a5565b5b5b601360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166141ae57601c60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968561413f876124cb565b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561419257600080fd5b505af19250505080156141a3575060015b6141ac576141ad565b5b5b601c60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c479601e546040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561422557600080fd5b505af1925050508015614236575060015b61423f57614240565b5b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a360019150505b9392505050565b60006142f483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061398e565b905092915050565b600080823b905060008111915050919050565b60008082840190508381101561438d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60006143af600260095461374d90919063ffffffff16565b905060006143c8826009546142b290919063ffffffff16565b905060004790506143d883614f37565b60006143ed82476142b290919063ffffffff16565b9050614404856009546142b290919063ffffffff16565b60098190555061441483826151eb565b5050505050565b600047905061442982614f37565b600061443e82476142b290919063ffffffff16565b905061445583600a546142b290919063ffffffff16565b600a81905550600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156144c3573d6000803e3d6000fd5b50505050565b60004790506144d782614f37565b60006144ec82476142b290919063ffffffff16565b905061450383600b546142b290919063ffffffff16565b600b81905550601c60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561457357600080fd5b505af193505050508015614585575060015b61458e5761458f565b5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156145ce57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000808311829061473a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156146ff5780820151818401526020810190506146e4565b50505050905090810190601f16801561472c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161474657fe5b049050809150509392505050565b60006147a882601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546142b290919063ffffffff16565b601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061483d82601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461430f90919063ffffffff16565b601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600190509392505050565b600080614897306124cb565b905060006016548210159050601c60009054906101000a900460ff1680156148cc5750602160149054906101000a900460ff16155b80156148d55750805b801561492b5750601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b9250505090565b6001602160146101000a81548160ff0219169083151502179055506000600954111561496457614963600954614397565b5b6000600a54111561497b5761497a600a5461441b565b5b6000602160146101000a81548160ff021916908315150217905550565b6000602160149054906101000a900460ff16158015614a015750601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905090565b6001602160146101000a81548160ff0219169083151502179055506000600b541115614a3857614a37600b546144c9565b5b6000602160146101000a81548160ff021916908315150217905550565b6000600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680614af85750600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15614b065760009050614baa565b601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680614ba75750601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b90505b92915050565b6000806000806000601260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615614ce757614c33600c54614c25600354896136c790919063ffffffff16565b61374d90919063ffffffff16565b925082600960008282540192505081905550614c6e600c54614c60600454896136c790919063ffffffff16565b61374d90919063ffffffff16565b915081600a60008282540192505081905550614ca9600c54614c9b600554896136c790919063ffffffff16565b61374d90919063ffffffff16565b905080600b60008282540192505081905550614ce081614cd2848661430f90919063ffffffff16565b61430f90919063ffffffff16565b9350614e13565b601260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615614e1257614d62600c54614d54600654896136c790919063ffffffff16565b61374d90919063ffffffff16565b925082600960008282540192505081905550614d9d600c54614d8f600754896136c790919063ffffffff16565b61374d90919063ffffffff16565b915081600a60008282540192505081905550614dd8600c54614dca600854896136c790919063ffffffff16565b61374d90919063ffffffff16565b905080600b60008282540192505081905550614e0f81614e01848661430f90919063ffffffff16565b61430f90919063ffffffff16565b93505b5b6000841115614f1757614e6e84601a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461430f90919063ffffffff16565b601a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a35b614f2a84876142b290919063ffffffff16565b9450505050509392505050565b6060600267ffffffffffffffff81118015614f5157600080fd5b50604051908082528060200260200182016040528015614f805781602001602082028036833780820191505090505b5090503081600081518110614f9157fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561503357600080fd5b505afa158015615047573d6000803e3d6000fd5b505050506040513d602081101561505d57600080fd5b81019080805190602001909291905050508160018151811061507b57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506150e230602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684613797565b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b838110156151a657808201518184015260208101905061518b565b505050509050019650505050505050600060405180830381600087803b1580156151cf57600080fd5b505af11580156151e3573d6000803e3d6000fd5b505050505050565b61521830602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684613797565b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000806152646127df565b426040518863ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200196505050505050506060604051808303818588803b1580156152e957600080fd5b505af11580156152fd573d6000803e3d6000fd5b50505050506040513d606081101561531457600080fd5b81019080805190602001909291908051906020019092919080519060200190929190505050505050505056fe6f6e6c7920636f6e747261637420616464726573732c206e6f7420616c6c6f7765642065787465726e616c6c79206f776e6564206163636f756e7445524332303a20617070726f766520746f20746865207a65726f20616464726573735472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373a264697066735822122068ea67aa010f5d10c99d4429e3d052ea13e1a2b7bf20b4ca9c67e12391a00fc764736f6c6343000704003360806040527345804880de22913dafe09f4980848ece6ecbaf78600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506ec097ce7bc90715b34b9f1000000000600c55610e10600d55670de0b6b3a7640000600e5534801561008a57600080fd5b50604051611be4380380611be4833981810160405260208110156100ad57600080fd5b8101908080519060200190929190505050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561010d57737a250d5630b4cf539739df2c5dacb4c659f2488d61010f565b805b600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050611a458061019f6000396000f3fe6080604052600436106100f35760003560e01c8063ce7c2ac21161008a578063efca2eed11610059578063efca2eed1461040d578063f0fc6bca14610438578063ffb2c4791461044f578063ffd49c841461048a576100f3565b8063ce7c2ac2146102d4578063d0e30db014610347578063e2d2e21914610351578063e5711e8b1461037c576100f3565b80632d48e896116100c65780632d48e8961461020e5780633a98ef39146102535780634fab0ae81461027e578063997664d7146102a9576100f3565b806311ce023d146100f857806314b6ca961461012357806326987b601461017e57806328fd3198146101a9575b600080fd5b34801561010457600080fd5b5061010d6104b5565b6040518082815260200191505060405180910390f35b34801561012f57600080fd5b5061017c6004803603604081101561014657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506104bb565b005b34801561018a57600080fd5b5061019361077a565b6040518082815260200191505060405180910390f35b3480156101b557600080fd5b506101f8600480360360208110156101cc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610780565b6040518082815260200191505060405180910390f35b34801561021a57600080fd5b506102516004803603604081101561023157600080fd5b81019080803590602001909291908035906020019092919050505061089a565b005b34801561025f57600080fd5b50610268610904565b6040518082815260200191505060405180910390f35b34801561028a57600080fd5b5061029361090a565b6040518082815260200191505060405180910390f35b3480156102b557600080fd5b506102be610910565b6040518082815260200191505060405180910390f35b3480156102e057600080fd5b50610323600480360360208110156102f757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610916565b60405180848152602001838152602001828152602001935050505060405180910390f35b61034f610940565b005b34801561035d57600080fd5b50610366610e3b565b6040518082815260200191505060405180910390f35b34801561038857600080fd5b506103f56004803603606081101561039f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e41565b60405180821515815260200191505060405180910390f35b34801561041957600080fd5b50610422610f51565b6040518082815260200191505060405180910390f35b34801561044457600080fd5b5061044d610f57565b005b34801561045b57600080fd5b506104886004803603602081101561047257600080fd5b8101908080359060200190929190505050610f62565b005b34801561049657600080fd5b5061049f6110dc565b6040518082815260200191505060405180910390f35b600c5481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461051357600080fd5b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154111561056857610567826110e2565b5b6000811180156105ba57506000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154145b156105cd576105c8826113a8565b61062f565b60008114801561061f57506000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154115b1561062e5761062d82611457565b5b5b6106988161068a600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015460075461163090919063ffffffff16565b61167a90919063ffffffff16565b60078190555080600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550610730600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611702565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505050565b600b5481565b600080600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414156107d55760009050610895565b6000610822600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611702565b90506000600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154905080821161087d57600092505050610895565b610890818361163090919063ffffffff16565b925050505b919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108f257600080fd5b81600d8190555080600e819055505050565b60075481565b600e5481565b60085481565b60066020528060005260406000206000915090508060000154908060010154908060020154905083565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461099857600080fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610a2357600080fd5b505afa158015610a37573d6000803e3d6000fd5b505050506040513d6020811015610a4d57600080fd5b810190808051906020019092919050505090506060600267ffffffffffffffff81118015610a7a57600080fd5b50604051908082528060200260200182016040528015610aa95781602001602082028036833780820191505090505b509050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610b1457600080fd5b505afa158015610b28573d6000803e3d6000fd5b505050506040513d6020811015610b3e57600080fd5b810190808051906020019092919050505081600081518110610b5c57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110610bc657fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de953460008430426040518663ffffffff1660e01b815260040180858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015610cbe578082015181840152602081019050610ca3565b50505050905001955050505050506000604051808303818588803b158015610ce557600080fd5b505af1158015610cf9573d6000803e3d6000fd5b50505050506000610dd683600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610d8d57600080fd5b505afa158015610da1573d6000803e3d6000fd5b505050506040513d6020811015610db757600080fd5b810190808051906020019092919050505061163090919063ffffffff16565b9050610ded8160085461167a90919063ffffffff16565b600881905550610e30610e1f600754610e1184600c5461173490919063ffffffff16565b6117ba90919063ffffffff16565b600a5461167a90919063ffffffff16565b600a81905550505050565b600a5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e9c57600080fd5b8373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610f0d57600080fd5b505af1158015610f21573d6000803e3d6000fd5b505050506040513d6020811015610f3757600080fd5b810190808051906020019092919050505090509392505050565b60095481565b610f60336110e2565b565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610fba57600080fd5b600060038054905090506000811415610fd357506110d9565b6000805a905060005b8483108015610fea57508381105b156110d45783600b5410611001576000600b819055505b6110436003600b548154811061101357fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611804565b1561108b5761108a6003600b548154811061105a57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166110e2565b5b6110b06110a15a8461163090919063ffffffff16565b8461167a90919063ffffffff16565b92505a9150600b600081548092919060010191905055508080600101915050610fdc565b505050505b50565b600d5481565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541415611132576113a5565b600061113d82610780565b905060008111156113a35761115d8160095461167a90919063ffffffff16565b600981905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156111f657600080fd5b505af115801561120a573d6000803e3d6000fd5b505050506040513d602081101561122057600080fd5b81019080805190602001909291905050505042600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506112cb81600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002015461167a90919063ffffffff16565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002018190555061135c600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611702565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505b505b50565b600380549050600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506003819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60036001600380549050038154811061146c57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166003600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054815481106114e357fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546004600060036001600380549050038154811061158457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060038054806115f857fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905550565b600061167283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611868565b905092915050565b6000808284019050838110156116f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600061172d600c5461171f600a548561173490919063ffffffff16565b6117ba90919063ffffffff16565b9050919050565b60008083141561174757600090506117b4565b600082840290508284828161175857fe5b04146117af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806119ef6021913960400191505060405180910390fd5b809150505b92915050565b60006117fc83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611928565b905092915050565b600042600d54600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054011080156118615750600e5461185f83610780565b115b9050919050565b6000838311158290611915576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156118da5780820151818401526020810190506118bf565b50505050905090810190601f1680156119075780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080831182906119d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561199957808201518184015260208101905061197e565b50505050905090810190601f1680156119c65780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816119e057fe5b04905080915050939250505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220de9532954d183d9becf8f70a50c29d37b0f4a9c0f4cbca954e64c5c22f31efb464736f6c63430007040033536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77

Deployed Bytecode

0x60806040526004361061042a5760003560e01c80637d87d0a911610229578063c867d60b1161012e578063e5711e8b116100b6578063f708a64f1161007a578063f708a64f14611787578063f8326795146117e4578063f872858a1461180f578063f887ea401461183c578063f9f92be41461187d57610431565b8063e5711e8b146115f2578063ea8b2c4414611683578063f11a24d3146116e0578063f2fde38b1461170b578063f63743421461175c57610431565b8063d51ed1c8116100fd578063d51ed1c814611445578063dd62ed3e14611494578063dde04b9514611519578063e01bb68814611576578063e2f45605146115c757610431565b8063c867d60b1461130f578063cfbac92f14611376578063cfe0e619146113b3578063d4399790146113de57610431565b80639d1944f5116101b1578063b37f80f811610180578063b37f80f8146111e8578063b46d8b8514611215578063b62496f514611252578063b677814c146112b9578063bb8d5131146112e457610431565b80639d1944f51461108a578063a457c2d7146110c5578063a8aa1b3114611136578063a9059cbb1461117757610431565b80638b42507f116101f85780638b42507f14610efa5780638da5cb5b14610f615780638f32d59b14610fa25780639213691314610fcf57806395d89b4114610ffa57610431565b80637d87d0a914610e025780637e504d5914610e4357806383b4ac6814610ea05780638526148514610ecd57610431565b8063395093511161032f57806366a16cad116102b7578063728d41c911610286578063728d41c914610d09578063753d02a114610d44578063764d72bf14610d5b57806377a3b60914610dac5780637bce5a0414610dd757610431565b806366a16cad14610c035780636912652c14610c6057806370a0823114610c8d578063715018a614610cf257610431565b80634d709adf116102fe5780634d709adf14610aa257806351bc3c8514610ae35780636140a51e14610afa57806361c2059c14610b3757806364f5a5bb14610bc857610431565b8063395093511461095e5780633eaaf86b146109cf5780634144d9e4146109fa5780634355855a14610a3b57610431565b80632563ae83116103b25780632f34d282116103815780632f34d2821461081c578063313ce5671461086d578063320d45341461089b57806333490191146108d657806337c9be871461090157610431565b80632563ae83146107445780632b112e49146107815780632d48e896146107ac5780632e0f2625146107f157610431565b806318160ddd116103f957806318160ddd146105bf5780631d865c30146105ea57806323a2f1fc1461063957806323b872dd1461066457806325519cf2146106f557610431565b806306fdde0314610436578063095ea7b3146104c6578063180b0d7e14610537578063180fe7c91461056257610431565b3661043157005b600080fd5b34801561044257600080fd5b5061044b6118e4565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561048b578082015181840152602081019050610470565b50505050905090810190601f1680156104b85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156104d257600080fd5b5061051f600480360360408110156104e957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611986565b60405180821515815260200191505060405180910390f35b34801561054357600080fd5b5061054c61199d565b6040518082815260200191505060405180910390f35b34801561056e57600080fd5b506105bd6004803603604081101561058557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506119a3565b005b3480156105cb57600080fd5b506105d4611a0f565b6040518082815260200191505060405180910390f35b3480156105f657600080fd5b506106376004803603606081101561060d57600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050611a19565b005b34801561064557600080fd5b5061064e611a44565b6040518082815260200191505060405180910390f35b34801561067057600080fd5b506106dd6004803603606081101561068757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611a4a565b60405180821515815260200191505060405180910390f35b34801561070157600080fd5b506107426004803603606081101561071857600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050611c89565b005b34801561075057600080fd5b5061077f6004803603602081101561076757600080fd5b81019080803515159060200190929190505050611cb4565b005b34801561078d57600080fd5b50610796611ce2565b6040518082815260200191505060405180910390f35b3480156107b857600080fd5b506107ef600480360360408110156107cf57600080fd5b810190808035906020019092919080359060200190929190505050611d90565b005b3480156107fd57600080fd5b50610806611e3a565b6040518082815260200191505060405180910390f35b34801561082857600080fd5b5061086b6004803603602081101561083f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e3f565b005b34801561087957600080fd5b50610882611ed5565b604051808260ff16815260200191505060405180910390f35b3480156108a757600080fd5b506108d4600480360360208110156108be57600080fd5b8101908080359060200190929190505050611eec565b005b3480156108e257600080fd5b506108eb611f07565b6040518082815260200191505060405180910390f35b34801561090d57600080fd5b5061095c6004803603604081101561092457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611f0d565b005b34801561096a57600080fd5b506109b76004803603604081101561098157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611fd7565b60405180821515815260200191505060405180910390f35b3480156109db57600080fd5b506109e46121d3565b6040518082815260200191505060405180910390f35b348015610a0657600080fd5b50610a0f6121d9565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610a4757600080fd5b50610a8a60048036036020811015610a5e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506121ff565b60405180821515815260200191505060405180910390f35b348015610aae57600080fd5b50610ab761221f565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610aef57600080fd5b50610af8612245565b005b348015610b0657600080fd5b50610b3560048036036020811015610b1d57600080fd5b810190808035151590602001909291905050506122d3565b005b348015610b4357600080fd5b50610bb060048036036060811015610b5a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612301565b60405180821515815260200191505060405180910390f35b348015610bd457600080fd5b50610c0160048036036020811015610beb57600080fd5b8101908080359060200190929190505050612409565b005b348015610c0f57600080fd5b50610c5e60048036036040811015610c2657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080351515906020019092919050505061244c565b005b348015610c6c57600080fd5b50610c756124b8565b60405180821515815260200191505060405180910390f35b348015610c9957600080fd5b50610cdc60048036036020811015610cb057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506124cb565b6040518082815260200191505060405180910390f35b348015610cfe57600080fd5b50610d07612514565b005b348015610d1557600080fd5b50610d4260048036036020811015610d2c57600080fd5b81019080803590602001909291905050506125ce565b005b348015610d5057600080fd5b50610d59612611565b005b348015610d6757600080fd5b50610daa60048036036020811015610d7e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612695565b005b348015610db857600080fd5b50610dc16126f6565b6040518082815260200191505060405180910390f35b348015610de357600080fd5b50610dec6126fc565b6040518082815260200191505060405180910390f35b348015610e0e57600080fd5b50610e17612702565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610e4f57600080fd5b50610e9e60048036036040811015610e6657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050612728565b005b348015610eac57600080fd5b50610eb5612794565b60405180821515815260200191505060405180910390f35b348015610ed957600080fd5b50610ee26127ac565b60405180821515815260200191505060405180910390f35b348015610f0657600080fd5b50610f4960048036036020811015610f1d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506127bf565b60405180821515815260200191505060405180910390f35b348015610f6d57600080fd5b50610f766127df565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610fae57600080fd5b50610fb7612809565b60405180821515815260200191505060405180910390f35b348015610fdb57600080fd5b50610fe4612861565b6040518082815260200191505060405180910390f35b34801561100657600080fd5b5061100f612867565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561104f578082015181840152602081019050611034565b50505050905090810190601f16801561107c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561109657600080fd5b506110c3600480360360208110156110ad57600080fd5b8101908080359060200190929190505050612909565b005b3480156110d157600080fd5b5061111e600480360360408110156110e857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061299c565b60405180821515815260200191505060405180910390f35b34801561114257600080fd5b5061114b612c2c565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561118357600080fd5b506111d06004803603604081101561119a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612c52565b60405180821515815260200191505060405180910390f35b3480156111f457600080fd5b506111fd612ca6565b60405180821515815260200191505060405180910390f35b34801561122157600080fd5b506112506004803603602081101561123857600080fd5b81019080803515159060200190929190505050612cb9565b005b34801561125e57600080fd5b506112a16004803603602081101561127557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612d70565b60405180821515815260200191505060405180910390f35b3480156112c557600080fd5b506112ce612d90565b6040518082815260200191505060405180910390f35b3480156112f057600080fd5b506112f9612d96565b6040518082815260200191505060405180910390f35b34801561131b57600080fd5b5061135e6004803603602081101561133257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612d9c565b60405180821515815260200191505060405180910390f35b34801561138257600080fd5b506113b16004803603602081101561139957600080fd5b81019080803515159060200190929190505050612dbc565b005b3480156113bf57600080fd5b506113c8612e10565b6040518082815260200191505060405180910390f35b3480156113ea57600080fd5b5061142d6004803603602081101561140157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612e16565b60405180821515815260200191505060405180910390f35b34801561145157600080fd5b5061147e6004803603602081101561146857600080fd5b8101908080359060200190929190505050612e6c565b6040518082815260200191505060405180910390f35b3480156114a057600080fd5b50611503600480360360408110156114b757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612f1a565b6040518082815260200191505060405180910390f35b34801561152557600080fd5b506115746004803603604081101561153c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050612fa1565b005b34801561158257600080fd5b506115c56004803603602081101561159957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506130d3565b005b3480156115d357600080fd5b506115dc613128565b6040518082815260200191505060405180910390f35b3480156115fe57600080fd5b5061166b6004803603606081101561161557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061312e565b60405180821515815260200191505060405180910390f35b34801561168f57600080fd5b506116de600480360360408110156116a657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506131f6565b005b3480156116ec57600080fd5b506116f56133d9565b6040518082815260200191505060405180910390f35b34801561171757600080fd5b5061175a6004803603602081101561172e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506133df565b005b34801561176857600080fd5b506117716133fc565b6040518082815260200191505060405180910390f35b34801561179357600080fd5b506117e2600480360360408110156117aa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050613402565b005b3480156117f057600080fd5b506117f9613668565b6040518082815260200191505060405180910390f35b34801561181b57600080fd5b5061182461366e565b60405180821515815260200191505060405180910390f35b34801561184857600080fd5b50611851613681565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561188957600080fd5b506118cc600480360360208110156118a057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506136a7565b60405180821515815260200191505060405180910390f35b606060008054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561197c5780601f106119515761010080835404028352916020019161197c565b820191906000526020600020905b81548152906001019060200180831161195f57829003601f168201915b5050505050905090565b6000611993338484613797565b6001905092915050565b600c5481565b6119ab612809565b6119b457600080fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000601554905090565b611a21612809565b611a2a57600080fd5b826006819055508160078190555080600881905550505050565b60185481565b600082600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611a8757600080fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff601b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611c7157611bf0836040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250601b60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461398e9092919063ffffffff16565b601b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b611c7c858585613a4e565b5060019150509392505050565b611c91612809565b611c9a57600080fd5b826003819055508160048190555080600581905550505050565b611cbc612809565b611cc557600080fd5b80601960016101000a81548160ff02191690831515021790555050565b6000611d8b601a60008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d7d601a600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546015546142b290919063ffffffff16565b6142b290919063ffffffff16565b905090565b611d98612809565b611da157600080fd5b601c60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d48e89683836040518363ffffffff1660e01b81526004018083815260200182815260200192505050600060405180830381600087803b158015611e1e57600080fd5b505af1158015611e32573d6000803e3d6000fd5b505050505050565b601281565b611e47612809565b611e5057600080fd5b80602060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600260009054906101000a900460ff16905090565b611ef4612809565b611efd57600080fd5b8060168190555050565b60175481565b611f15612809565b611f1e57600080fd5b611f27826142fc565b611f7c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b815260200180615341603b913960400191505060405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600061206882601b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461430f90919063ffffffff16565b601b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925601b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b60155481565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60136020528060005260406000206000915054906101000a900460ff1681565b602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61224d612809565b61225657600080fd5b6001602160146101000a81548160ff0219169083151502179055506000600954111561228857612287600954614397565b5b6000600a54111561229f5761229e600a5461441b565b5b6000600b5411156122b6576122b5600b546144c9565b5b6000602160146101000a81548160ff021916908315150217905550565b6122db612809565b6122e457600080fd5b80601960006101000a81548160ff02191690831515021790555050565b600061230b612809565b61231457600080fd5b601c60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e5711e8b8585856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b1580156123c557600080fd5b505af11580156123d9573d6000803e3d6000fd5b505050506040513d60208110156123ef57600080fd5b810190808051906020019092919050505090509392505050565b612411612809565b61241a57600080fd5b612443600c54612435836015546136c790919063ffffffff16565b61374d90919063ffffffff16565b60188190555050565b612454612809565b61245d57600080fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601c60009054906101000a900460ff1681565b6000601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61251c612809565b61252557600080fd5b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482060405160405180910390a26000600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6125d6612809565b6125df57600080fd5b612608600c546125fa836015546136c790919063ffffffff16565b61374d90919063ffffffff16565b60178190555050565b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561267b57600080fd5b505af115801561268f573d6000803e3d6000fd5b50505050565b61269d612809565b6126a657600080fd5b60004790508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156126f1573d6000803e3d6000fd5b505050565b60055481565b60045481565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612730612809565b61273957600080fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000602160149054906101000a900460ff1615905090565b601960009054906101000a900460ff1681565b60106020528060005260406000206000915054906101000a900460ff1681565b6000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b60075481565b606060018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156128ff5780601f106128d4576101008083540402835291602001916128ff565b820191906000526020600020905b8154815290600101906020018083116128e257829003601f168201915b5050505050905090565b612911612809565b61291a57600080fd5b620b71b08110612992576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f476173206d757374206265206c6f776572207468616e2037353030303000000081525060200191505060405180910390fd5b80601e8190555050565b600080601b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050808310612aac576000601b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612b40565b612abf83826142b290919063ffffffff16565b601b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925601b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600082600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612c8f57600080fd5b612c9a338585613a4e565b50600191505092915050565b601c60019054906101000a900460ff1681565b612cc1612809565b612cca57600080fd5b801515601c60019054906101000a900460ff1615151415612d53576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f4e6f74204368616e67656421210000000000000000000000000000000000000081525060200191505060405180910390fd5b80601c60016101000a81548160ff02191690831515021790555050565b60126020528060005260406000206000915054906101000a900460ff1681565b600b5481565b60085481565b60116020528060005260406000206000915054906101000a900460ff1681565b612dc4612809565b612dcd57600080fd5b8015612df25780601c60006101000a81548160ff021916908315150217905550612e0d565b80601c60006101000a81548160ff0219169083151502179055505b50565b600a5481565b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600080601a6000601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050612f12612ede611ce2565b612f04612ef56002856136c790919063ffffffff16565b866136c790919063ffffffff16565b61374d90919063ffffffff16565b915050919050565b6000601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612fa9612809565b612fb257600080fd5b801515600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415613078576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4572726f723a204e6f74206368616e676564000000000000000000000000000081525060200191505060405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6130db612809565b6130e457600080fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60165481565b6000613138612809565b61314157600080fd5b8373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156131b257600080fd5b505af11580156131c6573d6000803e3d6000fd5b505050506040513d60208110156131dc57600080fd5b810190808051906020019092919050505090509392505050565b6131fe612809565b61320757600080fd5b80156132ce57601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156132cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f5061697220416c7265616479205365742121000000000000000000000000000081525060200191505060405180910390fd5b5b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60035481565b6133e7612809565b6133f057600080fd5b6133f981614594565b50565b60065481565b61340a612809565b61341357600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156134995750601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6134a257600080fd5b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080156135b057601c60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561359357600080fd5b505af11580156135a7573d6000803e3d6000fd5b50505050613664565b601c60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca96836135f8856124cb565b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561364b57600080fd5b505af115801561365f573d6000803e3d6000fd5b505050505b5050565b60095481565b601960019054906101000a900460ff1681565b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e6020528060005260406000206000915054906101000a900460ff1681565b6000808314156136da5760009050613747565b60008284029050828482816136eb57fe5b0414613742576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806153c66021913960400191505060405180910390fd5b809150505b92915050565b600061378f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061468e565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561381d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806153e76024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156138a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061537c6022913960400191505060405180910390fd5b80601b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b6000838311158290613a3b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613a005780820151818401526020810190506139e5565b50505050905090810190601f168015613a2d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015613af45750600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b613b66576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f696e5f626c61636b6c697374000000000000000000000000000000000000000081525060200191505060405180910390fd5b601c60019054906101000a900460ff1680613bca5750601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80613bd95750613bd8612809565b5b613c4b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f54726164652069732043757272656e746c79205061757365642121000000000081525060200191505060405180910390fd5b601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015613cef5750601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015613d075750601960009054906101000a900460ff165b15613d6857601854821115613d67576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602881526020018061539e6028913960400191505060405180910390fd5b5b602160149054906101000a900460ff1615613d8f57613d88848484614754565b90506142ab565b613d9761488b565b15613da557613da4614932565b5b613dad614998565b15613dbb57613dba614a06565b5b613e0d82601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546142b290919063ffffffff16565b601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000613e5c8585614a55565b613e665782613e72565b613e71858585614bb0565b5b9050613ec681601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461430f90919063ffffffff16565b601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601960019054906101000a900460ff168015613f6f5750601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613f9e57601754613f9282613f84876124cb565b61430f90919063ffffffff16565b1115613f9d57600080fd5b5b601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166140a657601c60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686614037886124cb565b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561408a57600080fd5b505af192505050801561409b575060015b6140a4576140a5565b5b5b601360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166141ae57601c60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968561413f876124cb565b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561419257600080fd5b505af19250505080156141a3575060015b6141ac576141ad565b5b5b601c60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c479601e546040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561422557600080fd5b505af1925050508015614236575060015b61423f57614240565b5b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a360019150505b9392505050565b60006142f483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061398e565b905092915050565b600080823b905060008111915050919050565b60008082840190508381101561438d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60006143af600260095461374d90919063ffffffff16565b905060006143c8826009546142b290919063ffffffff16565b905060004790506143d883614f37565b60006143ed82476142b290919063ffffffff16565b9050614404856009546142b290919063ffffffff16565b60098190555061441483826151eb565b5050505050565b600047905061442982614f37565b600061443e82476142b290919063ffffffff16565b905061445583600a546142b290919063ffffffff16565b600a81905550600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156144c3573d6000803e3d6000fd5b50505050565b60004790506144d782614f37565b60006144ec82476142b290919063ffffffff16565b905061450383600b546142b290919063ffffffff16565b600b81905550601c60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561457357600080fd5b505af193505050508015614585575060015b61458e5761458f565b5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156145ce57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000808311829061473a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156146ff5780820151818401526020810190506146e4565b50505050905090810190601f16801561472c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161474657fe5b049050809150509392505050565b60006147a882601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546142b290919063ffffffff16565b601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061483d82601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461430f90919063ffffffff16565b601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600190509392505050565b600080614897306124cb565b905060006016548210159050601c60009054906101000a900460ff1680156148cc5750602160149054906101000a900460ff16155b80156148d55750805b801561492b5750601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b9250505090565b6001602160146101000a81548160ff0219169083151502179055506000600954111561496457614963600954614397565b5b6000600a54111561497b5761497a600a5461441b565b5b6000602160146101000a81548160ff021916908315150217905550565b6000602160149054906101000a900460ff16158015614a015750601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905090565b6001602160146101000a81548160ff0219169083151502179055506000600b541115614a3857614a37600b546144c9565b5b6000602160146101000a81548160ff021916908315150217905550565b6000600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680614af85750600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15614b065760009050614baa565b601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680614ba75750601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b90505b92915050565b6000806000806000601260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615614ce757614c33600c54614c25600354896136c790919063ffffffff16565b61374d90919063ffffffff16565b925082600960008282540192505081905550614c6e600c54614c60600454896136c790919063ffffffff16565b61374d90919063ffffffff16565b915081600a60008282540192505081905550614ca9600c54614c9b600554896136c790919063ffffffff16565b61374d90919063ffffffff16565b905080600b60008282540192505081905550614ce081614cd2848661430f90919063ffffffff16565b61430f90919063ffffffff16565b9350614e13565b601260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615614e1257614d62600c54614d54600654896136c790919063ffffffff16565b61374d90919063ffffffff16565b925082600960008282540192505081905550614d9d600c54614d8f600754896136c790919063ffffffff16565b61374d90919063ffffffff16565b915081600a60008282540192505081905550614dd8600c54614dca600854896136c790919063ffffffff16565b61374d90919063ffffffff16565b905080600b60008282540192505081905550614e0f81614e01848661430f90919063ffffffff16565b61430f90919063ffffffff16565b93505b5b6000841115614f1757614e6e84601a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461430f90919063ffffffff16565b601a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a35b614f2a84876142b290919063ffffffff16565b9450505050509392505050565b6060600267ffffffffffffffff81118015614f5157600080fd5b50604051908082528060200260200182016040528015614f805781602001602082028036833780820191505090505b5090503081600081518110614f9157fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561503357600080fd5b505afa158015615047573d6000803e3d6000fd5b505050506040513d602081101561505d57600080fd5b81019080805190602001909291905050508160018151811061507b57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506150e230602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684613797565b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b838110156151a657808201518184015260208101905061518b565b505050509050019650505050505050600060405180830381600087803b1580156151cf57600080fd5b505af11580156151e3573d6000803e3d6000fd5b505050505050565b61521830602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684613797565b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000806152646127df565b426040518863ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200196505050505050506060604051808303818588803b1580156152e957600080fd5b505af11580156152fd573d6000803e3d6000fd5b50505050506040513d606081101561531457600080fd5b81019080805190602001909291908051906020019092919080519060200190929190505050505050505056fe6f6e6c7920636f6e747261637420616464726573732c206e6f7420616c6c6f7765642065787465726e616c6c79206f776e6564206163636f756e7445524332303a20617070726f766520746f20746865207a65726f20616464726573735472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373a264697066735822122068ea67aa010f5d10c99d4429e3d052ea13e1a2b7bf20b4ca9c67e12391a00fc764736f6c63430007040033

Deployed Bytecode Sourcemap

21558:18800:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21282:83;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32518:189;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;22167:36;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;37418:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;38042:102;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;34056:264;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23156:68;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;25465:447;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;33782:266;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;33351:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;36086:167;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;34708:182;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;22878:37;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;36441:138;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21468:83;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;37926:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23071:72;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;37682:236;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;32122:388;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;22924:59;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;22212:83;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;22767:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;23705:36;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;29175:279;;;;;;;;;;;;;:::i;:::-;;33231:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;35276:209;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;35944:134;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;33469:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23465:36;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;38155:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;20493:126;;;;;;;;;;;;;:::i;:::-;;35794:142;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;36354:79;;;;;;;;;;;;;:::i;:::-;;34898:170;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21876:33;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21834:35;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;23587:39;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;37546:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;36261:85;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;23243:41;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;22588:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;20228:79;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;20393:92;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;21961:36;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21373:87;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35618:168;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;31542:572;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;23679:19;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;25242:215;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;23508:30;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;33600:174;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;22702:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;22127:31;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;22004:34;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;22643:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;31140:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;22087:33;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;33103:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;36930:266;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;31346:188;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;37204:206;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;35493:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;22990:64;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;35076:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;36587:335;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21792:35;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;20627:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21918:36;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;34328:372;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;22047:33;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;23291:35;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;23748:32;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;22480:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;21282:83;21319:13;21352:5;21345:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21282:83;:::o;32518:189::-;32621:4;32643:34;32652:10;32663:7;32671:5;32643:8;:34::i;:::-;32695:4;32688:11;;32518:189;;;;:::o;22167:36::-;;;;:::o;37418:120::-;20355:9;:7;:9::i;:::-;20347:18;;;;;;37523:7:::1;37498:15;:22;37514:5;37498:22;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;37418:120:::0;;:::o;38042:102::-;38097:7;38124:12;;38117:19;;38042:102;:::o;34056:264::-;20355:9;:7;:9::i;:::-;20347:18;;;;;;34225:6:::1;34206:16;:25;;;;34261:13;34242:16;:32;;;;34302:10;34285:14;:27;;;;34056:264:::0;;;:::o;23156:68::-;;;;:::o;25465:447::-;25608:4;25595:2;21759:3;21745:18;;:2;:18;;;;21737:27;;;;;;25680:2:::1;25639:11;:17;25651:4;25639:17;;;;;;;;;;;;;;;:29;25657:10;25639:29;;;;;;;;;;;;;;;;:44;25635:207;;25732:98;25798:5;25732:98;;;;;;;;;;;;;;;;::::0;:11:::1;:17;25744:4;25732:17;;;;;;;;;;;;;;;:61;25768:10;25732:61;;;;;;;;;;;;;;;;:65;;:98;;;;;:::i;:::-;25700:11;:17;25712:4;25700:17;;;;;;;;;;;;;;;:29;25718:10;25700:29;;;;;;;;;;;;;;;:130;;;;25635:207;25852:30;25866:4;25872:2;25876:5;25852:13;:30::i;:::-;;25900:4;25893:11;;25465:447:::0;;;;;;:::o;33782:266::-;20355:9;:7;:9::i;:::-;20347:18;;;;;;33955:6:::1;33937:15;:24;;;;33990:13;33972:15;:31;;;;34030:10;34014:13;:26;;;;33782:266:::0;;;:::o;33351:110::-;20355:9;:7;:9::i;:::-;20347:18;;;;;;33446:7:::1;33427:16;;:26;;;;;;;;;;;;;;;;;;33351:110:::0;:::o;36086:167::-;36139:7;36179:66;36223:9;:21;22429:42;36223:21;;;;;;;;;;;;;;;;36179:39;36196:9;:21;22342:42;36196:21;;;;;;;;;;;;;;;;36179:12;;:16;;:39;;;;:::i;:::-;:43;;:66;;;;:::i;:::-;36159:86;;36086:167;:::o;34708:182::-;20355:9;:7;:9::i;:::-;20347:18;;;;;;34817:11:::1;;;;;;;;;;;:35;;;34853:10;34865:16;34817:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;34708:182:::0;;:::o;22878:37::-;22913:2;22878:37;:::o;36441:138::-;20355:9;:7;:9::i;:::-;20347:18;;;;;;36536:8:::1;36504:12;;:41;;;;;;;;;;;;;;;;;;36563:8;36556:4;;:15;;;;;;;;;;;;;;;;;;36441:138:::0;:::o;21468:83::-;21509:5;21534:9;;;;;;;;;;;21527:16;;21468:83;:::o;37926:104::-;20355:9;:7;:9::i;:::-;20347:18;;;;;;38016:6:::1;37995:18;:27;;;;37926:104:::0;:::o;23071:72::-;;;;:::o;37682:236::-;20355:9;:7;:9::i;:::-;20347:18;;;;;;37778:23:::1;37789:11;37778:10;:23::i;:::-;37770:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37901:5;37876:9;:22;37886:11;37876:22;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;37682:236:::0;;:::o;32122:388::-;32222:4;32279:72;32340:10;32279:11;:23;32291:10;32279:23;;;;;;;;;;;;;;;:56;32317:7;32279:56;;;;;;;;;;;;;;;;:60;;:72;;;;:::i;:::-;32244:11;:23;32256:10;32244:23;;;;;;;;;;;;;;;:32;32268:7;32244:32;;;;;;;;;;;;;;;:107;;;;32415:7;32367:113;;32390:10;32367:113;;;32437:11;:23;32449:10;32437:23;;;;;;;;;;;;;;;:32;32461:7;32437:32;;;;;;;;;;;;;;;;32367:113;;;;;;;;;;;;;;;;;;32498:4;32491:11;;32122:388;;;;:::o;22924:59::-;;;;:::o;22212:83::-;;;;;;;;;;;;;:::o;22767:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;23705:36::-;;;;;;;;;;;;;:::o;29175:279::-;20355:9;:7;:9::i;:::-;20347:18;;;;;;23857:4:::1;23848:6;;:13;;;;;;;;;;;;;;;;;;29259:1:::2;29238:18;;:22;29235:63;;;29262:36;29279:18;;29262:16;:36::i;:::-;29235:63;29334:1;29313:18;;:22;29310:63;;;29337:36;29354:18;;29337:16;:36::i;:::-;29310:63;29406:1;29387:16;;:20;29384:62;;;29409:37;29429:16;;29409:19;:37::i;:::-;29384:62;23893:5:::1;23884:6;;:14;;;;;;;;;;;;;;;;;;29175:279::o:0;33231:112::-;20355:9;:7;:9::i;:::-;20347:18;;;;;;33328:7:::1;33303:22;;:32;;;;;;;;;;;;;;;;;;33231:112:::0;:::o;35276:209::-;35390:12;20355:9;:7;:9::i;:::-;20347:18;;;;;;35422:11:::1;;;;;;;;;;;:23;;;35446:12;35460:9;35470:6;35422:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;35415:62;;35276:209:::0;;;;;:::o;35944:134::-;20355:9;:7;:9::i;:::-;20347:18;;;;;;36023:46:::1;36054:14;;36023:26;36040:8;36023:12;;:16;;:26;;;;:::i;:::-;:30;;:46;;;;:::i;:::-;36010:10;:59;;;;35944:134:::0;:::o;33469:123::-;20355:9;:7;:9::i;:::-;20347:18;;;;;;33577:7:::1;33555:13;:19;33569:4;33555:19;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;33469:123:::0;;:::o;23465:36::-;;;;;;;;;;;;;:::o;38155:119::-;38221:7;38248:9;:18;38258:7;38248:18;;;;;;;;;;;;;;;;38241:25;;38155:119;;;:::o;20493:126::-;20355:9;:7;:9::i;:::-;20347:18;;;;;;20574:6:::1;;;;;;;;;;;20555:26;;;;;;;;;;;;20609:1;20592:6;;:19;;;;;;;;;;;;;;;;;;20493:126::o:0;35794:142::-;20355:9;:7;:9::i;:::-;20347:18;;;;;;35881:46:::1;35912:14;;35881:26;35898:8;35881:12;;:16;;:26;;;;:::i;:::-;:30;;:46;;;;:::i;:::-;35864:14;:63;;;;35794:142:::0;:::o;36354:79::-;36413:4;;;;;;;;;;;36396:27;;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36354:79::o;34898:170::-;20355:9;:7;:9::i;:::-;20347:18;;;;;;34974:15:::1;34992:21;34974:39;;35032:9;35024:27;;:36;35052:7;35024:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;20376:1;34898:170:::0;:::o;21876:33::-;;;;:::o;21834:35::-;;;;:::o;23587:39::-;;;;;;;;;;;;;:::o;37546:128::-;20355:9;:7;:9::i;:::-;20347:18;;;;;;37659:7:::1;37630:19;:26;37650:5;37630:26;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;37546:128:::0;;:::o;36261:85::-;36307:4;36332:6;;;;;;;;;;;36331:7;36324:14;;36261:85;:::o;23243:41::-;;;;;;;;;;;;;:::o;22588:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;20228:79::-;20266:7;20293:6;;;;;;;;;;;20286:13;;20228:79;:::o;20393:92::-;20433:4;20471:6;;;;;;;;;;;20457:20;;:10;:20;;;20450:27;;20393:92;:::o;21961:36::-;;;;:::o;21373:87::-;21412:13;21445:7;21438:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21373:87;:::o;35618:168::-;20355:9;:7;:9::i;:::-;20347:18;;;;;;35707:6:::1;35701:3;:12;35693:54;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;35775:3;35758:14;:20;;;;35618:168:::0;:::o;31542:572::-;31647:4;31669:16;31688:11;:23;31700:10;31688:23;;;;;;;;;;;;;;;:32;31712:7;31688:32;;;;;;;;;;;;;;;;31669:51;;31754:8;31735:15;:27;31731:225;;31814:1;31779:11;:23;31791:10;31779:23;;;;;;;;;;;;;;;:32;31803:7;31779:32;;;;;;;;;;;;;;;:36;;;;31731:225;;;31883:61;31914:15;31883:8;:12;;:61;;;;:::i;:::-;31848:11;:23;31860:10;31848:23;;;;;;;;;;;;;;;:32;31872:7;31848:32;;;;;;;;;;;;;;;:96;;;;31731:225;32019:7;31971:113;;31994:10;31971:113;;;32041:11;:23;32053:10;32041:23;;;;;;;;;;;;;;;:32;32065:7;32041:32;;;;;;;;;;;;;;;;31971:113;;;;;;;;;;;;;;;;;;32102:4;32095:11;;;31542:572;;;;:::o;23679:19::-;;;;;;;;;;;;;:::o;25242:215::-;25369:4;25347:2;21759:3;21745:18;;:2;:18;;;;21737:27;;;;;;25391:36:::1;25405:10;25417:2;25421:5;25391:13;:36::i;:::-;;25445:4;25438:11;;25242:215:::0;;;;;:::o;23508:30::-;;;;;;;;;;;;;:::o;33600:174::-;20355:9;:7;:9::i;:::-;20347:18;;;;;;33703:7:::1;33681:29;;:18;;;;;;;;;;;:29;;;;33673:54;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;33759:7;33738:18;;:28;;;;;;;;;;;;;;;;;;33600:174:::0;:::o;22702:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;22127:31::-;;;;:::o;22004:34::-;;;;:::o;22643:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;31140:198::-;20355:9;:7;:9::i;:::-;20347:18;;;;;;31214:5:::1;31211:120;;;31256:5;31236:17;;:25;;;;;;;;;;;;;;;;;;31211:120;;;31314:5;31294:17;;:25;;;;;;;;;;;;;;;;;;31211:120;31140:198:::0;:::o;22087:33::-;;;;:::o;33103:120::-;33165:4;33189:19;:26;33209:5;33189:26;;;;;;;;;;;;;;;;;;;;;;;;;33182:33;;33103:120;;;:::o;36930:266::-;37025:7;37050:24;37077:9;:15;37087:4;;;;;;;;;;;37077:15;;;;;;;;;;;;;;;;37050:42;;37123:65;37165:22;:20;:22::i;:::-;37123:37;37136:23;37157:1;37136:16;:20;;:23;;;;:::i;:::-;37123:8;:12;;:37;;;;:::i;:::-;:41;;:65;;;;:::i;:::-;37103:85;;;36930:266;;;:::o;31346:188::-;31466:7;31498:11;:19;31510:6;31498:19;;;;;;;;;;;;;;;:28;31518:7;31498:28;;;;;;;;;;;;;;;;31491:35;;31346:188;;;;:::o;37204:206::-;20355:9;:7;:9::i;:::-;20347:18;;;;;;37325:7:::1;37295:37;;:19;:26;37315:5;37295:26;;;;;;;;;;;;;;;;;;;;;;;;;:37;;;;37287:68;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;37395:7;37366:19;:26;37386:5;37366:26;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;37204:206:::0;;:::o;35493:117::-;20355:9;:7;:9::i;:::-;20347:18;;;;;;35592:10:::1;35566:23;;:36;;;;;;;;;;;;;;;;;;35493:117:::0;:::o;22990:64::-;;;;:::o;35076:192::-;35181:12;20355:9;:7;:9::i;:::-;20347:18;;;;;;35219:12:::1;35212:29;;;35242:9;35253:6;35212:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;35205:55;;35076:192:::0;;;;;:::o;36587:335::-;20355:9;:7;:9::i;:::-;20347:18;;;;;;36678:7:::1;36675:102;;;36711:25;:32;36737:5;36711:32;;;;;;;;;;;;;;;;;;;;;;;;;36710:33;36702:63;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;36675:102;36822:7;36787:25;:32;36813:5;36787:32;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;36866:4;36840:16;:23;36857:5;36840:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;36910:4;36881:19;:26;36901:5;36881:26;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;36587:335:::0;;:::o;21792:35::-;;;;:::o;20627:109::-;20355:9;:7;:9::i;:::-;20347:18;;;;;;20700:28:::1;20719:8;20700:18;:28::i;:::-;20627:109:::0;:::o;21918:36::-;;;;:::o;34328:372::-;20355:9;:7;:9::i;:::-;20347:18;;;;;;34442:4:::1;34424:23;;:6;:23;;;;:61;;;;;34452:25;:33;34478:6;34452:33;;;;;;;;;;;;;;;;;;;;;;;;;34451:34;34424:61;34416:70;;;::::0;::::1;;34524:6;34497:16;:24;34514:6;34497:24;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;34547:6;34543:150;;;34570:11;;;;;;;;;;;:20;;;34591:6;34599:1;34570:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;34543:150;;;34634:11;;;;;;;;;;;:20;;;34655:6;34663:17;34673:6;34663:9;:17::i;:::-;34634:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;34543:150;34328:372:::0;;:::o;22047:33::-;;;;:::o;23291:35::-;;;;;;;;;;;;;:::o;23748:32::-;;;;;;;;;;;;;:::o;22480:41::-;;;;;;;;;;;;;;;;;;;;;;:::o;4788:250::-;4846:7;4875:1;4870;:6;4866:47;;;4900:1;4893:8;;;;4866:47;4925:9;4941:1;4937;:5;4925:17;;4970:1;4965;4961;:5;;;;;;:10;4953:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5029:1;5022:8;;;4788:250;;;;;:::o;5046:132::-;5104:7;5131:39;5135:1;5138;5131:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;5124:46;;5046:132;;;;:::o;32715:380::-;32868:1;32851:19;;:5;:19;;;;32843:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32949:1;32930:21;;:7;:21;;;;32922:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33033:6;33003:11;:18;33015:5;33003:18;;;;;;;;;;;;;;;:27;33022:7;33003:27;;;;;;;;;;;;;;;:36;;;;33071:7;33055:32;;33064:5;33055:32;;;33080:6;33055:32;;;;;;;;;;;;;;;;;;32715:380;;;:::o;4554:226::-;4674:7;4707:1;4702;:6;;4710:12;4694:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4734:9;4750:1;4746;:5;4734:17;;4771:1;4764:8;;;4554:226;;;;;:::o;26190:1608::-;26316:4;26344:9;:17;26354:6;26344:17;;;;;;;;;;;;;;;;;;;;;;;;;26343:18;:43;;;;;26366:9;:20;26376:9;26366:20;;;;;;;;;;;;;;;;;;;;;;;;;26365:21;26343:43;26335:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26424:18;;;;;;;;;;;:47;;;;26446:13;:25;26460:10;26446:25;;;;;;;;;;;;;;;;;;;;;;;;;26424:47;:60;;;;26475:9;:7;:9::i;:::-;26424:60;26416:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26533:15;:23;26549:6;26533:23;;;;;;;;;;;;;;;;;;;;;;;;;26532:24;:55;;;;;26561:15;:26;26577:9;26561:26;;;;;;;;;;;;;;;;;;;;;;;;;26560:27;26532:55;:81;;;;;26591:22;;;;;;;;;;;26532:81;26529:186;;;26648:10;;26638:6;:20;;26630:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26529:186;26733:6;;;;;;;;;;;26729:87;;;26763:41;26778:6;26786:9;26797:6;26763:14;:41::i;:::-;26756:48;;;;26729:87;26832:20;:18;:20::i;:::-;26828:67;;;26869:14;:12;:14::i;:::-;26828:67;26911:16;:14;:16::i;:::-;26907:59;;;26944:10;:8;:10::i;:::-;26907:59;27006:29;27028:6;27006:9;:17;27016:6;27006:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;26986:9;:17;26996:6;26986:17;;;;;;;;;;;;;;;:49;;;;27056:22;27081:32;27095:6;27103:9;27081:13;:32::i;:::-;:104;;27179:6;27081:104;;;27129:34;27137:6;27145:9;27156:6;27129:7;:34::i;:::-;27081:104;27056:129;;27221:40;27246:14;27221:9;:20;27231:9;27221:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;27198:9;:20;27208:9;27198:20;;;;;;;;;;;;;;;:63;;;;27277:16;;;;;;;;;;;:51;;;;;27298:19;:30;27318:9;27298:30;;;;;;;;;;;;;;;;;;;;;;;;;27297:31;27277:51;27274:150;;;27397:14;;27353:40;27378:14;27353:20;27363:9;27353;:20::i;:::-;:24;;:40;;;;:::i;:::-;:58;;27345:67;;;;;;27274:150;27440:16;:24;27457:6;27440:24;;;;;;;;;;;;;;;;;;;;;;;;;27436:96;;27471:11;;;;;;;;;;;:20;;;27492:6;27500:17;27510:6;27500:9;:17::i;:::-;27471:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27467:63;;;;;;27436:96;27546:16;:27;27563:9;27546:27;;;;;;;;;;;;;;;;;;;;;;;;;27542:105;;27580:11;;;;;;;;;;;:20;;;27601:9;27612:20;27622:9;27612;:20::i;:::-;27580:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27576:69;;;;;;27542:105;27663:11;;;;;;;;;;;:19;;;27683:14;;27663:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27659:51;;;;;;27743:9;27727:41;;27736:6;27727:41;;;27753:14;27727:41;;;;;;;;;;;;;;;;;;27786:4;27779:11;;;26190:1608;;;;;;:::o;4410:136::-;4468:7;4495:43;4499:1;4502;4495:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;4488:50;;4410:136;;;;:::o;38282:165::-;38339:4;38356:9;38407:4;38395:17;38387:25;;38438:1;38431:4;:8;38424:15;;;38282:165;;;:::o;4221:181::-;4279:7;4299:9;4315:1;4311;:5;4299:17;;4340:1;4335;:6;;4327:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4393:1;4386:8;;;4221:181;;;;:::o;38812:431::-;38871:9;38883:25;38906:1;38883:18;;:22;;:25;;;;:::i;:::-;38871:37;;38919:14;38936:28;38959:4;38936:18;;:22;;:28;;;;:::i;:::-;38919:45;;38975:18;38996:21;38975:42;;39028:22;39045:4;39028:16;:22::i;:::-;39061:19;39083:40;39109:13;39083:21;:25;;:40;;;;:::i;:::-;39061:62;;39155:31;39178:7;39155:18;;:22;;:31;;;;:::i;:::-;39134:18;:52;;;;39197:38;39210:9;39220:14;39197:12;:38::i;:::-;38812:431;;;;;:::o;38455:349::-;38514:18;38535:21;38514:42;;38567:25;38584:7;38567:16;:25::i;:::-;38603:19;38625:40;38651:13;38625:21;:25;;:40;;;;:::i;:::-;38603:62;;38697:31;38720:7;38697:18;;:22;;:31;;;;:::i;:::-;38676:18;:52;;;;38747:23;;;;;;;;;;;38739:41;;:57;38781:14;38739:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38455:349;;;:::o;29882:363::-;29947:19;29969:21;29947:43;;30001:25;30018:7;30001:16;:25::i;:::-;30037:20;30060:41;30086:14;30060:21;:25;;:41;;;;:::i;:::-;30037:64;;30131:29;30152:7;30131:16;;:20;;:29;;;;:::i;:::-;30112:16;:48;;;;30175:11;;;;;;;;;;;:19;;;30204:15;30175:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30171:65;;;;;;29882:363;;;:::o;20744:187::-;20838:1;20818:22;;:8;:22;;;;20810:31;;;;;;20886:8;20857:38;;20878:6;;;;;;;;;;;20857:38;;;;;;;;;;;;20915:8;20906:6;;:17;;;;;;;;;;;;;;;;;;20744:187;:::o;5186:225::-;5306:7;5338:1;5334;:5;5341:12;5326:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5365:9;5381:1;5377;:5;;;;;;5365:17;;5402:1;5395:8;;;5186:225;;;;;:::o;25920:262::-;26038:4;26073:27;26093:6;26073:9;:15;26083:4;26073:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;26055:9;:15;26065:4;26055:15;;;;;;;;;;;;;;;:45;;;;26127:25;26145:6;26127:9;:13;26137:2;26127:13;;;;;;;;;;;;;;;;:17;;:25;;;;:::i;:::-;26111:9;:13;26121:2;26111:13;;;;;;;;;;;;;;;:41;;;;26170:4;26163:11;;25920:262;;;;;:::o;30606:358::-;30659:4;30678:28;30709:24;30727:4;30709:9;:24::i;:::-;30678:55;;30744:12;30783:18;;30759:20;:42;;30744:57;;30834:17;;;;;;;;;;;:42;;;;;30870:6;;;;;;;;;;;30869:7;30834:42;:67;;;;;30894:7;30834:67;:122;;;;;30919:25;:37;30945:10;30919:37;;;;;;;;;;;;;;;;;;;;;;;;;30918:38;30834:122;30814:142;;;;30606:358;:::o;29462:254::-;23857:4;23848:6;;:13;;;;;;;;;;;;;;;;;;29541:1:::1;29520:18;;:22;29517:89;;;29558:36;29575:18;;29558:16;:36::i;:::-;29517:89;29642:1;29621:18;;:22;29618:89;;;29659:36;29676:18;;29659:16;:36::i;:::-;29618:89;23893:5:::0;23884:6;;:14;;;;;;;;;;;;;;;;;;29462:254::o;30972:158::-;31021:4;31060:6;;;;;;;;;;;31059:7;:62;;;;;31084:25;:37;31110:10;31084:37;;;;;;;;;;;;;;;;;;;;;;;;;31083:38;31059:62;31038:83;;30972:158;:::o;29724:150::-;23857:4;23848:6;;:13;;;;;;;;;;;;;;;;;;29795:1:::1;29776:16;;:20;29773:88;;;29812:37;29832:16;;29812:19;:37::i;:::-;29773:88;23893:5:::0;23884:6;;:14;;;;;;;;;;;;;;;;;;29724:150::o;30253:345::-;30352:4;30377:19;:25;30397:4;30377:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;30406:19;:23;30426:2;30406:23;;;;;;;;;;;;;;;;;;;;;;;;;30377:52;30374:217;;;30452:5;30445:12;;;;30374:217;30514:25;:31;30540:4;30514:31;;;;;;;;;;;;;;;;;;;;;;;;;:64;;;;30549:25;:29;30575:2;30549:29;;;;;;;;;;;;;;;;;;;;;;;;;30514:64;30506:73;;30253:345;;;;;:::o;27806:1361::-;27927:7;27949:17;27977:9;27997;28017;28050:25;:33;28076:6;28050:33;;;;;;;;;;;;;;;;;;;;;;;;;28047:887;;;28108:47;28140:14;;28108:27;28119:15;;28108:6;:10;;:27;;;;:::i;:::-;:31;;:47;;;;:::i;:::-;28101:54;;28192:4;28170:18;;:26;;;;;;;;;;;28218:47;28250:14;;28218:27;28229:15;;28218:6;:10;;:27;;;;:::i;:::-;:31;;:47;;;;:::i;:::-;28211:54;;28302:4;28280:18;;:26;;;;;;;;;;;28328:45;28358:14;;28328:25;28339:13;;28328:6;:10;;:25;;;;:::i;:::-;:29;;:45;;;;:::i;:::-;28321:52;;28408:4;28388:16;;:24;;;;;;;;;;;28441;28460:4;28441:14;28450:4;28441;:8;;:14;;;;:::i;:::-;:18;;:24;;;;:::i;:::-;28429:36;;28047:887;;;28495:25;:36;28521:9;28495:36;;;;;;;;;;;;;;;;;;;;;;;;;28492:442;;;28556:48;28589:14;;28556:28;28567:16;;28556:6;:10;;:28;;;;:::i;:::-;:32;;:48;;;;:::i;:::-;28549:55;;28641:4;28619:18;;:26;;;;;;;;;;;28667:48;28700:14;;28667:28;28678:16;;28667:6;:10;;:28;;;;:::i;:::-;:32;;:48;;;;:::i;:::-;28660:55;;28752:4;28730:18;;:26;;;;;;;;;;;28778:46;28809:14;;28778:26;28789:14;;28778:6;:10;;:26;;;;:::i;:::-;:30;;:46;;;;:::i;:::-;28771:53;;28859:4;28839:16;;:24;;;;;;;;;;;28892;28911:4;28892:14;28901:4;28892;:8;;:14;;;;:::i;:::-;:18;;:24;;;;:::i;:::-;28880:36;;28492:442;28047:887;28961:1;28949:9;:13;28946:173;;;29006:39;29035:9;29006;:24;29024:4;29006:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;28979:9;:24;28997:4;28979:24;;;;;;;;;;;;;;;:66;;;;29090:4;29065:42;;29074:6;29065:42;;;29097:9;29065:42;;;;;;;;;;;;;;;;;;28946:173;29138:21;29149:9;29138:6;:10;;:21;;;;:::i;:::-;29131:28;;;;;;27806:1361;;;;;:::o;39754:564::-;39880:21;39918:1;39904:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39880:40;;39949:4;39931;39936:1;39931:7;;;;;;;;;;;;;:23;;;;;;;;;;;39975:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39965:4;39970:1;39965:7;;;;;;;;;;;;;:23;;;;;;;;;;;40001:53;40018:4;40033:6;;;;;;;;;;;40042:11;40001:8;:53::i;:::-;40093:6;;;;;;;;;;;:57;;;40165:11;40191:1;40235:4;40262;40282:15;40093:215;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39754:564;;:::o;39251:495::-;39399:53;39416:4;39431:6;;;;;;;;;;;39440:11;39399:8;:53::i;:::-;39493:6;;;;;;;;;;;:22;;;39523:9;39556:4;39576:11;39602:1;39645;39688:7;:5;:7::i;:::-;39710:15;39493:243;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39251:495;;:::o

Swarm Source

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