ETH Price: $3,093.43 (-1.30%)

Token

North Pole Inu (NORTHPOLE)
 

Overview

Max Total Supply

10,000,000 NORTHPOLE

Holders

79

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0 NORTHPOLE

Value
$0.00
0xa451348b84990dab4dc6646fd0fea60d47b7878f
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:
NorthPoleInu

Compiler Version
v0.7.6+commit.7338295f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-11-07
*/

/**

As the Christmas META advances, a long staff thumps the ground, unleashing a gift for santas, rudolphs and hodlers alike.

The North Pole Inu ($NORTHPOLE) contract is constructed so that the success of the project is shared with the most dedicated.
The smart contract will be able to pick out transactions done from the previous hour to decide who gets to become the next SANTA and RUDOLPH. 

8% Total Tax
3% SANTA Payment
1% RUDOLPH Payment
4% Marketing & Development

SANTA    - Given to the Biggest Buyer in one transaction 
RUDOLPH  - Given to the Biggest Buyer accumulated

See more details on our website: https://www.northpoleinu.com/

Website: https://www.northpoleinu.com/
Telegram: https://t.me/northpoleinuportal
Twitter: https://twitter.com/northpoleinu

*/
// SPDX-License-Identifier: Unlicensed

pragma solidity ^0.7.4;

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

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

    function decimals() external view returns (uint8);

    function symbol() external view returns (string memory);

    function name() external view returns (string memory);

    function getOwner() external view returns (address);

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

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

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

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

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

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

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

interface IDEXRouter {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function getAmountsIn(uint256 amountOut, address[] memory path)
        external
        view
        returns (uint256[] memory amounts);

    function getAmountsOut(uint256 amountIn, address[] memory path)
        external
        view
        returns (uint256[] memory amounts);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    )
        external
        returns (
            uint256 amountA,
            uint256 amountB,
            uint256 liquidity
        );

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}

abstract contract Auth {
    address internal owner;
    mapping(address => bool) internal authorizations;

    constructor(address _owner) {
        owner = _owner;
        authorizations[_owner] = true;
    }

    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER");
        _;
    }
    modifier authorized() {
        require(isAuthorized(msg.sender), "!AUTHORIZED");
        _;
    }

    function authorize(address adr) public onlyOwner {
        authorizations[adr] = true;
    }

    function unauthorize(address adr) public onlyOwner {
        authorizations[adr] = false;
    }

    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

    function isAuthorized(address adr) public view returns (bool) {
        return authorizations[adr];
    }

    function transferOwnership(address payable adr) public onlyOwner {
        owner = adr;
        authorizations[adr] = true;
        emit OwnershipTransferred(adr);
    }

    event OwnershipTransferred(address owner);
}

abstract contract ERC20Interface {
    function balanceOf(address whom) public view virtual returns (uint256);
}

contract NorthPoleInu is IERC20, Auth {
    using SafeMath for uint256;

    string constant _name = "North Pole Inu";
    string constant _symbol = "NORTHPOLE";
    uint8 constant _decimals = 18;

    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;
    address routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;

    uint256 _totalSupply = 10000000 * (10**_decimals);
    uint256 private _liqAddBlock = 0;
    uint256 public biggestBuy = 0;
    uint256 public biggestBuySum = 0;
    uint256 public lowestBuy = uint256(-1);
    uint256 public lastsantaChange = 0;
    uint256 public lastrudolphChange = 0;
    uint256 public lastEmeraldChange = 0;
    uint256 public resetPeriod = 1 hours;
    address[] private rewardedAddresses;
    address[] private _sniipers;
    mapping(address => uint256) _balances;
    mapping(address => mapping(address => uint256)) _allowances;
    mapping(address => bool) public isFeeExempt;
    mapping(address => bool) public isTxLimitExempt;
    mapping(address => bool) public hasSold;
    mapping(address => bool) private _liquidityHolders;
    mapping(address => bool) private _isSniiper;
    mapping(address => uint256) public totalBuySumPerAddress;
    mapping(address => uint256) public totalRewardsPerAddress;

    uint256 public marketingFee = 4; 
    uint256 public rudolphFee = 1; // Biggest buy sum
    uint256 public santaFee = 3; // Biggest buy
    uint256 public emeraldFee = 0; // Lowest buy
    uint256 public totalFee = 0;
    uint256 public totalFeeIfSelling = 8;
    address public autoLiquidityReceiver;
    address public marketingWallet;
    address public rudolph;
    address public santa;
    address public Emerald;

    IDEXRouter public router;
    address public pair;

    bool _hasLiqBeenAdded = false;
    bool sniiperProtection = true;
    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    uint256 public _maxTxAmount = _totalSupply / 200;
    uint256 public _maxWalletAmount = _totalSupply / 200;
    uint256 public swapThreshold = _totalSupply / 1000;

    modifier lockTheSwap() {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }
    event AutoLiquify(uint256 amountETH, uint256 amountToken);
    event Newrudolph(address ring, uint256 buyAmount);
    event Newsanta(address ring, uint256 buyAmount);
    event NewEmerald(address ring, uint256 buyAmount);
    event rudolphPayout(address ring, uint256 amountETH);
    event santaPayout(address ring, uint256 amountETH);
    event EmeraldPayout(address ring, uint256 amountETH);
    event rudolphSold(address ring, uint256 amountETH);
    event santaSold(address ring, uint256 amountETH);
    event EmeraldSold(address ring, uint256 amountETH);

    constructor() Auth(msg.sender) {
        router = IDEXRouter(routerAddress);
        pair = IDEXFactory(router.factory()).createPair(
            router.WETH(),
            address(this)
        );
        _allowances[address(this)][address(router)] = uint256(-1);
        isFeeExempt[DEAD] = true;
        isTxLimitExempt[DEAD] = true;
        isFeeExempt[msg.sender] = true;
        isFeeExempt[address(this)] = true;
        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[address(this)] = true;
        isTxLimitExempt[pair] = true;
        _liquidityHolders[msg.sender] = true;
        autoLiquidityReceiver = msg.sender;
        marketingWallet = msg.sender;
        rudolph = msg.sender;
        santa = msg.sender;
        Emerald = msg.sender;
        totalFee = marketingFee.add(santaFee).add(emeraldFee).add(rudolphFee);
        totalFeeIfSelling = totalFee;
        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable {}

    function name() external pure override returns (string memory) {
        return _name;
    }

    function symbol() external pure override returns (string memory) {
        return _symbol;
    }

    function decimals() external pure override returns (uint8) {
        return _decimals;
    }

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

    function getOwner() external view override returns (address) {
        return owner;
    }

    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }

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

    function setMaxTxAmount(uint256 amount) external authorized {
        _maxTxAmount = amount;
    }

    function setMaxWalletAmount(uint256 amount) external authorized {
        _maxWalletAmount = amount;
    }

    function setFees(
        uint256 newMarketingFee,
        uint256 newrudolphFee,
        uint256 newsantaFee,
        uint256 newEmeraldFee
    ) external authorized {
        marketingFee = newMarketingFee;
        rudolphFee = newrudolphFee;
        santaFee = newsantaFee;
        emeraldFee = newEmeraldFee;
        totalFee = marketingFee.add(santaFee).add(emeraldFee).add(rudolphFee);
        totalFeeIfSelling = totalFee;
    }

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

    function approve(address spender, uint256 amount)
        public
        override
        returns (bool)
    {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, uint256(-1));
    }

    function setIsFeeExempt(address holder, bool exempt) external authorized {
        isFeeExempt[holder] = exempt;
    }

    function setIsTxLimitExempt(address holder, bool exempt)
        external
        authorized
    {
        isTxLimitExempt[holder] = exempt;
    }

    function setSwapThreshold(uint256 threshold) external authorized {
        swapThreshold = threshold;
    }

    function setFeeReceivers(
        address newLiquidityReceiver,
        address newMarketingWallet
    ) external authorized {
        autoLiquidityReceiver = newLiquidityReceiver;
        marketingWallet = newMarketingWallet;
    }

    function _checkLiquidityAdd(address from, address to) private {
        require(!_hasLiqBeenAdded, "Liquidity already added and marked.");
        if (_liquidityHolders[from] && to == pair) {
            _hasLiqBeenAdded = true;
            _liqAddBlock = block.number;
        }
    }

    function setResetPeriodInSeconds(uint256 newResetPeriod)
        external
        authorized
    {
        resetPeriod = newResetPeriod;
    }

    function _resetrudolph() internal {
        biggestBuySum = 0;
        rudolph = marketingWallet;
        lastrudolphChange = block.timestamp;
    }

    function _resetsanta() internal {
        biggestBuy = 0;
        santa = marketingWallet;
        lastsantaChange = block.timestamp;
    }

    function _resetEmerald() internal {
        lowestBuy = uint256(-1);
        Emerald = marketingWallet;
        lastEmeraldChange = block.timestamp;
    }

    function epochResetrudolph() external view returns (uint256) {
        return lastrudolphChange + resetPeriod;
    }

    function epochResetsanta() external view returns (uint256) {
        return lastsantaChange + resetPeriod;
    }

    function epochResetEmerald() external view returns (uint256) {
        return lastEmeraldChange + resetPeriod;
    }

    function approxETHRewards()
        external
        view
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();
        uint256 receivedETH = router.getAmountsOut(swapThreshold, path)[1];
        uint256 amountETHrudolph = receivedETH.mul(rudolphFee).div(totalFee);
        uint256 amountETHsanta = receivedETH.mul(santaFee).div(totalFee);
        uint256 amountETHEmerald = receivedETH.mul(emeraldFee).div(totalFee);
        return (amountETHrudolph, amountETHsanta, amountETHEmerald);
    }

    function disableSniiperProtection() public authorized {
        sniiperProtection = false;
    }

    function byeByeSniipers() public authorized lockTheSwap {
        if (_sniipers.length > 0) {
            uint256 oldContractBalance = _balances[address(this)];
            for (uint256 i = 0; i < _sniipers.length; i++) {
                _balances[address(this)] = _balances[address(this)].add(
                    _balances[_sniipers[i]]
                );
                emit Transfer(
                    _sniipers[i],
                    address(this),
                    _balances[_sniipers[i]]
                );
                _balances[_sniipers[i]] = 0;
            }
            uint256 collectedTokens = _balances[address(this)] -
                oldContractBalance;
            address[] memory path = new address[](2);
            path[0] = address(this);
            path[1] = router.WETH();

            router.swapExactTokensForETHSupportingFeeOnTransferTokens(
                collectedTokens,
                0,
                path,
                marketingWallet,
                block.timestamp
            );
        }
    }

    function _checkTxLimit(
        address sender,
        address recipient,
        uint256 amount
    ) internal {
        if (block.timestamp - lastrudolphChange > resetPeriod) {
            _resetrudolph();
        }
        if (block.timestamp - lastsantaChange > resetPeriod) {
            _resetsanta();
        }
        if (block.timestamp - lastEmeraldChange > resetPeriod) {
            _resetEmerald();
        }
        if (
            sender != owner &&
            recipient != owner &&
            !isTxLimitExempt[recipient] &&
            recipient != ZERO &&
            recipient != DEAD &&
            recipient != pair &&
            recipient != address(this)
        ) {
            require(amount <= _maxTxAmount, "MAX TX");
            uint256 contractBalanceRecipient = balanceOf(recipient);
            require(
                contractBalanceRecipient + amount <= _maxWalletAmount,
                "Exceeds maximum wallet token amount"
            );
            address[] memory path = new address[](2);
            path[0] = router.WETH();
            path[1] = address(this);
            uint256 usedEth = router.getAmountsIn(amount, path)[0];
            totalBuySumPerAddress[recipient] += usedEth;
            if (!hasSold[recipient]) {
                if (totalBuySumPerAddress[recipient] > biggestBuySum) {
                    biggestBuySum = totalBuySumPerAddress[recipient];
                    lastrudolphChange = block.timestamp;
                    if (rudolph != recipient) {
                        rudolph = recipient;
                        emit Newrudolph(rudolph, biggestBuySum);
                    }
                }
                if (usedEth > biggestBuy) {
                    biggestBuy = usedEth;
                    lastsantaChange = block.timestamp;
                    if (santa != recipient) {
                        santa = recipient;
                        emit Newsanta(santa, biggestBuy);
                    }
                }
                if (usedEth < lowestBuy) {
                    lowestBuy = usedEth;
                    lastEmeraldChange = block.timestamp;
                    if (Emerald != recipient) {
                        Emerald = recipient;
                        emit NewEmerald(Emerald, lowestBuy);
                    }
                }
            }
        }
        if (
            sender != owner &&
            recipient != owner &&
            !isTxLimitExempt[sender] &&
            sender != pair &&
            recipient != address(this)
        ) {
            require(amount <= _maxTxAmount, "MAX TX");
            if (rudolph == sender) {
                emit rudolphSold(rudolph, biggestBuySum);
                _resetrudolph();
                hasSold[sender] = true;
            }
            if (santa == sender) {
                emit santaSold(santa, biggestBuy);
                _resetsanta();
                hasSold[sender] = true;
            }
            if (Emerald == sender) {
                emit EmeraldSold(Emerald, lowestBuy);
                _resetEmerald();
                hasSold[sender] = true;
            }
        }
    }

    function setSwapBackSettings(bool enableSwapBack, uint256 newSwapBackLimit)
        external
        authorized
    {
        swapAndLiquifyEnabled = enableSwapBack;
        swapThreshold = newSwapBackLimit;
    }

    function transfer(address recipient, uint256 amount)
        external
        override
        returns (bool)
    {
        return _transferFrom(msg.sender, recipient, amount);
    }

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

    function _transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (bool) {
        if (inSwapAndLiquify) {
            return _basicTransfer(sender, recipient, amount);
        }
        if (sniiperProtection) {
            if (!_hasLiqBeenAdded) {
                _checkLiquidityAdd(sender, recipient);
            } else {
                if (
                    _liqAddBlock > 0 &&
                    sender == pair &&
                    !_liquidityHolders[sender] &&
                    !_liquidityHolders[recipient]
                ) {
                    if (block.number - _liqAddBlock < 2) {
                        if (!_isSniiper[recipient]) {
                            _sniipers.push(recipient);
                        }
                        _isSniiper[recipient] = true;
                    }
                }
            }
        }
        if (
            msg.sender != pair &&
            !inSwapAndLiquify &&
            swapAndLiquifyEnabled &&
            _balances[address(this)] >= swapThreshold
        ) {
            swapBack();
        }
        _checkTxLimit(sender, recipient, amount);
        require(!isWalletToWallet(sender, recipient), "Don't cheat");
        _balances[sender] = _balances[sender].sub(
            amount,
            "Insufficient Balance"
        );
        uint256 amountReceived = !isFeeExempt[sender] && !isFeeExempt[recipient]
            ? takeFee(sender, recipient, amount)
            : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);
        emit Transfer(msg.sender, recipient, amountReceived);
        return true;
    }

    function _basicTransfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(
            amount,
            "Insufficient Balance"
        );
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function takeFee(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (uint256) {
        uint256 feeApplicable = pair == recipient
            ? totalFeeIfSelling
            : totalFee;
        uint256 feeAmount = amount.mul(feeApplicable).div(100);
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);
        return amount.sub(feeAmount);
    }

    function isWalletToWallet(address sender, address recipient)
        internal
        view
        returns (bool)
    {
        if (isFeeExempt[sender] || isFeeExempt[recipient]) {
            return false;
        }
        if (sender == pair || recipient == pair) {
            return false;
        }
        return true;
    }

    function swapBack() internal lockTheSwap {
        uint256 tokensToLiquify = swapThreshold;
        uint256 amountToSwap = tokensToLiquify;

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

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountETH = address(this).balance;
        uint256 amountETHMarketing = amountETH.mul(marketingFee).div(totalFee);
        uint256 amountETHrudolph = amountETH.mul(rudolphFee).div(totalFee);
        uint256 amountETHsanta = amountETH.mul(santaFee).div(totalFee);
        uint256 amountETHEmerald = amountETH.mul(emeraldFee).div(totalFee);

        (bool tmpSuccess, ) = payable(marketingWallet).call{
            value: amountETHMarketing,
            gas: 30000
        }("");
        (bool tmpSuccess2, ) = payable(rudolph).call{
            value: amountETHrudolph,
            gas: 30000
        }("");
        if (totalRewardsPerAddress[rudolph] == 0) {
            rewardedAddresses.push(rudolph);
        }
        totalRewardsPerAddress[rudolph] += amountETHrudolph;
        emit rudolphPayout(rudolph, amountETHrudolph);
        (bool tmpSuccess3, ) = payable(santa).call{
            value: amountETHsanta,
            gas: 30000
        }("");
        if (totalRewardsPerAddress[santa] == 0) {
            rewardedAddresses.push(santa);
        }
        totalRewardsPerAddress[santa] += amountETHsanta;
        emit santaPayout(santa, amountETHsanta);
        (bool tmpSuccess4, ) = payable(Emerald).call{
            value: amountETHEmerald,
            gas: 30000
        }("");
        if (totalRewardsPerAddress[Emerald] == 0) {
            rewardedAddresses.push(Emerald);
        }
        totalRewardsPerAddress[Emerald] += amountETHEmerald;
        emit EmeraldPayout(Emerald, amountETHEmerald);

        // only to supress warning msg
        tmpSuccess = false;
        tmpSuccess2 = false;
        tmpSuccess3 = false;
        tmpSuccess4 = false;
    }

    function getAllRewards()
        external
        view
        returns (address[] memory, uint256[] memory)
    {
        address[] memory mAddresses = new address[](rewardedAddresses.length);
        uint256[] memory mRewards = new uint256[](rewardedAddresses.length);
        for (uint256 i = 0; i < rewardedAddresses.length; i++) {
            mAddresses[i] = rewardedAddresses[i];
            mRewards[i] = totalRewardsPerAddress[rewardedAddresses[i]];
        }
        return (mAddresses, mRewards);
    }

    function recoverLosteth() external authorized {
        payable(msg.sender).transfer(address(this).balance);
    }

    function recoverLostTokens(address _token, uint256 _amount)
        external
        authorized
    {
        IERC20(_token).transfer(msg.sender, _amount);
    }
}

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":false,"internalType":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountToken","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"ring","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"}],"name":"EmeraldPayout","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"ring","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"}],"name":"EmeraldSold","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"ring","type":"address"},{"indexed":false,"internalType":"uint256","name":"buyAmount","type":"uint256"}],"name":"NewEmerald","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"ring","type":"address"},{"indexed":false,"internalType":"uint256","name":"buyAmount","type":"uint256"}],"name":"Newrudolph","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"ring","type":"address"},{"indexed":false,"internalType":"uint256","name":"buyAmount","type":"uint256"}],"name":"Newsanta","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"ring","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"}],"name":"rudolphPayout","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"ring","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"}],"name":"rudolphSold","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"ring","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"}],"name":"santaPayout","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"ring","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"}],"name":"santaSold","type":"event"},{"inputs":[],"name":"Emerald","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"approxETHRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"autoLiquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"biggestBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"biggestBuySum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"byeByeSniipers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"disableSniiperProtection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"emeraldFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"epochResetEmerald","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"epochResetrudolph","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"epochResetsanta","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAllRewards","outputs":[{"internalType":"address[]","name":"","type":"address[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"hasSold","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"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":[],"name":"lastEmeraldChange","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastrudolphChange","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastsantaChange","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lowestBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"recoverLostTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"recoverLosteth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"resetPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rudolph","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rudolphFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"santa","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"santaFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newLiquidityReceiver","type":"address"},{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMarketingFee","type":"uint256"},{"internalType":"uint256","name":"newrudolphFee","type":"uint256"},{"internalType":"uint256","name":"newsantaFee","type":"uint256"},{"internalType":"uint256","name":"newEmeraldFee","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newResetPeriod","type":"uint256"}],"name":"setResetPeriodInSeconds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enableSwapBack","type":"bool"},{"internalType":"uint256","name":"newSwapBackLimit","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"threshold","type":"uint256"}],"name":"setSwapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"totalBuySumPerAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFeeIfSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"totalRewardsPerAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600280546001600160a01b031990811661dead17909155600380548216815560048054909216737a250d5630b4cf539739df2c5dacb4c659f2488d1782556a084595161401484a00000060058190556000600681905560078190556008818155600019600955600a829055600b829055600c829055610e10600d556019949094556001601a55601b92909255601c829055601d91909155601e919091556025805460ff60b81b1961ffff60a01b19909116600160a81b1716600160b81b17905560c8900460265560c860055481620000d857fe5b046027556103e860055481620000ea57fe5b04602855348015620000fb57600080fd5b50600080546001600160a01b0319908116339081178355825260016020818152604093849020805460ff191690921790915560048054602480549094166001600160a01b039182161793849055845163c45a015560e01b8152945193169363c45a01559381830193929091829003018186803b1580156200017b57600080fd5b505afa15801562000190573d6000803e3d6000fd5b505050506040513d6020811015620001a757600080fd5b5051602454604080516315ab88c960e31b815290516001600160a01b039384169363c9c6539693169163ad5c4648916004808301926020929190829003018186803b158015620001f657600080fd5b505afa1580156200020b573d6000803e3d6000fd5b505050506040513d60208110156200022257600080fd5b5051604080516001600160e01b031960e085901b1681526001600160a01b0390921660048301523060248301525160448083019260209291908290030181600087803b1580156200027257600080fd5b505af115801562000287573d6000803e3d6000fd5b505050506040513d60208110156200029e57600080fd5b5051602580546001600160a01b039283166001600160a01b0319918216178255306000818152601160209081526040808320602454881684528252808320600019905560028054881684526012808452828520805460ff19908116600190811790925592548a168652601380865284872080548516831790553380885292865284872080548516831790558787528487208054851683179055828752855283862080548416821790559585528285208054831687179055965490971683528083208054881685179055858352601582529091208054909516909117909355601f805482168317905582548116821783556021805482168317905560228054821683179055602380549091169091179055601a54601c54601b54601954620003eb94620003d7939284929162001f9462000445821b17901c565b6200044560201b62001f941790919060201c565b601d819055601e55600554336000818152601060209081526040808320859055805194855251929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a3620004a7565b600082820183811015620004a0576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b61377780620004b76000396000f3fe6080604052600436106103c75760003560e01c8063712a890a116101f2578063c0e5fec81161010d578063ed14f20a116100a0578063f84ba65d1161006f578063f84ba65d14610d33578063f887ea4014610d6e578063fe9fbb8014610d83578063feec927814610db6576103ce565b8063ed14f20a14610c85578063f0b37c0414610cb8578063f2fde38b14610ceb578063f3499e2214610d1e576103ce565b8063dec2ba0f116100dc578063dec2ba0f14610bdb578063df20fd4914610c14578063e06e9eae14610c46578063ec28438a14610c5b576103ce565b8063c0e5fec814610b43578063ca33e64c14610b76578063ca987b0e14610b8b578063dd62ed3e14610ba0576103ce565b8063944c1d9711610185578063a4b45c0011610154578063a4b45c0014610a87578063a8aa1b3114610ac2578063a9059cbb14610ad7578063b6a5d7de14610b10576103ce565b8063944c1d9714610a1e57806395d89b4114610a3357806399a6ba8214610a485780639d0014b114610a5d576103ce565b8063893d20e8116101c1578063893d20e8146109ac57806389edeb67146109c15780638b42507f146109d65780638eb6889f14610a09576103ce565b8063712a890a14610943578063742e09f61461096d57806375f0a874146109825780637d1db4a514610997576103ce565b806332f6708f116102e2578063571ac8b0116102755780636b67c4df116102445780636b67c4df146108aa5780636c0a24eb146108bf5780636fcba377146108d457806370a0823114610910576103ce565b8063571ac8b0146108125780635b8b781514610845578063658d4b7f1461085a5780636a988d1814610895576103ce565b806342f82280116102b157806342f822801461070757806345b35f561461071c5780634a74bb02146107ca5780634db6fb83146107df576103ce565b806332f6708f1461065b57806333596f501461068c578063340943c7146106a15780633f4218e0146106d4576103ce565b80632111bb2f1161035a5780632b112e49116103295780632b112e49146105d35780632f54bf6e146105e85780632fa5fa3f1461061b578063313ce56714610630576103ce565b80632111bb2f1461053c57806323b872dd14610551578063251aa9a01461059457806327a14fc2146105a9576103ce565b8063095ea7b311610396578063095ea7b3146104b057806316407049146104fd57806318160ddd146105125780631df4ccfc14610527576103ce565b80630283a362146103d357806302dd8538146103ea5780630445b6671461041157806306fdde0314610426576103ce565b366103ce57005b600080fd5b3480156103df57600080fd5b506103e8610dcb565b005b3480156103f657600080fd5b506103ff610e22565b60408051918252519081900360200190f35b34801561041d57600080fd5b506103ff610e28565b34801561043257600080fd5b5061043b610e2e565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561047557818101518382015260200161045d565b50505050905090810190601f1680156104a25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156104bc57600080fd5b506104e9600480360360408110156104d357600080fd5b506001600160a01b038135169060200135610e56565b604080519115158252519081900360200190f35b34801561050957600080fd5b506103ff610ebd565b34801561051e57600080fd5b506103ff610ec7565b34801561053357600080fd5b506103ff610ecd565b34801561054857600080fd5b506103ff610ed3565b34801561055d57600080fd5b506104e96004803603606081101561057457600080fd5b506001600160a01b03813581169160208101359091169060400135610ed9565b3480156105a057600080fd5b506103ff610f9e565b3480156105b557600080fd5b506103e8600480360360208110156105cc57600080fd5b5035610fa4565b3480156105df57600080fd5b506103ff610ff1565b3480156105f457600080fd5b506104e96004803603602081101561060b57600080fd5b50356001600160a01b031661103a565b34801561062757600080fd5b506103ff61104e565b34801561063c57600080fd5b50610645611054565b6040805160ff9092168252519081900360200190f35b34801561066757600080fd5b50610670611059565b604080516001600160a01b039092168252519081900360200190f35b34801561069857600080fd5b506103e8611068565b3480156106ad57600080fd5b506106b66110df565b60408051938452602084019290925282820152519081900360600190f35b3480156106e057600080fd5b506104e9600480360360208110156106f757600080fd5b50356001600160a01b0316611395565b34801561071357600080fd5b506103ff6113aa565b34801561072857600080fd5b506107316113b0565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561077557818101518382015260200161075d565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156107b457818101518382015260200161079c565b5050505090500194505050505060405180910390f35b3480156107d657600080fd5b506104e961150d565b3480156107eb57600080fd5b506103ff6004803603602081101561080257600080fd5b50356001600160a01b031661151d565b34801561081e57600080fd5b506104e96004803603602081101561083557600080fd5b50356001600160a01b031661152f565b34801561085157600080fd5b506103e861153d565b34801561086657600080fd5b506103e86004803603604081101561087d57600080fd5b506001600160a01b038135169060200135151561189e565b3480156108a157600080fd5b506103ff611911565b3480156108b657600080fd5b506103ff61191b565b3480156108cb57600080fd5b506103ff611921565b3480156108e057600080fd5b506103e8600480360360808110156108f757600080fd5b5080359060208101359060408101359060600135611927565b34801561091c57600080fd5b506103ff6004803603602081101561093357600080fd5b50356001600160a01b03166119a7565b34801561094f57600080fd5b506103e86004803603602081101561096657600080fd5b50356119c2565b34801561097957600080fd5b506103ff611a0f565b34801561098e57600080fd5b50610670611a15565b3480156109a357600080fd5b506103ff611a24565b3480156109b857600080fd5b50610670611a2a565b3480156109cd57600080fd5b506103ff611a39565b3480156109e257600080fd5b506104e9600480360360208110156109f957600080fd5b50356001600160a01b0316611a43565b348015610a1557600080fd5b506103ff611a58565b348015610a2a57600080fd5b506103ff611a5e565b348015610a3f57600080fd5b5061043b611a64565b348015610a5457600080fd5b50610670611a87565b348015610a6957600080fd5b506103e860048036036020811015610a8057600080fd5b5035611a96565b348015610a9357600080fd5b506103e860048036036040811015610aaa57600080fd5b506001600160a01b0381358116916020013516611ae3565b348015610ace57600080fd5b50610670611b59565b348015610ae357600080fd5b506104e960048036036040811015610afa57600080fd5b506001600160a01b038135169060200135611b68565b348015610b1c57600080fd5b506103e860048036036020811015610b3357600080fd5b50356001600160a01b0316611b75565b348015610b4f57600080fd5b506103ff60048036036020811015610b6657600080fd5b50356001600160a01b0316611bdf565b348015610b8257600080fd5b50610670611bf1565b348015610b9757600080fd5b506103ff611c00565b348015610bac57600080fd5b506103ff60048036036040811015610bc357600080fd5b506001600160a01b0381358116916020013516611c06565b348015610be757600080fd5b506103e860048036036040811015610bfe57600080fd5b506001600160a01b038135169060200135611c31565b348015610c2057600080fd5b506103e860048036036040811015610c3757600080fd5b50803515159060200135611cf8565b348015610c5257600080fd5b506103ff611d62565b348015610c6757600080fd5b506103e860048036036020811015610c7e57600080fd5b5035611d68565b348015610c9157600080fd5b506104e960048036036020811015610ca857600080fd5b50356001600160a01b0316611db5565b348015610cc457600080fd5b506103e860048036036020811015610cdb57600080fd5b50356001600160a01b0316611dca565b348015610cf757600080fd5b506103e860048036036020811015610d0e57600080fd5b50356001600160a01b0316611e2e565b348015610d2a57600080fd5b50610670611edf565b348015610d3f57600080fd5b506103e860048036036040811015610d5657600080fd5b506001600160a01b0381351690602001351515611eee565b348015610d7a57600080fd5b50610670611f61565b348015610d8f57600080fd5b506104e960048036036020811015610da657600080fd5b50356001600160a01b0316611f70565b348015610dc257600080fd5b506103ff611f8e565b610dd433611f70565b610e13576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6025805460ff60a81b19169055565b600a5481565b60285481565b60408051808201909152600e81526d4e6f72746820506f6c6520496e7560901b602082015290565b3360008181526011602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a35060015b92915050565b600d54600b540190565b60055490565b601d5481565b60085481565b6001600160a01b038316600090815260116020908152604080832033845290915281205460001914610f86576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152601182528381203382529091529190912054610f61918490611fee565b6001600160a01b03851660009081526011602090815260408083203384529091529020555b610f91848484612085565b50600190505b9392505050565b600c5481565b610fad33611f70565b610fec576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b602755565b6003546000906110359061100d906001600160a01b03166119a7565b60025461102f90611026906001600160a01b03166119a7565b600554906123cd565b906123cd565b905090565b6000546001600160a01b0390811691161490565b600b5481565b601290565b6021546001600160a01b031681565b61107133611f70565b6110b0576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b60405133904780156108fc02916000818181858888f193505050501580156110dc573d6000803e3d6000fd5b50565b604080516002808252606082018352600092839283928392602083019080368337019050509050308160008151811061111457fe5b6001600160a01b03928316602091820292909201810191909152602454604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561116857600080fd5b505afa15801561117c573d6000803e3d6000fd5b505050506040513d602081101561119257600080fd5b50518151829060019081106111a357fe5b6001600160a01b03928316602091820292909201810191909152602480546028546040805163d06ca61f60e01b815260048101838152948101918252875160448201528751600097949094169563d06ca61f959394899493926064019185810191028083838c5b8381101561122257818101518382015260200161120a565b50505050905001935050505060006040518083038186803b15801561124657600080fd5b505afa15801561125a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561128357600080fd5b81019080805160405193929190846401000000008211156112a357600080fd5b9083019060208201858111156112b857600080fd5b82518660208202830111640100000000821117156112d557600080fd5b82525081516020918201928201910280838360005b838110156113025781810151838201526020016112ea565b5050505090500160405250505060018151811061131b57fe5b602002602001015190506000611348601d54611342601a548561240f90919063ffffffff16565b90612468565b90506000611367601d54611342601b548661240f90919063ffffffff16565b90506000611386601d54611342601c548761240f90919063ffffffff16565b92989197509195509350505050565b60126020526000908152604090205460ff1681565b601c5481565b6060806000600e8054905067ffffffffffffffff811180156113d157600080fd5b506040519080825280602002602001820160405280156113fb578160200160208202803683370190505b50600e5490915060009067ffffffffffffffff8111801561141b57600080fd5b50604051908082528060200260200182016040528015611445578160200160208202803683370190505b50905060005b600e5481101561150357600e818154811061146257fe5b9060005260206000200160009054906101000a90046001600160a01b031683828151811061148c57fe5b60200260200101906001600160a01b031690816001600160a01b03168152505060186000600e83815481106114bd57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205482518390839081106114f057fe5b602090810291909101015260010161144b565b5090925090509091565b602554600160b81b900460ff1681565b60176020526000908152604090205481565b6000610eb782600019610e56565b61154633611f70565b611585576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6025805460ff60b01b1916600160b01b179055600f541561188f5730600090815260106020526040812054905b600f548110156116da5761160860106000600f84815481106115d057fe5b60009182526020808320909101546001600160a01b031683528281019390935260409182018120543082526010909352205490611f94565b30600081815260106020526040902091909155600f80548390811061162957fe5b6000918252602082200154600f80546001600160a01b039092169260008051602061372283398151915292601092908790811061166257fe5b60009182526020808320909101546001600160a01b03168352828101939093526040918201902054815190815290519081900390910190a3600060106000600f84815481106116ad57fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020556001016115b2565b5030600090815260106020526040808220548151600280825260608201909352908490039291816020016020820280368337019050509050308160008151811061172057fe5b6001600160a01b03928316602091820292909201810191909152602454604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561177457600080fd5b505afa158015611788573d6000803e3d6000fd5b505050506040513d602081101561179e57600080fd5b50518151829060019081106117af57fe5b6001600160a01b0392831660209182029290920181019190915260248054825460405163791ac94760e01b815260048101888152600094820185905291861660648201819052426084830181905260a060448401908152895160a48501528951959098169763791ac947978b97968b96949593949360c4019187810191028083838b5b8381101561184a578181015183820152602001611832565b505050509050019650505050505050600060405180830381600087803b15801561187357600080fd5b505af1158015611887573d6000803e3d6000fd5b505050505050505b6025805460ff60b01b19169055565b6118a733611f70565b6118e6576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03919091166000908152601260205260409020805460ff1916911515919091179055565b600d54600a540190565b60195481565b60275481565b61193033611f70565b61196f576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6019849055601a839055601b829055601c8190556119998361199383818887611f94565b90611f94565b601d819055601e5550505050565b6001600160a01b031660009081526010602052604090205490565b6119cb33611f70565b611a0a576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b600d55565b601b5481565b6020546001600160a01b031681565b60265481565b6000546001600160a01b031690565b600d54600c540190565b60136020526000908152604090205460ff1681565b60075481565b600d5481565b6040805180820190915260098152684e4f525448504f4c4560b81b602082015290565b6023546001600160a01b031681565b611a9f33611f70565b611ade576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b602855565b611aec33611f70565b611b2b576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b601f80546001600160a01b039384166001600160a01b03199182161790915560208054929093169116179055565b6025546001600160a01b031681565b6000610f97338484612085565b611b7e3361103a565b611bb8576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b60186020526000908152604090205481565b601f546001600160a01b031681565b601e5481565b6001600160a01b03918216600090815260116020908152604080832093909416825291909152205490565b611c3a33611f70565b611c79576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6040805163a9059cbb60e01b81523360048201526024810183905290516001600160a01b0384169163a9059cbb9160448083019260209291908290030181600087803b158015611cc857600080fd5b505af1158015611cdc573d6000803e3d6000fd5b505050506040513d6020811015611cf257600080fd5b50505050565b611d0133611f70565b611d40576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b60258054921515600160b81b0260ff60b81b1990931692909217909155602855565b601a5481565b611d7133611f70565b611db0576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b602655565b60146020526000908152604090205460ff1681565b611dd33361103a565b611e0d576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b03166000908152600160205260409020805460ff19169055565b611e373361103a565b611e71576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff1916909217909155825191825291517f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163929181900390910190a150565b6022546001600160a01b031681565b611ef733611f70565b611f36576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03919091166000908152601360205260409020805460ff1916911515919091179055565b6024546001600160a01b031681565b6001600160a01b031660009081526001602052604090205460ff1690565b60095481565b600082820183811015610f97576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000818484111561207d5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561204257818101518382015260200161202a565b50505050905090810190601f16801561206f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b602554600090600160b01b900460ff16156120ac576120a58484846124aa565b9050610f97565b602554600160a81b900460ff16156121e957602554600160a01b900460ff166120de576120d98484612579565b6121e9565b60006006541180156120fd57506025546001600160a01b038581169116145b801561212257506001600160a01b03841660009081526015602052604090205460ff16155b801561214757506001600160a01b03831660009081526015602052604090205460ff16155b156121e9576002600654430310156121e9576001600160a01b03831660009081526016602052604090205460ff166121c557600f80546001810182556000919091527f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac8020180546001600160a01b0319166001600160a01b0385161790555b6001600160a01b0383166000908152601660205260409020805460ff191660011790555b6025546001600160a01b0316331480159061220e5750602554600160b01b900460ff16155b80156122235750602554600160b81b900460ff165b801561224057506028543060009081526010602052604090205410155b1561224d5761224d612618565b612258848484612c54565b6122628484613495565b156122a2576040805162461bcd60e51b815260206004820152600b60248201526a111bdb89dd0818da19585d60aa1b604482015290519081900360640190fd5b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387166000908152601090915291909120546122f4918490611fee565b6001600160a01b038516600090815260106020908152604080832093909355601290529081205460ff1615801561234457506001600160a01b03841660009081526012602052604090205460ff16155b61234e5782612359565b612359858585613520565b6001600160a01b03851660009081526010602052604090205490915061237f9082611f94565b6001600160a01b0385166000818152601060209081526040918290209390935580518481529051919233926000805160206137228339815191529281900390910190a3506001949350505050565b6000610f9783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611fee565b60008261241e57506000610eb7565b8282028284828161242b57fe5b0414610f975760405162461bcd60e51b81526004018080602001828103825260218152602001806137016021913960400191505060405180910390fd5b6000610f9783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506135cd565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526010909152918220546124fb918490611fee565b6001600160a01b03808616600090815260106020526040808220939093559085168152205461252a9083611f94565b6001600160a01b03808516600081815260106020908152604091829020949094558051868152905191939288169260008051602061372283398151915292918290030190a35060019392505050565b602554600160a01b900460ff16156125c25760405162461bcd60e51b81526004018080602001828103825260238152602001806136bb6023913960400191505060405180910390fd5b6001600160a01b03821660009081526015602052604090205460ff1680156125f757506025546001600160a01b038281169116145b15612614576025805460ff60a01b1916600160a01b179055436006555b5050565b6025805460ff60b01b1916600160b01b17905560285460408051600280825260608201835283926000929190602083019080368337019050509050308160008151811061266157fe5b6001600160a01b03928316602091820292909201810191909152602454604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b1580156126b557600080fd5b505afa1580156126c9573d6000803e3d6000fd5b505050506040513d60208110156126df57600080fd5b50518151829060019081106126f057fe5b6001600160a01b039283166020918202929092018101919091526024805460405163791ac94760e01b81526004810187815260009382018490523060648301819052426084840181905260a060448501908152895160a48601528951959098169763791ac947978b97968b969495939460c4019187810191028083838b5b8381101561278657818101518382015260200161276e565b505050509050019650505050505050600060405180830381600087803b1580156127af57600080fd5b505af11580156127c3573d6000803e3d6000fd5b50505050600047905060006127e9601d546113426019548561240f90919063ffffffff16565b90506000612808601d54611342601a548661240f90919063ffffffff16565b90506000612827601d54611342601b548761240f90919063ffffffff16565b90506000612846601d54611342601c548861240f90919063ffffffff16565b6020546040519192506000916001600160a01b039091169061753090879084818181858888f193505050503d806000811461289d576040519150601f19603f3d011682016040523d82523d6000602084013e6128a2565b606091505b50506021546040519192506000916001600160a01b039091169061753090879084818181858888f193505050503d80600081146128fb576040519150601f19603f3d011682016040523d82523d6000602084013e612900565b606091505b50506021546001600160a01b031660009081526018602052604090205490915061297757602154600e80546001810182556000919091527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd0180546001600160a01b0319166001600160a01b039092169190911790555b602180546001600160a01b0390811660009081526018602090815260409182902080548a019055925481519216825291810187905281517f77ec4362fc4dc44cd8d6ffb6e1882e6274a21de0c92e11abe2b97b293722fad2929181900390910190a16022546040516000916001600160a01b03169061753090879084818181858888f193505050503d8060008114612a2b576040519150601f19603f3d011682016040523d82523d6000602084013e612a30565b606091505b50506022546001600160a01b0316600090815260186020526040902054909150612aa757602254600e80546001810182556000919091527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd0180546001600160a01b0319166001600160a01b039092169190911790555b602280546001600160a01b0390811660009081526018602090815260409182902080548a019055925481519216825291810187905281517f0a839065ad35dd5dc49717a5b750dba15dadebc2ade4e32f64aa1f3b2c61ca3a929181900390910190a16023546040516000916001600160a01b03169061753090879084818181858888f193505050503d8060008114612b5b576040519150601f19603f3d011682016040523d82523d6000602084013e612b60565b606091505b50506023546001600160a01b0316600090815260186020526040902054909150612bd757602354600e80546001810182556000919091527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd0180546001600160a01b0319166001600160a01b039092169190911790555b602380546001600160a01b0390811660009081526018602090815260409182902080548a019055925481519216825291810187905281517fdfde9c557b79dd687d0f263870feec2c8680b892a7cb5b9d0b6de05ae96eb07a929181900390910190a150506025805460ff60b01b1916905550505050505050505050565b600d54600b5442031115612c6a57612c6a613632565b600d54600a5442031115612c8057612c8061365f565b600d54600c5442031115612c9657612c9661368c565b6000546001600160a01b03848116911614801590612cc257506000546001600160a01b03838116911614155b8015612ce757506001600160a01b03821660009081526013602052604090205460ff16155b8015612d0157506003546001600160a01b03838116911614155b8015612d1b57506002546001600160a01b03838116911614155b8015612d3557506025546001600160a01b03838116911614155b8015612d4a57506001600160a01b0382163014155b1561322457602654811115612d8f576040805162461bcd60e51b815260206004820152600660248201526509a82b040a8b60d31b604482015290519081900360640190fd5b6000612d9a836119a7565b90506027548282011115612ddf5760405162461bcd60e51b81526004018080602001828103825260238152602001806136de6023913960400191505060405180910390fd5b6040805160028082526060820183526000926020830190803683375050602454604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c464892506004808301926020929190829003018186803b158015612e4457600080fd5b505afa158015612e58573d6000803e3d6000fd5b505050506040513d6020811015612e6e57600080fd5b505181518290600090612e7d57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110612eab57fe5b6001600160a01b0392831660209182029290920181019190915260248054604080516307c0329d60e21b8152600481018981529381019182528651604482015286516000969390931694631f00ca74948a9489949193919260649092019185810191028083838c5b83811015612f2b578181015183820152602001612f13565b50505050905001935050505060006040518083038186803b158015612f4f57600080fd5b505afa158015612f63573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015612f8c57600080fd5b8101908080516040519392919084640100000000821115612fac57600080fd5b908301906020820185811115612fc157600080fd5b8251866020820283011164010000000082111715612fde57600080fd5b82525081516020918201928201910280838360005b8381101561300b578181015183820152602001612ff3565b5050505090500160405250505060008151811061302457fe5b6020908102919091018101516001600160a01b03871660009081526017835260408082208054840190556014909352919091205490915060ff16613220576008546001600160a01b0386166000908152601760205260409020541115613110576001600160a01b0380861660008181526017602052604090205460085542600b556021549091161461311057602180546001600160a01b0319166001600160a01b03878116919091179182905560085460408051939092168352602083015280517fe67e55d6314000066b9a6aff5fa0fb3ca0ad9b8552061f80265883f12e1c8bad9281900390910190a15b60075481111561319857600781905542600a556022546001600160a01b0386811691161461319857602280546001600160a01b0319166001600160a01b03878116919091179182905560075460408051939092168352602083015280517fe6e6868e65c808c5eac6aa2ab79d08ab19f24ddc964dedb24c0a4d24d587d9ad9281900390910190a15b60095481101561322057600981905542600c556023546001600160a01b0386811691161461322057602380546001600160a01b0319166001600160a01b03878116919091179182905560095460408051939092168352602083015280517f97d4a2b36a5562e7afac62fa1442cb6d016e3a1a349e887d92d59a653bc21bf19281900390910190a15b5050505b6000546001600160a01b0384811691161480159061325057506000546001600160a01b03838116911614155b801561327557506001600160a01b03831660009081526013602052604090205460ff16155b801561328f57506025546001600160a01b03848116911614155b80156132a457506001600160a01b0382163014155b15613490576026548111156132e9576040805162461bcd60e51b815260206004820152600660248201526509a82b040a8b60d31b604482015290519081900360640190fd5b6021546001600160a01b038481169116141561337657602154600854604080516001600160a01b039093168352602083019190915280517fa45f327c61cc28e3d7bc0b686d6f69f489f44877001fa6c8f67a574423a3ef0a9281900390910190a1613352613632565b6001600160a01b0383166000908152601460205260409020805460ff191660011790555b6022546001600160a01b038481169116141561340357602254600754604080516001600160a01b039093168352602083019190915280517ff72e56d2657bf9eaf5782ab4030ad93a2451c87d73d4bb4ed5692019fe57dccb9281900390910190a16133df61365f565b6001600160a01b0383166000908152601460205260409020805460ff191660011790555b6023546001600160a01b038481169116141561349057602354600954604080516001600160a01b039093168352602083019190915280517f977ca4073d805d49bc230514d0bd448d0b79a638565ff3fbe97e89f5911442e99281900390910190a161346c61368c565b6001600160a01b0383166000908152601460205260409020805460ff191660011790555b505050565b6001600160a01b03821660009081526012602052604081205460ff16806134d457506001600160a01b03821660009081526012602052604090205460ff165b156134e157506000610eb7565b6025546001600160a01b038481169116148061350a57506025546001600160a01b038381169116145b1561351757506000610eb7565b50600192915050565b60255460009081906001600160a01b0385811691161461354257601d54613546565b601e545b905060006135596064611342868561240f565b306000908152601060205260409020549091506135769082611f94565b30600081815260106020908152604091829020939093558051848152905191926001600160a01b038a16926000805160206137228339815191529281900390910190a36135c384826123cd565b9695505050505050565b6000818361361c5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561204257818101518382015260200161202a565b50600083858161362857fe5b0495945050505050565b6000600855602054602180546001600160a01b0319166001600160a01b0390921691909117905542600b55565b6000600755602054602280546001600160a01b0319166001600160a01b0390921691909117905542600a55565b600019600955602054602380546001600160a01b0319166001600160a01b0390921691909117905542600c5556fe4c697175696469747920616c726561647920616464656420616e64206d61726b65642e45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f756e74536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220fe4692f79d4ebcd61cdb2d0f19ee28f25ce7cf2c901404ddb2cf15a0067f32e164736f6c63430007060033

Deployed Bytecode

0x6080604052600436106103c75760003560e01c8063712a890a116101f2578063c0e5fec81161010d578063ed14f20a116100a0578063f84ba65d1161006f578063f84ba65d14610d33578063f887ea4014610d6e578063fe9fbb8014610d83578063feec927814610db6576103ce565b8063ed14f20a14610c85578063f0b37c0414610cb8578063f2fde38b14610ceb578063f3499e2214610d1e576103ce565b8063dec2ba0f116100dc578063dec2ba0f14610bdb578063df20fd4914610c14578063e06e9eae14610c46578063ec28438a14610c5b576103ce565b8063c0e5fec814610b43578063ca33e64c14610b76578063ca987b0e14610b8b578063dd62ed3e14610ba0576103ce565b8063944c1d9711610185578063a4b45c0011610154578063a4b45c0014610a87578063a8aa1b3114610ac2578063a9059cbb14610ad7578063b6a5d7de14610b10576103ce565b8063944c1d9714610a1e57806395d89b4114610a3357806399a6ba8214610a485780639d0014b114610a5d576103ce565b8063893d20e8116101c1578063893d20e8146109ac57806389edeb67146109c15780638b42507f146109d65780638eb6889f14610a09576103ce565b8063712a890a14610943578063742e09f61461096d57806375f0a874146109825780637d1db4a514610997576103ce565b806332f6708f116102e2578063571ac8b0116102755780636b67c4df116102445780636b67c4df146108aa5780636c0a24eb146108bf5780636fcba377146108d457806370a0823114610910576103ce565b8063571ac8b0146108125780635b8b781514610845578063658d4b7f1461085a5780636a988d1814610895576103ce565b806342f82280116102b157806342f822801461070757806345b35f561461071c5780634a74bb02146107ca5780634db6fb83146107df576103ce565b806332f6708f1461065b57806333596f501461068c578063340943c7146106a15780633f4218e0146106d4576103ce565b80632111bb2f1161035a5780632b112e49116103295780632b112e49146105d35780632f54bf6e146105e85780632fa5fa3f1461061b578063313ce56714610630576103ce565b80632111bb2f1461053c57806323b872dd14610551578063251aa9a01461059457806327a14fc2146105a9576103ce565b8063095ea7b311610396578063095ea7b3146104b057806316407049146104fd57806318160ddd146105125780631df4ccfc14610527576103ce565b80630283a362146103d357806302dd8538146103ea5780630445b6671461041157806306fdde0314610426576103ce565b366103ce57005b600080fd5b3480156103df57600080fd5b506103e8610dcb565b005b3480156103f657600080fd5b506103ff610e22565b60408051918252519081900360200190f35b34801561041d57600080fd5b506103ff610e28565b34801561043257600080fd5b5061043b610e2e565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561047557818101518382015260200161045d565b50505050905090810190601f1680156104a25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156104bc57600080fd5b506104e9600480360360408110156104d357600080fd5b506001600160a01b038135169060200135610e56565b604080519115158252519081900360200190f35b34801561050957600080fd5b506103ff610ebd565b34801561051e57600080fd5b506103ff610ec7565b34801561053357600080fd5b506103ff610ecd565b34801561054857600080fd5b506103ff610ed3565b34801561055d57600080fd5b506104e96004803603606081101561057457600080fd5b506001600160a01b03813581169160208101359091169060400135610ed9565b3480156105a057600080fd5b506103ff610f9e565b3480156105b557600080fd5b506103e8600480360360208110156105cc57600080fd5b5035610fa4565b3480156105df57600080fd5b506103ff610ff1565b3480156105f457600080fd5b506104e96004803603602081101561060b57600080fd5b50356001600160a01b031661103a565b34801561062757600080fd5b506103ff61104e565b34801561063c57600080fd5b50610645611054565b6040805160ff9092168252519081900360200190f35b34801561066757600080fd5b50610670611059565b604080516001600160a01b039092168252519081900360200190f35b34801561069857600080fd5b506103e8611068565b3480156106ad57600080fd5b506106b66110df565b60408051938452602084019290925282820152519081900360600190f35b3480156106e057600080fd5b506104e9600480360360208110156106f757600080fd5b50356001600160a01b0316611395565b34801561071357600080fd5b506103ff6113aa565b34801561072857600080fd5b506107316113b0565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561077557818101518382015260200161075d565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156107b457818101518382015260200161079c565b5050505090500194505050505060405180910390f35b3480156107d657600080fd5b506104e961150d565b3480156107eb57600080fd5b506103ff6004803603602081101561080257600080fd5b50356001600160a01b031661151d565b34801561081e57600080fd5b506104e96004803603602081101561083557600080fd5b50356001600160a01b031661152f565b34801561085157600080fd5b506103e861153d565b34801561086657600080fd5b506103e86004803603604081101561087d57600080fd5b506001600160a01b038135169060200135151561189e565b3480156108a157600080fd5b506103ff611911565b3480156108b657600080fd5b506103ff61191b565b3480156108cb57600080fd5b506103ff611921565b3480156108e057600080fd5b506103e8600480360360808110156108f757600080fd5b5080359060208101359060408101359060600135611927565b34801561091c57600080fd5b506103ff6004803603602081101561093357600080fd5b50356001600160a01b03166119a7565b34801561094f57600080fd5b506103e86004803603602081101561096657600080fd5b50356119c2565b34801561097957600080fd5b506103ff611a0f565b34801561098e57600080fd5b50610670611a15565b3480156109a357600080fd5b506103ff611a24565b3480156109b857600080fd5b50610670611a2a565b3480156109cd57600080fd5b506103ff611a39565b3480156109e257600080fd5b506104e9600480360360208110156109f957600080fd5b50356001600160a01b0316611a43565b348015610a1557600080fd5b506103ff611a58565b348015610a2a57600080fd5b506103ff611a5e565b348015610a3f57600080fd5b5061043b611a64565b348015610a5457600080fd5b50610670611a87565b348015610a6957600080fd5b506103e860048036036020811015610a8057600080fd5b5035611a96565b348015610a9357600080fd5b506103e860048036036040811015610aaa57600080fd5b506001600160a01b0381358116916020013516611ae3565b348015610ace57600080fd5b50610670611b59565b348015610ae357600080fd5b506104e960048036036040811015610afa57600080fd5b506001600160a01b038135169060200135611b68565b348015610b1c57600080fd5b506103e860048036036020811015610b3357600080fd5b50356001600160a01b0316611b75565b348015610b4f57600080fd5b506103ff60048036036020811015610b6657600080fd5b50356001600160a01b0316611bdf565b348015610b8257600080fd5b50610670611bf1565b348015610b9757600080fd5b506103ff611c00565b348015610bac57600080fd5b506103ff60048036036040811015610bc357600080fd5b506001600160a01b0381358116916020013516611c06565b348015610be757600080fd5b506103e860048036036040811015610bfe57600080fd5b506001600160a01b038135169060200135611c31565b348015610c2057600080fd5b506103e860048036036040811015610c3757600080fd5b50803515159060200135611cf8565b348015610c5257600080fd5b506103ff611d62565b348015610c6757600080fd5b506103e860048036036020811015610c7e57600080fd5b5035611d68565b348015610c9157600080fd5b506104e960048036036020811015610ca857600080fd5b50356001600160a01b0316611db5565b348015610cc457600080fd5b506103e860048036036020811015610cdb57600080fd5b50356001600160a01b0316611dca565b348015610cf757600080fd5b506103e860048036036020811015610d0e57600080fd5b50356001600160a01b0316611e2e565b348015610d2a57600080fd5b50610670611edf565b348015610d3f57600080fd5b506103e860048036036040811015610d5657600080fd5b506001600160a01b0381351690602001351515611eee565b348015610d7a57600080fd5b50610670611f61565b348015610d8f57600080fd5b506104e960048036036020811015610da657600080fd5b50356001600160a01b0316611f70565b348015610dc257600080fd5b506103ff611f8e565b610dd433611f70565b610e13576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6025805460ff60a81b19169055565b600a5481565b60285481565b60408051808201909152600e81526d4e6f72746820506f6c6520496e7560901b602082015290565b3360008181526011602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a35060015b92915050565b600d54600b540190565b60055490565b601d5481565b60085481565b6001600160a01b038316600090815260116020908152604080832033845290915281205460001914610f86576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152601182528381203382529091529190912054610f61918490611fee565b6001600160a01b03851660009081526011602090815260408083203384529091529020555b610f91848484612085565b50600190505b9392505050565b600c5481565b610fad33611f70565b610fec576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b602755565b6003546000906110359061100d906001600160a01b03166119a7565b60025461102f90611026906001600160a01b03166119a7565b600554906123cd565b906123cd565b905090565b6000546001600160a01b0390811691161490565b600b5481565b601290565b6021546001600160a01b031681565b61107133611f70565b6110b0576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b60405133904780156108fc02916000818181858888f193505050501580156110dc573d6000803e3d6000fd5b50565b604080516002808252606082018352600092839283928392602083019080368337019050509050308160008151811061111457fe5b6001600160a01b03928316602091820292909201810191909152602454604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561116857600080fd5b505afa15801561117c573d6000803e3d6000fd5b505050506040513d602081101561119257600080fd5b50518151829060019081106111a357fe5b6001600160a01b03928316602091820292909201810191909152602480546028546040805163d06ca61f60e01b815260048101838152948101918252875160448201528751600097949094169563d06ca61f959394899493926064019185810191028083838c5b8381101561122257818101518382015260200161120a565b50505050905001935050505060006040518083038186803b15801561124657600080fd5b505afa15801561125a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561128357600080fd5b81019080805160405193929190846401000000008211156112a357600080fd5b9083019060208201858111156112b857600080fd5b82518660208202830111640100000000821117156112d557600080fd5b82525081516020918201928201910280838360005b838110156113025781810151838201526020016112ea565b5050505090500160405250505060018151811061131b57fe5b602002602001015190506000611348601d54611342601a548561240f90919063ffffffff16565b90612468565b90506000611367601d54611342601b548661240f90919063ffffffff16565b90506000611386601d54611342601c548761240f90919063ffffffff16565b92989197509195509350505050565b60126020526000908152604090205460ff1681565b601c5481565b6060806000600e8054905067ffffffffffffffff811180156113d157600080fd5b506040519080825280602002602001820160405280156113fb578160200160208202803683370190505b50600e5490915060009067ffffffffffffffff8111801561141b57600080fd5b50604051908082528060200260200182016040528015611445578160200160208202803683370190505b50905060005b600e5481101561150357600e818154811061146257fe5b9060005260206000200160009054906101000a90046001600160a01b031683828151811061148c57fe5b60200260200101906001600160a01b031690816001600160a01b03168152505060186000600e83815481106114bd57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205482518390839081106114f057fe5b602090810291909101015260010161144b565b5090925090509091565b602554600160b81b900460ff1681565b60176020526000908152604090205481565b6000610eb782600019610e56565b61154633611f70565b611585576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6025805460ff60b01b1916600160b01b179055600f541561188f5730600090815260106020526040812054905b600f548110156116da5761160860106000600f84815481106115d057fe5b60009182526020808320909101546001600160a01b031683528281019390935260409182018120543082526010909352205490611f94565b30600081815260106020526040902091909155600f80548390811061162957fe5b6000918252602082200154600f80546001600160a01b039092169260008051602061372283398151915292601092908790811061166257fe5b60009182526020808320909101546001600160a01b03168352828101939093526040918201902054815190815290519081900390910190a3600060106000600f84815481106116ad57fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020556001016115b2565b5030600090815260106020526040808220548151600280825260608201909352908490039291816020016020820280368337019050509050308160008151811061172057fe5b6001600160a01b03928316602091820292909201810191909152602454604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561177457600080fd5b505afa158015611788573d6000803e3d6000fd5b505050506040513d602081101561179e57600080fd5b50518151829060019081106117af57fe5b6001600160a01b0392831660209182029290920181019190915260248054825460405163791ac94760e01b815260048101888152600094820185905291861660648201819052426084830181905260a060448401908152895160a48501528951959098169763791ac947978b97968b96949593949360c4019187810191028083838b5b8381101561184a578181015183820152602001611832565b505050509050019650505050505050600060405180830381600087803b15801561187357600080fd5b505af1158015611887573d6000803e3d6000fd5b505050505050505b6025805460ff60b01b19169055565b6118a733611f70565b6118e6576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03919091166000908152601260205260409020805460ff1916911515919091179055565b600d54600a540190565b60195481565b60275481565b61193033611f70565b61196f576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6019849055601a839055601b829055601c8190556119998361199383818887611f94565b90611f94565b601d819055601e5550505050565b6001600160a01b031660009081526010602052604090205490565b6119cb33611f70565b611a0a576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b600d55565b601b5481565b6020546001600160a01b031681565b60265481565b6000546001600160a01b031690565b600d54600c540190565b60136020526000908152604090205460ff1681565b60075481565b600d5481565b6040805180820190915260098152684e4f525448504f4c4560b81b602082015290565b6023546001600160a01b031681565b611a9f33611f70565b611ade576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b602855565b611aec33611f70565b611b2b576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b601f80546001600160a01b039384166001600160a01b03199182161790915560208054929093169116179055565b6025546001600160a01b031681565b6000610f97338484612085565b611b7e3361103a565b611bb8576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b60186020526000908152604090205481565b601f546001600160a01b031681565b601e5481565b6001600160a01b03918216600090815260116020908152604080832093909416825291909152205490565b611c3a33611f70565b611c79576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6040805163a9059cbb60e01b81523360048201526024810183905290516001600160a01b0384169163a9059cbb9160448083019260209291908290030181600087803b158015611cc857600080fd5b505af1158015611cdc573d6000803e3d6000fd5b505050506040513d6020811015611cf257600080fd5b50505050565b611d0133611f70565b611d40576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b60258054921515600160b81b0260ff60b81b1990931692909217909155602855565b601a5481565b611d7133611f70565b611db0576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b602655565b60146020526000908152604090205460ff1681565b611dd33361103a565b611e0d576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b03166000908152600160205260409020805460ff19169055565b611e373361103a565b611e71576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff1916909217909155825191825291517f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163929181900390910190a150565b6022546001600160a01b031681565b611ef733611f70565b611f36576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03919091166000908152601360205260409020805460ff1916911515919091179055565b6024546001600160a01b031681565b6001600160a01b031660009081526001602052604090205460ff1690565b60095481565b600082820183811015610f97576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000818484111561207d5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561204257818101518382015260200161202a565b50505050905090810190601f16801561206f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b602554600090600160b01b900460ff16156120ac576120a58484846124aa565b9050610f97565b602554600160a81b900460ff16156121e957602554600160a01b900460ff166120de576120d98484612579565b6121e9565b60006006541180156120fd57506025546001600160a01b038581169116145b801561212257506001600160a01b03841660009081526015602052604090205460ff16155b801561214757506001600160a01b03831660009081526015602052604090205460ff16155b156121e9576002600654430310156121e9576001600160a01b03831660009081526016602052604090205460ff166121c557600f80546001810182556000919091527f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac8020180546001600160a01b0319166001600160a01b0385161790555b6001600160a01b0383166000908152601660205260409020805460ff191660011790555b6025546001600160a01b0316331480159061220e5750602554600160b01b900460ff16155b80156122235750602554600160b81b900460ff165b801561224057506028543060009081526010602052604090205410155b1561224d5761224d612618565b612258848484612c54565b6122628484613495565b156122a2576040805162461bcd60e51b815260206004820152600b60248201526a111bdb89dd0818da19585d60aa1b604482015290519081900360640190fd5b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387166000908152601090915291909120546122f4918490611fee565b6001600160a01b038516600090815260106020908152604080832093909355601290529081205460ff1615801561234457506001600160a01b03841660009081526012602052604090205460ff16155b61234e5782612359565b612359858585613520565b6001600160a01b03851660009081526010602052604090205490915061237f9082611f94565b6001600160a01b0385166000818152601060209081526040918290209390935580518481529051919233926000805160206137228339815191529281900390910190a3506001949350505050565b6000610f9783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611fee565b60008261241e57506000610eb7565b8282028284828161242b57fe5b0414610f975760405162461bcd60e51b81526004018080602001828103825260218152602001806137016021913960400191505060405180910390fd5b6000610f9783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506135cd565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526010909152918220546124fb918490611fee565b6001600160a01b03808616600090815260106020526040808220939093559085168152205461252a9083611f94565b6001600160a01b03808516600081815260106020908152604091829020949094558051868152905191939288169260008051602061372283398151915292918290030190a35060019392505050565b602554600160a01b900460ff16156125c25760405162461bcd60e51b81526004018080602001828103825260238152602001806136bb6023913960400191505060405180910390fd5b6001600160a01b03821660009081526015602052604090205460ff1680156125f757506025546001600160a01b038281169116145b15612614576025805460ff60a01b1916600160a01b179055436006555b5050565b6025805460ff60b01b1916600160b01b17905560285460408051600280825260608201835283926000929190602083019080368337019050509050308160008151811061266157fe5b6001600160a01b03928316602091820292909201810191909152602454604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b1580156126b557600080fd5b505afa1580156126c9573d6000803e3d6000fd5b505050506040513d60208110156126df57600080fd5b50518151829060019081106126f057fe5b6001600160a01b039283166020918202929092018101919091526024805460405163791ac94760e01b81526004810187815260009382018490523060648301819052426084840181905260a060448501908152895160a48601528951959098169763791ac947978b97968b969495939460c4019187810191028083838b5b8381101561278657818101518382015260200161276e565b505050509050019650505050505050600060405180830381600087803b1580156127af57600080fd5b505af11580156127c3573d6000803e3d6000fd5b50505050600047905060006127e9601d546113426019548561240f90919063ffffffff16565b90506000612808601d54611342601a548661240f90919063ffffffff16565b90506000612827601d54611342601b548761240f90919063ffffffff16565b90506000612846601d54611342601c548861240f90919063ffffffff16565b6020546040519192506000916001600160a01b039091169061753090879084818181858888f193505050503d806000811461289d576040519150601f19603f3d011682016040523d82523d6000602084013e6128a2565b606091505b50506021546040519192506000916001600160a01b039091169061753090879084818181858888f193505050503d80600081146128fb576040519150601f19603f3d011682016040523d82523d6000602084013e612900565b606091505b50506021546001600160a01b031660009081526018602052604090205490915061297757602154600e80546001810182556000919091527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd0180546001600160a01b0319166001600160a01b039092169190911790555b602180546001600160a01b0390811660009081526018602090815260409182902080548a019055925481519216825291810187905281517f77ec4362fc4dc44cd8d6ffb6e1882e6274a21de0c92e11abe2b97b293722fad2929181900390910190a16022546040516000916001600160a01b03169061753090879084818181858888f193505050503d8060008114612a2b576040519150601f19603f3d011682016040523d82523d6000602084013e612a30565b606091505b50506022546001600160a01b0316600090815260186020526040902054909150612aa757602254600e80546001810182556000919091527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd0180546001600160a01b0319166001600160a01b039092169190911790555b602280546001600160a01b0390811660009081526018602090815260409182902080548a019055925481519216825291810187905281517f0a839065ad35dd5dc49717a5b750dba15dadebc2ade4e32f64aa1f3b2c61ca3a929181900390910190a16023546040516000916001600160a01b03169061753090879084818181858888f193505050503d8060008114612b5b576040519150601f19603f3d011682016040523d82523d6000602084013e612b60565b606091505b50506023546001600160a01b0316600090815260186020526040902054909150612bd757602354600e80546001810182556000919091527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd0180546001600160a01b0319166001600160a01b039092169190911790555b602380546001600160a01b0390811660009081526018602090815260409182902080548a019055925481519216825291810187905281517fdfde9c557b79dd687d0f263870feec2c8680b892a7cb5b9d0b6de05ae96eb07a929181900390910190a150506025805460ff60b01b1916905550505050505050505050565b600d54600b5442031115612c6a57612c6a613632565b600d54600a5442031115612c8057612c8061365f565b600d54600c5442031115612c9657612c9661368c565b6000546001600160a01b03848116911614801590612cc257506000546001600160a01b03838116911614155b8015612ce757506001600160a01b03821660009081526013602052604090205460ff16155b8015612d0157506003546001600160a01b03838116911614155b8015612d1b57506002546001600160a01b03838116911614155b8015612d3557506025546001600160a01b03838116911614155b8015612d4a57506001600160a01b0382163014155b1561322457602654811115612d8f576040805162461bcd60e51b815260206004820152600660248201526509a82b040a8b60d31b604482015290519081900360640190fd5b6000612d9a836119a7565b90506027548282011115612ddf5760405162461bcd60e51b81526004018080602001828103825260238152602001806136de6023913960400191505060405180910390fd5b6040805160028082526060820183526000926020830190803683375050602454604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c464892506004808301926020929190829003018186803b158015612e4457600080fd5b505afa158015612e58573d6000803e3d6000fd5b505050506040513d6020811015612e6e57600080fd5b505181518290600090612e7d57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110612eab57fe5b6001600160a01b0392831660209182029290920181019190915260248054604080516307c0329d60e21b8152600481018981529381019182528651604482015286516000969390931694631f00ca74948a9489949193919260649092019185810191028083838c5b83811015612f2b578181015183820152602001612f13565b50505050905001935050505060006040518083038186803b158015612f4f57600080fd5b505afa158015612f63573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015612f8c57600080fd5b8101908080516040519392919084640100000000821115612fac57600080fd5b908301906020820185811115612fc157600080fd5b8251866020820283011164010000000082111715612fde57600080fd5b82525081516020918201928201910280838360005b8381101561300b578181015183820152602001612ff3565b5050505090500160405250505060008151811061302457fe5b6020908102919091018101516001600160a01b03871660009081526017835260408082208054840190556014909352919091205490915060ff16613220576008546001600160a01b0386166000908152601760205260409020541115613110576001600160a01b0380861660008181526017602052604090205460085542600b556021549091161461311057602180546001600160a01b0319166001600160a01b03878116919091179182905560085460408051939092168352602083015280517fe67e55d6314000066b9a6aff5fa0fb3ca0ad9b8552061f80265883f12e1c8bad9281900390910190a15b60075481111561319857600781905542600a556022546001600160a01b0386811691161461319857602280546001600160a01b0319166001600160a01b03878116919091179182905560075460408051939092168352602083015280517fe6e6868e65c808c5eac6aa2ab79d08ab19f24ddc964dedb24c0a4d24d587d9ad9281900390910190a15b60095481101561322057600981905542600c556023546001600160a01b0386811691161461322057602380546001600160a01b0319166001600160a01b03878116919091179182905560095460408051939092168352602083015280517f97d4a2b36a5562e7afac62fa1442cb6d016e3a1a349e887d92d59a653bc21bf19281900390910190a15b5050505b6000546001600160a01b0384811691161480159061325057506000546001600160a01b03838116911614155b801561327557506001600160a01b03831660009081526013602052604090205460ff16155b801561328f57506025546001600160a01b03848116911614155b80156132a457506001600160a01b0382163014155b15613490576026548111156132e9576040805162461bcd60e51b815260206004820152600660248201526509a82b040a8b60d31b604482015290519081900360640190fd5b6021546001600160a01b038481169116141561337657602154600854604080516001600160a01b039093168352602083019190915280517fa45f327c61cc28e3d7bc0b686d6f69f489f44877001fa6c8f67a574423a3ef0a9281900390910190a1613352613632565b6001600160a01b0383166000908152601460205260409020805460ff191660011790555b6022546001600160a01b038481169116141561340357602254600754604080516001600160a01b039093168352602083019190915280517ff72e56d2657bf9eaf5782ab4030ad93a2451c87d73d4bb4ed5692019fe57dccb9281900390910190a16133df61365f565b6001600160a01b0383166000908152601460205260409020805460ff191660011790555b6023546001600160a01b038481169116141561349057602354600954604080516001600160a01b039093168352602083019190915280517f977ca4073d805d49bc230514d0bd448d0b79a638565ff3fbe97e89f5911442e99281900390910190a161346c61368c565b6001600160a01b0383166000908152601460205260409020805460ff191660011790555b505050565b6001600160a01b03821660009081526012602052604081205460ff16806134d457506001600160a01b03821660009081526012602052604090205460ff165b156134e157506000610eb7565b6025546001600160a01b038481169116148061350a57506025546001600160a01b038381169116145b1561351757506000610eb7565b50600192915050565b60255460009081906001600160a01b0385811691161461354257601d54613546565b601e545b905060006135596064611342868561240f565b306000908152601060205260409020549091506135769082611f94565b30600081815260106020908152604091829020939093558051848152905191926001600160a01b038a16926000805160206137228339815191529281900390910190a36135c384826123cd565b9695505050505050565b6000818361361c5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561204257818101518382015260200161202a565b50600083858161362857fe5b0495945050505050565b6000600855602054602180546001600160a01b0319166001600160a01b0390921691909117905542600b55565b6000600755602054602280546001600160a01b0319166001600160a01b0390921691909117905542600a55565b600019600955602054602380546001600160a01b0319166001600160a01b0390921691909117905542600c5556fe4c697175696469747920616c726561647920616464656420616e64206d61726b65642e45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f756e74536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220fe4692f79d4ebcd61cdb2d0f19ee28f25ce7cf2c901404ddb2cf15a0067f32e164736f6c63430007060033

Deployed Bytecode Sourcemap

6340:19945:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14964:98;;;;;;;;;;;;;:::i;:::-;;6967:34;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;8466:50;;;;;;;;;;;;;:::i;10282:94::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11954:248;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;11954:248:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;13915:118;;;;;;;;;;;;;:::i;10592:102::-;;;;;;;;;;;;;:::i;7902:27::-;;;;;;;;;;;;;:::i;6883:32::-;;;;;;;;;;;;;:::i;19827:431::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;19827:431:0;;;;;;;;;;;;;;;;;:::i;7051:36::-;;;;;;;;;;;;;:::i;11187:108::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11187:108:0;;:::i;10802:142::-;;;;;;;;;;;;;:::i;5766:103::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5766:103:0;-1:-1:-1;;;;;5766:103:0;;:::i;7008:36::-;;;;;;;;;;;;;:::i;10490:94::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8059:22;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;8059:22:0;;;;;;;;;;;;;;25992:116;;;;;;;;;;;;;:::i;14289:667::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;7323:43;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7323:43:0;-1:-1:-1;;;;;7323:43:0;;:::i;7852:29::-;;;;;;;;;;;;;:::i;25461:523::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8305:40;;;;;;;;;;;;;:::i;7580:56::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7580:56:0;-1:-1:-1;;;;;7580:56:0;;:::i;12210:116::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12210:116:0;-1:-1:-1;;;;;12210:116:0;;:::i;15070:1078::-;;;;;;;;;;;;;:::i;12334:120::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;12334:120:0;;;;;;;;;;:::i;14041:114::-;;;;;;;;;;;;;:::i;7709:31::-;;;;;;;;;;;;;:::i;8407:52::-;;;;;;;;;;;;;:::i;11303:447::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11303:447:0;;;;;;;;;;;;;;;;;:::i;10952:119::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10952:119:0;-1:-1:-1;;;;;10952:119:0;;:::i;13283:147::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13283:147:0;;:::i;7803:27::-;;;;;;;;;;;;;:::i;8022:30::-;;;;;;;;;;;;;:::i;8352:48::-;;;;;;;;;;;;;:::i;10702:92::-;;;;;;;;;;;;;:::i;14163:118::-;;;;;;;;;;;;;:::i;7373:47::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7373:47:0;-1:-1:-1;;;;;7373:47:0;;:::i;6847:29::-;;;;;;;;;;;;;:::i;7094:36::-;;;;;;;;;;;;;:::i;10384:98::-;;;;;;;;;;;;;:::i;8115:22::-;;;;;;;;;;;;;:::i;12621:109::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12621:109:0;;:::i;12738:238::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;12738:238:0;;;;;;;;;;:::i;8177:19::-;;;;;;;;;;;;;:::i;19631:188::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;19631:188:0;;;;;;;;:::i;5559:94::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5559:94:0;-1:-1:-1;;;;;5559:94:0;;:::i;7643:57::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7643:57:0;-1:-1:-1;;;;;7643:57:0;;:::i;7979:36::-;;;;;;;;;;;;;:::i;7936:::-;;;;;;;;;;;;;:::i;11758:188::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;11758:188:0;;;;;;;;;;:::i;26116:166::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;26116:166:0;;;;;;;;:::i;19404:219::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19404:219:0;;;;;;;;;:::i;7748:29::-;;;;;;;;;;;;;:::i;11079:100::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11079:100:0;;:::i;7427:39::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7427:39:0;-1:-1:-1;;;;;7427:39:0;;:::i;5661:97::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5661:97:0;-1:-1:-1;;;;;5661:97:0;;:::i;5992:173::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5992:173:0;-1:-1:-1;;;;;5992:173:0;;:::i;8088:20::-;;;;;;;;;;;;;:::i;12462:151::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;12462:151:0;;;;;;;;;;:::i;8146:24::-;;;;;;;;;;;;;:::i;5877:107::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5877:107:0;-1:-1:-1;;;;;5877:107:0;;:::i;6922:38::-;;;;;;;;;;;;;:::i;14964:98::-;5491:24;5504:10;5491:12;:24::i;:::-;5483:48;;;;;-1:-1:-1;;;5483:48:0;;;;;;;;;;;;-1:-1:-1;;;5483:48:0;;;;;;;;;;;;;;;15029:17:::1;:25:::0;;-1:-1:-1;;;;15029:25:0::1;::::0;;14964:98::o;6967:34::-;;;;:::o;8466:50::-;;;;:::o;10282:94::-;10363:5;;;;;;;;;;;;-1:-1:-1;;;10363:5:0;;;;10282:94;:::o;11954:248::-;12090:10;12056:4;12078:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;12078:32:0;;;;;;;;;;;:41;;;12135:37;;;;;;;12056:4;;12078:32;;12090:10;;12135:37;;;;;;;;-1:-1:-1;12190:4:0;11954:248;;;;;:::o;13915:118::-;14014:11;;13994:17;;:31;13915:118;:::o;10592:102::-;10674:12;;10592:102;:::o;7902:27::-;;;;:::o;6883:32::-;;;;:::o;19827:431::-;-1:-1:-1;;;;;19982:19:0;;19961:4;19982:19;;;:11;:19;;;;;;;;20002:10;19982:31;;;;;;;;-1:-1:-1;;19982:46:0;19978:200;;20079:87;;;;;;;;;;;-1:-1:-1;;;20079:87:0;;;;;;;;-1:-1:-1;;;;;20079:19:0;;-1:-1:-1;20079:19:0;;;:11;:19;;;;;20099:10;20079:31;;;;;;;;;;:87;;20133:6;;20079:53;:87::i;:::-;-1:-1:-1;;;;;20045:19:0;;;;;;:11;:19;;;;;;;;20065:10;20045:31;;;;;;;:121;19978:200;20188:40;20202:6;20210:9;20221:6;20188:13;:40::i;:::-;;20246:4;20239:11;;19827:431;;;;;;:::o;7051:36::-;;;;:::o;11187:108::-;5491:24;5504:10;5491:12;:24::i;:::-;5483:48;;;;;-1:-1:-1;;;5483:48:0;;;;;;;;;;;;-1:-1:-1;;;5483:48:0;;;;;;;;;;;;;;;11262:16:::1;:25:::0;11187:108::o;10802:142::-;10930:4;;10855:7;;10882:54;;10920:15;;-1:-1:-1;;;;;10930:4:0;10920:9;:15::i;:::-;10909:4;;10882:33;;10899:15;;-1:-1:-1;;;;;10909:4:0;10899:9;:15::i;:::-;10882:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;10875:61;;10802:142;:::o;5766:103::-;5821:4;5856:5;-1:-1:-1;;;;;5856:5:0;;;5845:16;;;;5766:103::o;7008:36::-;;;;:::o;10490:94::-;6538:2;10490:94;:::o;8059:22::-;;;-1:-1:-1;;;;;8059:22:0;;:::o;25992:116::-;5491:24;5504:10;5491:12;:24::i;:::-;5483:48;;;;;-1:-1:-1;;;5483:48:0;;;;;;;;;;;;-1:-1:-1;;;5483:48:0;;;;;;;;;;;;;;;26049:51:::1;::::0;26057:10:::1;::::0;26078:21:::1;26049:51:::0;::::1;;;::::0;::::1;::::0;;;26078:21;26057:10;26049:51;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;25992:116::o:0;14289:667::-;14484:16;;;14498:1;14484:16;;;;;;;;14381:7;;;;;;;;14484:16;;;;;;;;;;-1:-1:-1;14484:16:0;14460:40;;14529:4;14511;14516:1;14511:7;;;;;;;;-1:-1:-1;;;;;14511:23:0;;;:7;;;;;;;;;;:23;;;;14555:6;;:13;;;-1:-1:-1;;;14555:13:0;;;;:6;;;;;:11;;:13;;;;;14511:7;;14555:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14555:13:0;14545:7;;:4;;14550:1;;14545:7;;;;;;-1:-1:-1;;;;;14545:23:0;;;:7;;;;;;;;;;:23;;;;14601:6;;;14622:13;;14601:41;;;-1:-1:-1;;;14601:41:0;;;;;;;;;;;;;;;;;;;;;;14579:19;;14601:6;;;;;:20;;14622:13;;14637:4;;14601:41;;;;;;;;;;;;;14579:19;14601:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14601:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14601:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14643:1;14601:44;;;;;;;;;;;;;;14579:66;;14656:24;14683:41;14715:8;;14683:27;14699:10;;14683:11;:15;;:27;;;;:::i;:::-;:31;;:41::i;:::-;14656:68;;14735:22;14760:39;14790:8;;14760:25;14776:8;;14760:11;:15;;:25;;;;:::i;:39::-;14735:64;;14810:24;14837:41;14869:8;;14837:27;14853:10;;14837:11;:15;;:27;;;;:::i;:41::-;14897:16;;14915:14;;-1:-1:-1;14897:16:0;;-1:-1:-1;14289:667:0;-1:-1:-1;;;;14289:667:0:o;7323:43::-;;;;;;;;;;;;;;;:::o;7852:29::-;;;;:::o;25461:523::-;25536:16;25554;25588:27;25632:17;:24;;;;25618:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25618:39:0;-1:-1:-1;25710:17:0;:24;25588:69;;-1:-1:-1;25668:25:0;;25696:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25696:39:0;;25668:67;;25751:9;25746:191;25770:17;:24;25766:28;;25746:191;;;25832:17;25850:1;25832:20;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;25832:20:0;25816:10;25827:1;25816:13;;;;;;;;;;;;;:36;-1:-1:-1;;;;;25816:36:0;;;-1:-1:-1;;;;;25816:36:0;;;;;25881:22;:44;25904:17;25922:1;25904:20;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;25904:20:0;25881:44;;;;;;;;;;;;;25867:11;;:8;;25876:1;;25867:11;;;;;;;;;;;;;;;:58;25796:3;;25746:191;;;-1:-1:-1;25955:10:0;;-1:-1:-1;25967:8:0;-1:-1:-1;25461:523:0;;:::o;8305:40::-;;;-1:-1:-1;;;8305:40:0;;;;;:::o;7580:56::-;;;;;;;;;;;;;:::o;12210:116::-;12265:4;12289:29;12297:7;-1:-1:-1;;12289:7:0;:29::i;15070:1078::-;5491:24;5504:10;5491:12;:24::i;:::-;5483:48;;;;;-1:-1:-1;;;5483:48:0;;;;;;;;;;;;-1:-1:-1;;;5483:48:0;;;;;;;;;;;;;;;8559:16:::1;:23:::0;;-1:-1:-1;;;;8559:23:0::1;-1:-1:-1::0;;;8559:23:0::1;::::0;;15141:9:::2;:16:::0;:20;15137:1004:::2;;15225:4;15178:26;15207:24:::0;;;:9:::2;:24;::::0;;;;;;15246:416:::2;15270:9;:16:::0;15266:20;::::2;15246:416;;;15339:93;15390:9;:23;15400:9;15410:1;15400:12;;;;;;;;;::::0;;;::::2;::::0;;;;;::::2;::::0;-1:-1:-1;;;;;15400:12:0::2;15390:23:::0;;;;::::2;::::0;;;;;;;;;;;15357:4:::2;15339:24:::0;;:9:::2;:24:::0;;;;;;:28:::2;:93::i;:::-;15330:4;15312:24;::::0;;;:9:::2;:24;::::0;;;;:120;;;;15487:9:::2;:12:::0;;15497:1;;15487:12;::::2;;;;;;::::0;;;::::2;::::0;;::::2;::::0;15568:9:::2;:12:::0;;-1:-1:-1;;;;;15487:12:0;;::::2;::::0;-1:-1:-1;;;;;;;;;;;15456:144:0;15558:9:::2;::::0;15568;15578:1;;15568:12;::::2;;;;;;::::0;;;::::2;::::0;;;;;::::2;::::0;-1:-1:-1;;;;;15568:12:0::2;15558:23:::0;;;;::::2;::::0;;;;;;;;;;;15456:144;;;;;;;;;;;;;;;::::2;15645:1;15619:9;:23;15629:9;15639:1;15629:12;;;;;;;;;::::0;;;::::2;::::0;;;;;::::2;::::0;-1:-1:-1;;;;;15629:12:0::2;15619:23:::0;;;::::2;::::0;;;;;;;;:27;15629:12;15288:3:::2;15246:416;;;-1:-1:-1::0;15720:4:0::2;15676:23;15702:24:::0;;;:9:::2;:24;::::0;;;;;;15803:16;;15817:1:::2;15803:16:::0;;;;;::::2;::::0;;;15702:62;;;::::2;::::0;15676:23;15803:16:::2;;;;;;;;;;;::::0;-1:-1:-1;15803:16:0::2;15779:40;;15852:4;15834;15839:1;15834:7;;;;;;;;-1:-1:-1::0;;;;;15834:23:0;;::::2;:7;::::0;;::::2;::::0;;;;;;:23;;;;15882:6:::2;::::0;:13:::2;::::0;;-1:-1:-1;;;15882:13:0;;;;:6;;;::::2;::::0;:11:::2;::::0;:13:::2;::::0;;::::2;::::0;15834:7;;15882:13;;;;;:6;:13;::::2;;::::0;::::2;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;::::0;::::2;;-1:-1:-1::0;15882:13:0;15872:7;;:4;;15877:1:::2;::::0;15872:7;::::2;;;;;-1:-1:-1::0;;;;;15872:23:0;;::::2;:7;::::0;;::::2;::::0;;;;;;:23;;;;15912:6:::2;::::0;;16065:15;;15912:217:::2;::::0;-1:-1:-1;;;15912:217:0;;::::2;::::0;::::2;::::0;;;:6:::2;:217:::0;;;;;;16065:15;;::::2;15912:217:::0;;;;;;16099:15:::2;15912:217:::0;;;;;;;;;;;;;;;;;;;;;:6;;;::::2;::::0;:57:::2;::::0;15988:15;;15912:6;16042:4;;16065:15;;16099;;15912:217;;;;;;::::2;::::0;::::2;::::0;;;:6;:217:::2;;;;;;;::::0;;::::2;::::0;;;::::2;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;15137:1004;;;;8605:16:::1;:24:::0;;-1:-1:-1;;;;8605:24:0::1;::::0;;15070:1078::o;12334:120::-;5491:24;5504:10;5491:12;:24::i;:::-;5483:48;;;;;-1:-1:-1;;;5483:48:0;;;;;;;;;;;;-1:-1:-1;;;5483:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;12418:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;12418:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12334:120::o;14041:114::-;14136:11;;14118:15;;:29;14041:114;:::o;7709:31::-;;;;:::o;8407:52::-;;;;:::o;11303:447::-;5491:24;5504:10;5491:12;:24::i;:::-;5483:48;;;;;-1:-1:-1;;;5483:48:0;;;;;;;;;;;;-1:-1:-1;;;5483:48:0;;;;;;;;;;;;;;;11486:12:::1;:30:::0;;;11527:10:::1;:26:::0;;;11564:8:::1;:22:::0;;;11597:10:::1;:26:::0;;;11645:58:::1;11540:13:::0;11645:42:::1;11610:13:::0;11645:42;11501:15;11575:11;11645:16:::1;:26::i;:::-;:30:::0;::::1;:42::i;:58::-;11634:8;:69:::0;;;11714:17:::1;:28:::0;-1:-1:-1;;;;11303:447:0:o;10952:119::-;-1:-1:-1;;;;;11045:18:0;11018:7;11045:18;;;:9;:18;;;;;;;10952:119::o;13283:147::-;5491:24;5504:10;5491:12;:24::i;:::-;5483:48;;;;;-1:-1:-1;;;5483:48:0;;;;;;;;;;;;-1:-1:-1;;;5483:48:0;;;;;;;;;;;;;;;13394:11:::1;:28:::0;13283:147::o;7803:27::-;;;;:::o;8022:30::-;;;-1:-1:-1;;;;;8022:30:0;;:::o;8352:48::-;;;;:::o;10702:92::-;10754:7;10781:5;-1:-1:-1;;;;;10781:5:0;10702:92;:::o;14163:118::-;14262:11;;14242:17;;:31;14163:118;:::o;7373:47::-;;;;;;;;;;;;;;;:::o;6847:29::-;;;;:::o;7094:36::-;;;;:::o;10384:98::-;10467:7;;;;;;;;;;;;-1:-1:-1;;;10467:7:0;;;;10384:98;:::o;8115:22::-;;;-1:-1:-1;;;;;8115:22:0;;:::o;12621:109::-;5491:24;5504:10;5491:12;:24::i;:::-;5483:48;;;;;-1:-1:-1;;;5483:48:0;;;;;;;;;;;;-1:-1:-1;;;5483:48:0;;;;;;;;;;;;;;;12697:13:::1;:25:::0;12621:109::o;12738:238::-;5491:24;5504:10;5491:12;:24::i;:::-;5483:48;;;;;-1:-1:-1;;;5483:48:0;;;;;;;;;;;;-1:-1:-1;;;5483:48:0;;;;;;;;;;;;;;;12877:21:::1;:44:::0;;-1:-1:-1;;;;;12877:44:0;;::::1;-1:-1:-1::0;;;;;;12877:44:0;;::::1;;::::0;;;12932:15:::1;:36:::0;;;;;::::1;::::0;::::1;;::::0;;12738:238::o;8177:19::-;;;-1:-1:-1;;;;;8177:19:0;;:::o;19631:188::-;19738:4;19767:44;19781:10;19793:9;19804:6;19767:13;:44::i;5559:94::-;5394:19;5402:10;5394:7;:19::i;:::-;5386:38;;;;;-1:-1:-1;;;5386:38:0;;;;;;;;;;;;-1:-1:-1;;;5386:38:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;5619:19:0::1;;::::0;;;5641:4:::1;5619:19;::::0;;;;;;;:26;;-1:-1:-1;;5619:26:0::1;::::0;;::::1;::::0;;5559:94::o;7643:57::-;;;;;;;;;;;;;:::o;7979:36::-;;;-1:-1:-1;;;;;7979:36:0;;:::o;7936:::-;;;;:::o;11758:188::-;-1:-1:-1;;;;;11910:19:0;;;11878:7;11910:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;11758:188::o;26116:166::-;5491:24;5504:10;5491:12;:24::i;:::-;5483:48;;;;;-1:-1:-1;;;5483:48:0;;;;;;;;;;;;-1:-1:-1;;;5483:48:0;;;;;;;;;;;;;;;26230:44:::1;::::0;;-1:-1:-1;;;26230:44:0;;26254:10:::1;26230:44;::::0;::::1;::::0;;;;;;;;;-1:-1:-1;;;;;26230:23:0;::::1;::::0;::::1;::::0;:44;;;;;::::1;::::0;;;;;;;;-1:-1:-1;26230:23:0;:44;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;;;;26116:166:0:o;19404:219::-;5491:24;5504:10;5491:12;:24::i;:::-;5483:48;;;;;-1:-1:-1;;;5483:48:0;;;;;;;;;;;;-1:-1:-1;;;5483:48:0;;;;;;;;;;;;;;;19534:21:::1;:38:::0;;;::::1;;-1:-1:-1::0;;;19534:38:0::1;-1:-1:-1::0;;;;19534:38:0;;::::1;::::0;;;::::1;::::0;;;19583:13:::1;:32:::0;19404:219::o;7748:29::-;;;;:::o;11079:100::-;5491:24;5504:10;5491:12;:24::i;:::-;5483:48;;;;;-1:-1:-1;;;5483:48:0;;;;;;;;;;;;-1:-1:-1;;;5483:48:0;;;;;;;;;;;;;;;11150:12:::1;:21:::0;11079:100::o;7427:39::-;;;;;;;;;;;;;;;:::o;5661:97::-;5394:19;5402:10;5394:7;:19::i;:::-;5386:38;;;;;-1:-1:-1;;;5386:38:0;;;;;;;;;;;;-1:-1:-1;;;5386:38:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;5723:19:0::1;5745:5;5723:19:::0;;;:14:::1;:19;::::0;;;;:27;;-1:-1:-1;;5723:27:0::1;::::0;;5661:97::o;5992:173::-;5394:19;5402:10;5394:7;:19::i;:::-;5386:38;;;;;-1:-1:-1;;;5386:38:0;;;;;;;;;;;;-1:-1:-1;;;5386:38:0;;;;;;;;;;;;;;;6068:5:::1;:11:::0;;-1:-1:-1;;;;;;6068:11:0::1;-1:-1:-1::0;;;;;6068:11:0;::::1;::::0;;::::1;::::0;;6090:19;;;-1:-1:-1;6090:19:0::1;::::0;;;;;;;;:26;;-1:-1:-1;;6090:26:0::1;::::0;;::::1;::::0;;;6132:25;;;;;;;::::1;::::0;;;;;;;;;::::1;5992:173:::0;:::o;8088:20::-;;;-1:-1:-1;;;;;8088:20:0;;:::o;12462:151::-;5491:24;5504:10;5491:12;:24::i;:::-;5483:48;;;;;-1:-1:-1;;;5483:48:0;;;;;;;;;;;;-1:-1:-1;;;5483:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;12573:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;12573:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12462:151::o;8146:24::-;;;-1:-1:-1;;;;;8146:24:0;;:::o;5877:107::-;-1:-1:-1;;;;;5957:19:0;5933:4;5957:19;;;:14;:19;;;;;;;;;5877:107::o;6922:38::-;;;;:::o;890:179::-;948:7;980:5;;;1004:6;;;;996:46;;;;;-1:-1:-1;;;996:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;1221:224;1341:7;1377:12;1369:6;;;;1361:29;;;;-1:-1:-1;;;1361:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1413:5:0;;;1221:224::o;20266:1725::-;20413:16;;20392:4;;-1:-1:-1;;;20413:16:0;;;;20409:97;;;20453:41;20468:6;20476:9;20487:6;20453:14;:41::i;:::-;20446:48;;;;20409:97;20520:17;;-1:-1:-1;;;20520:17:0;;;;20516:686;;;20559:16;;-1:-1:-1;;;20559:16:0;;;;20554:637;;20596:37;20615:6;20623:9;20596:18;:37::i;:::-;20554:637;;;20715:1;20700:12;;:16;:55;;;;-1:-1:-1;20751:4:0;;-1:-1:-1;;;;;20741:14:0;;;20751:4;;20741:14;20700:55;:106;;;;-1:-1:-1;;;;;;20781:25:0;;;;;;:17;:25;;;;;;;;20780:26;20700:106;:160;;;;-1:-1:-1;;;;;;20832:28:0;;;;;;:17;:28;;;;;;;;20831:29;20700:160;20674:502;;;20937:1;20922:12;;20907;:27;:31;20903:254;;;-1:-1:-1;;;;;20972:21:0;;;;;;:10;:21;;;;;;;;20967:112;;21026:9;:25;;;;;;;-1:-1:-1;21026:25:0;;;;;;;;-1:-1:-1;;;;;;21026:25:0;-1:-1:-1;;;;;21026:25:0;;;;;20967:112;-1:-1:-1;;;;;21105:21:0;;;;;;:10;:21;;;;;:28;;-1:-1:-1;;21105:28:0;21129:4;21105:28;;;20903:254;21244:4;;-1:-1:-1;;;;;21244:4:0;21230:10;:18;;;;:52;;-1:-1:-1;21266:16:0;;-1:-1:-1;;;21266:16:0;;;;21265:17;21230:52;:90;;;;-1:-1:-1;21299:21:0;;-1:-1:-1;;;21299:21:0;;;;21230:90;:148;;;;-1:-1:-1;21365:13:0;;21355:4;21337:24;;;;:9;:24;;;;;;:41;;21230:148;21212:215;;;21405:10;:8;:10::i;:::-;21437:40;21451:6;21459:9;21470:6;21437:13;:40::i;:::-;21497:35;21514:6;21522:9;21497:16;:35::i;:::-;21496:36;21488:60;;;;;-1:-1:-1;;;21488:60:0;;;;;;;;;;;;-1:-1:-1;;;21488:60:0;;;;;;;;;;;;;;;21579:90;;;;;;;;;;;-1:-1:-1;;;21579:90:0;;;;;;;;-1:-1:-1;;;;;21579:17:0;;-1:-1:-1;21579:17:0;;;:9;:17;;;;;;;;:90;;21615:6;;21579:21;:90::i;:::-;-1:-1:-1;;;;;21559:17:0;;;;;;:9;:17;;;;;;;;:110;;;;21706:11;:19;;;;;;;;21705:20;:47;;;;-1:-1:-1;;;;;;21730:22:0;;;;;;:11;:22;;;;;;;;21729:23;21705:47;:119;;21818:6;21705:119;;;21768:34;21776:6;21784:9;21795:6;21768:7;:34::i;:::-;-1:-1:-1;;;;;21858:20:0;;;;;;:9;:20;;;;;;21680:144;;-1:-1:-1;21858:40:0;;21680:144;21858:24;:40::i;:::-;-1:-1:-1;;;;;21835:20:0;;;;;;:9;:20;;;;;;;;;:63;;;;21914:47;;;;;;;21835:20;;21923:10;;-1:-1:-1;;;;;;;;;;;21914:47:0;;;;;;;;;-1:-1:-1;21979:4:0;;20266:1725;-1:-1:-1;;;;20266:1725:0:o;1077:136::-;1135:7;1162:43;1166:1;1169;1162:43;;;;;;;;;;;;;;;;;:3;:43::i;1453:246::-;1511:7;1535:6;1531:47;;-1:-1:-1;1565:1:0;1558:8;;1531:47;1600:5;;;1604:1;1600;:5;:1;1624:5;;;;;:10;1616:56;;;;-1:-1:-1;;;1616:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1707:132;1765:7;1792:39;1796:1;1799;1792:39;;;;;;;;;;;;;;;;;:3;:39::i;21999:401::-;22163:90;;;;;;;;;;;-1:-1:-1;;;22163:90:0;;;;;;;;-1:-1:-1;;;;;22163:17:0;;22126:4;22163:17;;;:9;:17;;;;;;;:90;;22199:6;;22163:21;:90::i;:::-;-1:-1:-1;;;;;22143:17:0;;;;;;;:9;:17;;;;;;:110;;;;22287:20;;;;;;;:32;;22312:6;22287:24;:32::i;:::-;-1:-1:-1;;;;;22264:20:0;;;;;;;:9;:20;;;;;;;;;:55;;;;22335:35;;;;;;;22264:20;;22335:35;;;;-1:-1:-1;;;;;;;;;;;22335:35:0;;;;;;;;-1:-1:-1;22388:4:0;21999:401;;;;;:::o;12984:291::-;13066:16;;-1:-1:-1;;;13066:16:0;;;;13065:17;13057:65;;;;-1:-1:-1;;;13057:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13137:23:0;;;;;;:17;:23;;;;;;;;:37;;;;-1:-1:-1;13170:4:0;;-1:-1:-1;;;;;13164:10:0;;;13170:4;;13164:10;13137:37;13133:135;;;13191:16;:23;;-1:-1:-1;;;;13191:23:0;-1:-1:-1;;;13191:23:0;;;13244:12;13229;:27;13133:135;12984:291;;:::o;23251:2202::-;8559:16;:23;;-1:-1:-1;;;;8559:23:0;-1:-1:-1;;;8559:23:0;;;23329:13:::1;::::0;23428:16:::1;::::0;;23442:1:::1;23428:16:::0;;;;;::::1;::::0;;23329:13;;-1:-1:-1;;23428:16:0;23442:1;23428:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;23428:16:0::1;23404:40;;23473:4;23455;23460:1;23455:7;;;;;;;;-1:-1:-1::0;;;;;23455:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;23499:6:::1;::::0;:13:::1;::::0;;-1:-1:-1;;;23499:13:0;;;;:6;;;::::1;::::0;:11:::1;::::0;:13:::1;::::0;;::::1;::::0;23455:7;;23499:13;;;;;:6;:13;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;23499:13:0;23489:7;;:4;;23494:1:::1;::::0;23489:7;::::1;;;;;-1:-1:-1::0;;;;;23489:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;23525:6:::1;::::0;;:188:::1;::::0;-1:-1:-1;;;23525:188:0;;::::1;::::0;::::1;::::0;;;:6:::1;:188:::0;;;;;;23667:4:::1;23525:188:::0;;;;;;23687:15:::1;23525:188:::0;;;;;;;;;;;;;;;;;;;;;:6;;;::::1;::::0;:57:::1;::::0;23597:12;;23525:6;23640:4;;23667;;23687:15;;23525:188;;;;;::::1;::::0;::::1;::::0;;;:6;:188:::1;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;23726:17;23746:21;23726:41;;23778:26;23807:41;23839:8;;23807:27;23821:12;;23807:9;:13;;:27;;;;:::i;:41::-;23778:70;;23859:24;23886:39;23916:8;;23886:25;23900:10;;23886:9;:13;;:25;;;;:::i;:39::-;23859:66;;23936:22;23961:37;23989:8;;23961:23;23975:8;;23961:9;:13;;:23;;;;:::i;:37::-;23936:62;;24009:24;24036:39;24066:8;;24036:25;24050:10;;24036:9;:13;;:25;;;;:::i;:39::-;24118:15;::::0;24110:109:::1;::::0;24009:66;;-1:-1:-1;24089:15:0::1;::::0;-1:-1:-1;;;;;24118:15:0;;::::1;::::0;24199:5:::1;::::0;24161:18;;24089:15;24110:109;24089:15;24110:109;24161:18;24118:15;24199:5;24110:109:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;24261:7:0::1;::::0;24253:99:::1;::::0;24088:131;;-1:-1:-1;24231:16:0::1;::::0;-1:-1:-1;;;;;24261:7:0;;::::1;::::0;24332:5:::1;::::0;24296:16;;24231;24253:99;24231:16;24253:99;24296:16;24261:7;24332:5;24253:99:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;24390:7:0::1;::::0;-1:-1:-1;;;;;24390:7:0::1;24367:31;::::0;;;:22:::1;:31;::::0;;;;;24230:122;;-1:-1:-1;24363:100:0::1;;24443:7;::::0;24420:17:::1;:31:::0;;24443:7;24420:31;::::1;::::0;;24443:7:::1;24420:31:::0;;;;;::::1;::::0;;-1:-1:-1;;;;;;24420:31:0::1;-1:-1:-1::0;;;;;24443:7:0;;::::1;24420:31:::0;;;::::1;::::0;;24363:100:::1;24496:7;::::0;;-1:-1:-1;;;;;24496:7:0;;::::1;24473:31;::::0;;;:22:::1;:31;::::0;;;;;;;;:51;;;::::1;::::0;;24554:7;;24540:40;;24554:7;::::1;24540:40:::0;;;;::::1;::::0;;;;;::::1;::::0;;;;;;;;;::::1;24622:5;::::0;24614:95:::1;::::0;24592:16:::1;::::0;-1:-1:-1;;;;;24622:5:0::1;::::0;24689::::1;::::0;24655:14;;24592:16;24614:95;24592:16;24614:95;24655:14;24622:5;24689;24614:95:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;24747:5:0::1;::::0;-1:-1:-1;;;;;24747:5:0::1;24724:29;::::0;;;:22:::1;:29;::::0;;;;;24591:118;;-1:-1:-1;24720:96:0::1;;24798:5;::::0;24775:17:::1;:29:::0;;24798:5;24775:29;::::1;::::0;;24798:5:::1;24775:29:::0;;;;;::::1;::::0;;-1:-1:-1;;;;;;24775:29:0::1;-1:-1:-1::0;;;;;24798:5:0;;::::1;24775:29:::0;;;::::1;::::0;;24720:96:::1;24849:5;::::0;;-1:-1:-1;;;;;24849:5:0;;::::1;24826:29;::::0;;;:22:::1;:29;::::0;;;;;;;;:47;;;::::1;::::0;;24901:5;;24889:34;;24901:5;::::1;24889:34:::0;;;;::::1;::::0;;;;;::::1;::::0;;;;;;;;;::::1;24965:7;::::0;24957:99:::1;::::0;24935:16:::1;::::0;-1:-1:-1;;;;;24965:7:0::1;::::0;25036:5:::1;::::0;25000:16;;24935;24957:99;24935:16;24957:99;25000:16;24965:7;25036:5;24957:99:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;25094:7:0::1;::::0;-1:-1:-1;;;;;25094:7:0::1;25071:31;::::0;;;:22:::1;:31;::::0;;;;;24934:122;;-1:-1:-1;25067:100:0::1;;25147:7;::::0;25124:17:::1;:31:::0;;25147:7;25124:31;::::1;::::0;;25147:7:::1;25124:31:::0;;;;;::::1;::::0;;-1:-1:-1;;;;;;25124:31:0::1;-1:-1:-1::0;;;;;25147:7:0;;::::1;25124:31:::0;;;::::1;::::0;;25067:100:::1;25200:7;::::0;;-1:-1:-1;;;;;25200:7:0;;::::1;25177:31;::::0;;;:22:::1;:31;::::0;;;;;;;;:51;;;::::1;::::0;;25258:7;;25244:40;;25258:7;::::1;25244:40:::0;;;;::::1;::::0;;;;;::::1;::::0;;;;;;;;;::::1;-1:-1:-1::0;;8605:16:0;:24;;-1:-1:-1;;;;8605:24:0;;;-1:-1:-1;;;;;;;;;;23251:2202:0:o;16156:3240::-;16326:11;;16306:17;;16288:15;:35;:49;16284:97;;;16354:15;:13;:15::i;:::-;16431:11;;16413:15;;16395;:33;:47;16391:93;;;16459:13;:11;:13::i;:::-;16536:11;;16516:17;;16498:15;:35;:49;16494:97;;;16564:15;:13;:15::i;:::-;16629:5;;-1:-1:-1;;;;;16619:15:0;;;16629:5;;16619:15;;;;:50;;-1:-1:-1;16664:5:0;;-1:-1:-1;;;;;16651:18:0;;;16664:5;;16651:18;;16619:50;:94;;;;-1:-1:-1;;;;;;16687:26:0;;;;;;:15;:26;;;;;;;;16686:27;16619:94;:128;;;;-1:-1:-1;16743:4:0;;-1:-1:-1;;;;;16730:17:0;;;16743:4;;16730:17;;16619:128;:162;;;;-1:-1:-1;16777:4:0;;-1:-1:-1;;;;;16764:17:0;;;16777:4;;16764:17;;16619:162;:196;;;;-1:-1:-1;16811:4:0;;-1:-1:-1;;;;;16798:17:0;;;16811:4;;16798:17;;16619:196;:239;;;;-1:-1:-1;;;;;;16832:26:0;;16853:4;16832:26;;16619:239;16601:1969;;;16903:12;;16893:6;:22;;16885:41;;;;;-1:-1:-1;;;16885:41:0;;;;;;;;;;;;-1:-1:-1;;;16885:41:0;;;;;;;;;;;;;;;16941:32;16976:20;16986:9;16976;:20::i;:::-;16941:55;;17074:16;;17064:6;17037:24;:33;:53;;17011:150;;;;-1:-1:-1;;;17011:150:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17200:16;;;17214:1;17200:16;;;;;;;;17176:21;;17200:16;;;;;;;;-1:-1:-1;;17241:6:0;;:13;;;-1:-1:-1;;;17241:13:0;;;;17176:40;;-1:-1:-1;;;;;;17241:6:0;;;;:11;;-1:-1:-1;17241:13:0;;;;;;;;;;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17241:13:0;17231:7;;:4;;17236:1;;17231:7;;;;;;;;;:23;-1:-1:-1;;;;;17231:23:0;;;-1:-1:-1;;;;;17231:23:0;;;;;17287:4;17269;17274:1;17269:7;;;;;;;;-1:-1:-1;;;;;17269:23:0;;;:7;;;;;;;;;;:23;;;;17325:6;;;:33;;;-1:-1:-1;;;17325:33:0;;;;;;;;;;;;;;;;;;;;;;17307:15;;17325:6;;;;;:19;;17345:6;;17353:4;;17325:33;;;;;;;;;;;;;;;;;17307:15;17325:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17325:33:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17325:33:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17359:1;17325:36;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17376:32:0;;;;;;:21;:32;;;;;;:43;;;;;;17439:7;:18;;;;;;;;17325:36;;-1:-1:-1;17439:18:0;;17434:1125;;17517:13;;-1:-1:-1;;;;;17482:32:0;;;;;;:21;:32;;;;;;:48;17478:387;;;-1:-1:-1;;;;;17571:32:0;;;;;;;:21;:32;;;;;;17555:13;:48;17646:15;17626:17;:35;17688:7;;;;;:20;17684:162;;17737:7;:19;;-1:-1:-1;;;;;;17737:19:0;-1:-1:-1;;;;;17737:19:0;;;;;;;;;;;17808:13;;17788:34;;;17799:7;;;;17788:34;;;;;;;;;;;;;;;;;;17684:162;17897:10;;17887:7;:20;17883:318;;;17932:10;:20;;;17993:15;17975;:33;18035:5;;-1:-1:-1;;;;;18035:18:0;;;:5;;:18;18031:151;;18082:5;:17;;-1:-1:-1;;;;;;18082:17:0;-1:-1:-1;;;;;18082:17:0;;;;;;;;;;;18147:10;;18131:27;;;18140:5;;;;18131:27;;;;;;;;;;;;;;;;;;18031:151;18233:9;;18223:7;:19;18219:325;;;18267:9;:19;;;18329:15;18309:17;:35;18371:7;;-1:-1:-1;;;;;18371:20:0;;;:7;;:20;18367:158;;18420:7;:19;;-1:-1:-1;;;;;;18420:19:0;-1:-1:-1;;;;;18420:19:0;;;;;;;;;;;18491:9;;18471:30;;;18482:7;;;;18471:30;;;;;;;;;;;;;;;;;;18367:158;16601:1969;;;;18608:5;;-1:-1:-1;;;;;18598:15:0;;;18608:5;;18598:15;;;;:50;;-1:-1:-1;18643:5:0;;-1:-1:-1;;;;;18630:18:0;;;18643:5;;18630:18;;18598:50;:91;;;;-1:-1:-1;;;;;;18666:23:0;;;;;;:15;:23;;;;;;;;18665:24;18598:91;:122;;;;-1:-1:-1;18716:4:0;;-1:-1:-1;;;;;18706:14:0;;;18716:4;;18706:14;;18598:122;:165;;;;-1:-1:-1;;;;;;18737:26:0;;18758:4;18737:26;;18598:165;18580:809;;;18808:12;;18798:6;:22;;18790:41;;;;;-1:-1:-1;;;18790:41:0;;;;;;;;;;;;-1:-1:-1;;;18790:41:0;;;;;;;;;;;;;;;18850:7;;-1:-1:-1;;;;;18850:17:0;;;:7;;:17;18846:173;;;18905:7;;18914:13;;18893:35;;;-1:-1:-1;;;;;18905:7:0;;;18893:35;;;;;;;;;;;;;;;;;;;;;18947:15;:13;:15::i;:::-;-1:-1:-1;;;;;18981:15:0;;;;;;:7;:15;;;;;:22;;-1:-1:-1;;18981:22:0;18999:4;18981:22;;;18846:173;19037:5;;-1:-1:-1;;;;;19037:15:0;;;:5;;:15;19033:162;;;19088:5;;19095:10;;19078:28;;;-1:-1:-1;;;;;19088:5:0;;;19078:28;;;;;;;;;;;;;;;;;;;;;19125:13;:11;:13::i;:::-;-1:-1:-1;;;;;19157:15:0;;;;;;:7;:15;;;;;:22;;-1:-1:-1;;19157:22:0;19175:4;19157:22;;;19033:162;19213:7;;-1:-1:-1;;;;;19213:17:0;;;:7;;:17;19209:169;;;19268:7;;19277:9;;19256:31;;;-1:-1:-1;;;;;19268:7:0;;;19256:31;;;;;;;;;;;;;;;;;;;;;19306:15;:13;:15::i;:::-;-1:-1:-1;;;;;19340:15:0;;;;;;:7;:15;;;;;:22;;-1:-1:-1;;19340:22:0;19358:4;19340:22;;;19209:169;16156:3240;;;:::o;22901:342::-;-1:-1:-1;;;;;23038:19:0;;23012:4;23038:19;;;:11;:19;;;;;;;;;:45;;-1:-1:-1;;;;;;23061:22:0;;;;;;:11;:22;;;;;;;;23038:45;23034:90;;;-1:-1:-1;23107:5:0;23100:12;;23034:90;23148:4;;-1:-1:-1;;;;;23138:14:0;;;23148:4;;23138:14;;:35;;-1:-1:-1;23169:4:0;;-1:-1:-1;;;;;23156:17:0;;;23169:4;;23156:17;23138:35;23134:80;;;-1:-1:-1;23197:5:0;23190:12;;23134:80;-1:-1:-1;23231:4:0;22901:342;;;;:::o;22408:485::-;22572:4;;22528:7;;;;-1:-1:-1;;;;;22572:17:0;;;:4;;:17;:74;;22638:8;;22572:74;;;22605:17;;22572:74;22548:98;-1:-1:-1;22657:17:0;22677:34;22707:3;22677:25;:6;22548:98;22677:10;:25::i;:34::-;22767:4;22749:24;;;;:9;:24;;;;;;22657:54;;-1:-1:-1;22749:39:0;;22657:54;22749:28;:39::i;:::-;22740:4;22722:24;;;;:9;:24;;;;;;;;;:66;;;;22804:42;;;;;;;22740:4;;-1:-1:-1;;;;;22804:42:0;;;-1:-1:-1;;;;;;;;;;;22804:42:0;;;;;;;;;22864:21;:6;22875:9;22864:10;:21::i;:::-;22857:28;22408:485;-1:-1:-1;;;;;;22408:485:0:o;1847:223::-;1967:7;2002:12;1995:5;1987:28;;;;-1:-1:-1;;;1987:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2026:9;2042:1;2038;:5;;;;;;;1847:223;-1:-1:-1;;;;;1847:223:0:o;13438:152::-;13499:1;13483:13;:17;13521:15;;13511:7;:25;;-1:-1:-1;;;;;;13511:25:0;-1:-1:-1;;;;;13521:15:0;;;13511:25;;;;;;13567:15;13547:17;:35;13438:152::o;13598:143::-;13654:1;13641:10;:14;13674:15;;13666:5;:23;;-1:-1:-1;;;;;;13666:23:0;-1:-1:-1;;;;;13674:15:0;;;13666:23;;;;;;13718:15;13700;:33;13598:143::o;13749:158::-;-1:-1:-1;;13794:9:0;:23;13838:15;;13828:7;:25;;-1:-1:-1;;;;;;13828:25:0;-1:-1:-1;;;;;13838:15:0;;;13828:25;;;;;;13884:15;13864:17;:35;13749:158::o

Swarm Source

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