ETH Price: $2,522.46 (-0.11%)

Token

BANK OF BANKS (BOB)
 

Overview

Max Total Supply

100,000,000 BOB

Holders

190

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
474,607 BOB

Value
$0.00
0xefc7901ce0f1c079d062709c5920c2114d9576f1
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:
BOB

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-04-15
*/

//SPDX-License-Identifier: MIT

/**
 * Contract: $BOB DeFi
 * Developed by: @Heisenman
 */

pragma solidity 0.8.19;

abstract contract ReentrancyGuard {
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;
    uint256 private _status;

    constructor() {
        _status = _NOT_ENTERED;
    }

    modifier nonReentrant() {
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");
        _status = _ENTERED;
        _;
        _status = _NOT_ENTERED;
    }
}

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

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

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

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

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

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

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

    function decimals() external view returns (uint8);
}

interface ISRG {
    function calculatePrice() external view returns (uint256);

    function getBNBPrice() external view returns (uint256);
}

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

contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

contract BOB is IERC20, Context, Ownable, ReentrancyGuard {
    event Bought(
        address indexed from,
        address indexed to,
        uint256 tokens,
        uint256 beans,
        uint256 dollarBuy
    );
    event Sold(
        address indexed from,
        address indexed to,
        uint256 tokens,
        uint256 beans,
        uint256 dollarSell
    );
    event FeesMulChanged(uint256 newBuyMul, uint256 newSellMul);
    event StablePairChanged(address newStablePair, address newStableToken);
    event MaxBagChanged(uint256 newMaxBag);

    // token data
    string private constant _name = "BANK OF BANKS";
    string private constant _symbol = "BOB";
    uint8 private constant _decimals = 9;
    uint256 private constant _DECMULTIPLIER = 10**_decimals;

    //SRG pair data
    address private constant SRG = 0xcD682EF09d07668d49A8103ddD65Ff54AebFbfDe; //change this according to chain
    ISRG private constant SRGI = ISRG(SRG); //interface to interact with SRG
    IERC20 private constant SRGIE = IERC20(SRG); //interace to interact with SRG

    uint256 private _srgDecimals = SRGIE.decimals();

    // Total Supply
    uint256 public constant _totalSupply = 10**8 * _DECMULTIPLIER;

    // balances
    mapping(address => uint256) public _balances;
    mapping(address => mapping(address => uint256)) internal _allowances;

    //Fees
    mapping(address => bool) public isFeeExempt;
    uint256 public sellMul = 95;
    uint256 public buyMul = 95;
    uint256 public constant DIVISOR = 100;

    //Max bag requirements
    mapping(address => bool) public isTxLimitExempt;
    uint256 public maxBag = _totalSupply / 100;

    //Tax collection
    uint256 public taxBalance = 0;

    //Tax wallets
    address public teamWallet = 0xE84486aB11e8EcAd92b2ce5cE0Fc1eD3422EEB4D;
    address public treasuryWallet = 0x063D923c6eFC911f1aE0138196fe82d0615F3838;

    // Tax Split
    uint256 public teamShare = 40;
    uint256 public treasuryShare = 60;
    uint256 public constant SHAREDIVISOR = 100;

    //Known Wallets
    address private constant DEAD = 0x000000000000000000000000000000000000dEaD;

    //trading parameters
    uint256 public liquidity = 10**6 * 10**_srgDecimals;
    uint256 public liqConst = liquidity * _totalSupply;
    bool public tradeOpen = false;


    //volume trackers
    mapping(uint256 => uint256) public tVol;
    uint256 public totalVolume = 0;

    //candlestick data
    uint256 public constant PADDING = 10**18;
    uint256 public totalTx;
    mapping(uint256 => uint256) public txTimeStamp;

    struct candleStick {
        uint256 time;
        uint256 open;
        uint256 close;
        uint256 high;
        uint256 low;
    }

    mapping(uint256 => candleStick) public candleStickData;

    //Frontrun Guard
    mapping(address => uint256) private _lastBuyBlock;

    // initialize supply
    constructor() {
        _balances[address(this)] = _totalSupply;

        isFeeExempt[msg.sender] = true;

        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[address(this)] = true;
        isTxLimitExempt[DEAD] = true;
        isTxLimitExempt[address(0)] = true;

        emit Transfer(address(0), address(this), _totalSupply);
    }

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

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

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

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

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

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

    function approve(address spender, uint256 amount)
        public
        override
        returns (bool)
    {
        require(spender != address(0), "SRG20: approve to the zero address");
        require(
            msg.sender != address(0),
            "SRG20: approve from the zero address"
        );

        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply - _balances[DEAD];
    }

    function changeWalletLimit(uint256 newLimit) external onlyOwner {
        require(
            newLimit >= _totalSupply / 100,
            "New wallet limit should be at least 1% of total supply"
        );
        maxBag = newLimit;
        emit MaxBagChanged(newLimit);
    }

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

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

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

    /** TransferFrom Function */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external override returns (bool) {
        address spender = msg.sender;
        //check allowance requirement
        _spendAllowance(sender, spender, amount);
        return _transferFrom(sender, recipient, amount);
    }

    /** Internal Transfer */
    function _transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (bool) {
        // make standard checks
        require(
            recipient != address(0) && recipient != address(this),
            "transfer to the zero address or CA"
        );
        require(amount > 0, "Transfer amount must be greater than zero");
        require(
            isTxLimitExempt[recipient] ||
                _balances[recipient] + amount <= maxBag,
            "Max wallet exceeded!"
        );

        // subtract from sender
        _balances[sender] = _balances[sender] - amount;

        // give amount to receiver
        _balances[recipient] = _balances[recipient] + amount;

        // Transfer Event
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = _allowances[owner][spender];
        if (currentAllowance != type(uint256).max) {
            require(
                currentAllowance >= amount,
                "SRG20: insufficient allowance"
            );


                // decrease allowance
                _approve(owner, spender, currentAllowance - amount);
            
        }
    }

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

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

    /** Purchases SURGE Tokens and Deposits Them in Sender's Address*/
    function _buy(
        uint256 buyAmount,
        uint256 minTokenOut,
        uint256 deadline
    ) public nonReentrant returns (bool) {
        // deadline requirement
        require(deadline >= block.timestamp, "Deadline EXPIRED");
        address buyer = msg.sender;
        // Frontrun Guard
        _lastBuyBlock[buyer] = block.number;

        // liquidity is set
        require(liquidity > 0, "The token has no liquidity");

        // check if trading is open
        require(
            tradeOpen || isTxLimitExempt[buyer],
            "Trading is not Open"
        );

        //remove the buy tax
        uint256 srgAmount = isFeeExempt[buyer]
            ? buyAmount
            : (buyAmount * buyMul) / DIVISOR;

        // how much they should purchase?
        uint256 tokensToSend = _balances[address(this)] -
            (liqConst / (srgAmount + liquidity));

        //revert for max bag
        require(
            _balances[buyer] + tokensToSend <= maxBag ||
                isTxLimitExempt[buyer],
            "Max wallet exceeded"
        );

        // revert if under 1
        require(tokensToSend > 1, "SRG20: Must Buy more than 1 decimal");

        // revert for slippage
        require(tokensToSend >= minTokenOut, "INSUFFICIENT OUTPUT AMOUNT");
        
        // transfer the SRG from the msg.sender to the CA
        bool s = SRGIE.transferFrom(buyer, address(this), buyAmount);

        require(s, "transfer of SRG failed!");

        // transfer the tokens from CA to the buyer
        buy(msg.sender, tokensToSend);

        //update available tax to extract and Liquidity
        uint256 taxAmount = buyAmount - srgAmount;
        taxBalance = taxBalance + taxAmount;
        liquidity = liquidity + srgAmount;

        //update volume
        uint256 cTime = block.timestamp;
        uint256 dollarBuy = buyAmount * getSRGPrice();
        totalVolume += dollarBuy;

        tVol[cTime] += dollarBuy;

        //update candleStickData
        totalTx += 1;
        txTimeStamp[totalTx] = cTime;
        uint256 cPrice = calculatePrice() * getSRGPrice();
        candleStickData[cTime].time = cTime;
        if (candleStickData[cTime].open == 0) {
            if (totalTx == 1) {
                candleStickData[cTime].open =
                    ((liquidity - srgAmount) / (_totalSupply)) *
                    getSRGPrice();
            } else {
                candleStickData[cTime].open = candleStickData[
                    txTimeStamp[totalTx - 1]
                ].close;
            }
        }
        candleStickData[cTime].close = cPrice;

        if (
            candleStickData[cTime].high < cPrice ||
            candleStickData[cTime].high == 0
        ) {
            candleStickData[cTime].high = cPrice;
        }

        if (
            candleStickData[cTime].low > cPrice ||
            candleStickData[cTime].low == 0
        ) {
            candleStickData[cTime].low = cPrice;
        }

        //emit transfer and buy events
        emit Transfer(address(this), msg.sender, tokensToSend);
        emit Bought(
            msg.sender,
            address(this),
            tokensToSend,
            buyAmount,
            srgAmount * getSRGPrice()
        );
        return true;
    }

    /** Sends Tokens to the buyer Address */
    function buy(address receiver, uint256 amount) internal {
        _balances[receiver] = _balances[receiver] + amount;
        _balances[address(this)] = _balances[address(this)] - amount;
    }

    /** Sells SURGE Tokens And Deposits the BNB into Seller's Address */
    function _sell(
        uint256 tokenAmount,
        uint256 deadline,
        uint256 minBNBOut
    ) public nonReentrant returns (bool) {
        // deadline requirement
        require(deadline >= block.timestamp, "Deadline EXPIRED");

        //Frontrun Guard
        require(
            _lastBuyBlock[msg.sender] != block.number,
            "Buying and selling in the same block is not allowed!"
        );

        address seller = msg.sender;

        // make sure seller has this balance
        require(
            _balances[seller] >= tokenAmount,
            "cannot sell above token amount"
        );

        // get how much beans are the tokens worth
        uint256 amountSRG = liquidity -
            (liqConst / (_balances[address(this)] + tokenAmount));
        uint256 amountTax = (amountSRG * (DIVISOR - sellMul)) / DIVISOR;
        uint256 SRGtoSend = amountSRG - amountTax;

        //slippage revert
        require(amountSRG >= minBNBOut, "INSUFFICIENT OUTPUT AMOUNT");

        // send SRG to Seller

        bool successful = isFeeExempt[msg.sender]
            ? SRGIE.transfer(msg.sender, amountSRG)
            : SRGIE.transfer(msg.sender, SRGtoSend);
        require(successful, "SRG transfer failed");

        // subtract full amount from sender
        _balances[seller] = _balances[seller] - tokenAmount;

        //add tax allowance to be withdrawn and remove from liq the amount of beans taken by the seller
        taxBalance = isFeeExempt[msg.sender]
            ? taxBalance
            : taxBalance + amountTax;
        liquidity = liquidity - amountSRG;

        // add tokens back into the contract
        _balances[address(this)] = _balances[address(this)] + tokenAmount;

        //update volume
        uint256 cTime = block.timestamp;
        uint256 dollarSell = amountSRG * getSRGPrice();
        totalVolume += dollarSell;
        tVol[cTime] += dollarSell;

        //update candleStickData
        totalTx += 1;
        txTimeStamp[totalTx] = cTime;
        uint256 cPrice = calculatePrice() * getSRGPrice();
        candleStickData[cTime].time = cTime;
        if (candleStickData[cTime].open == 0) {
            candleStickData[cTime].open = candleStickData[
                txTimeStamp[totalTx - 1]
            ].close;
        }
        candleStickData[cTime].close = cPrice;

        if (
            candleStickData[cTime].high < cPrice ||
            candleStickData[cTime].high == 0
        ) {
            candleStickData[cTime].high = cPrice;
        }

        if (
            candleStickData[cTime].low > cPrice ||
            candleStickData[cTime].low == 0
        ) {
            candleStickData[cTime].low = cPrice;
        }

        // emit transfer and sell events
        emit Transfer(seller, address(this), tokenAmount);
        if (isFeeExempt[msg.sender]) {
            emit Sold(
                address(this),
                msg.sender,
                tokenAmount,
                amountSRG,
                dollarSell
            );
        } else {
            emit Sold(
                address(this),
                msg.sender,
                tokenAmount,
                SRGtoSend,
                SRGtoSend * getSRGPrice()
            );
        }
        return true;
    }

    /** Amount of liquidity in Contract */
    function getLiquidity() public view returns (uint256) {
        return liquidity;
    }

    /** Returns the value of your holdings before the sell fee */
    function getValueOfHoldings(address holder) public view returns (uint256) {
        return
            ((_balances[holder] * liquidity) / _balances[address(this)]) *
            getSRGPrice();
    }

    function changeFees(uint256 newBuyMul, uint256 newSellMul)
        external
        onlyOwner
    {
        require(
            newBuyMul >= 90 &&
                newSellMul >= 90 &&
                newBuyMul <= 100 &&
                newSellMul <= 100,
            "Fees are too high"
        );

        buyMul = newBuyMul;
        sellMul = newSellMul;

        emit FeesMulChanged(newBuyMul, newSellMul);
    }

    function changeTaxDistribution(
        uint256 newteamShare,
        uint256 newtreasuryShare
    ) external onlyOwner {
        require(
            newteamShare + newtreasuryShare == SHAREDIVISOR,
            "Sum of shares must be 100"
        );

        teamShare = newteamShare;
        treasuryShare = newtreasuryShare;
    }

    function changeFeeReceivers(
        address newTeamWallet,
        address newTreasuryWallet
    ) external onlyOwner {
        require(
            newTeamWallet != address(0) && newTreasuryWallet != address(0),
            "New wallets must not be the ZERO address"
        );

        teamWallet = newTeamWallet;
        treasuryWallet = newTreasuryWallet;
    }

    function withdrawTaxBalance() external nonReentrant onlyOwner {
        bool temp1 = SRGIE.transfer(
            teamWallet,
            (taxBalance * teamShare) / SHAREDIVISOR
        );
        bool temp2 = SRGIE.transfer(
            treasuryWallet,
            (taxBalance * treasuryShare) / SHAREDIVISOR
        );
        assert(temp1 && temp2);
        taxBalance = 0;
    }

    function getTokenAmountOut(uint256 amountSRGIn)
        external
        view
        returns (uint256)
    {
        uint256 amountAfter = liqConst / (liquidity - amountSRGIn);
        uint256 amountBefore = liqConst / liquidity;
        return amountAfter - amountBefore;
    }

    function getsrgAmountOut(uint256 amountIn) public view returns (uint256) {
        uint256 srgBefore = liqConst / _balances[address(this)];
        uint256 srgAfter = liqConst / (_balances[address(this)] + amountIn);
        return srgBefore - srgAfter;
    }

    function addLiquidity(uint256 amountSRGLiq) external onlyOwner {
        uint256 tokensToAdd = (_balances[address(this)] * amountSRGLiq) /
            liquidity;
        require(_balances[msg.sender] >= tokensToAdd, "Not enough tokens!");

        bool sLiq = SRGIE.transfer(address(this), amountSRGLiq);
        require(sLiq, "SRG transfer was unsuccesful!");

        uint256 oldLiq = liquidity;
        liquidity = liquidity + amountSRGLiq;
        _balances[address(this)] += tokensToAdd;
        _balances[msg.sender] -= tokensToAdd;
        liqConst = (liqConst * liquidity) / oldLiq;

        emit Transfer(msg.sender, address(this), tokensToAdd);
    }

    function getMarketCap() external view returns (uint256) {
        return (getCirculatingSupply() * calculatePrice() * getSRGPrice());
    }

    // calculate price based on pair SRG price
    function getSRGPrice() public view returns (uint256) {
        return (SRGI.calculatePrice() * SRGI.getBNBPrice()); // return amount of token0 needed to buy token1
    }

    // Returns the Current Price of the Token in SRG
    function calculatePrice() public view returns (uint256) {
        require(liquidity > 0, "No Liquidity");
        return liquidity * PADDING / _balances[address(this)];
    }

    function openTrading() external nonReentrant onlyOwner {
        require(!tradeOpen, "You cannot disable trading after enabling!");
        tradeOpen = true;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"beans","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"dollarBuy","type":"uint256"}],"name":"Bought","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newBuyMul","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newSellMul","type":"uint256"}],"name":"FeesMulChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newMaxBag","type":"uint256"}],"name":"MaxBagChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"beans","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"dollarSell","type":"uint256"}],"name":"Sold","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newStablePair","type":"address"},{"indexed":false,"internalType":"address","name":"newStableToken","type":"address"}],"name":"StablePairChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DIVISOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PADDING","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SHAREDIVISOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_balances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyAmount","type":"uint256"},{"internalType":"uint256","name":"minTokenOut","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"_buy","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenAmount","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"minBNBOut","type":"uint256"}],"name":"_sell","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountSRGLiq","type":"uint256"}],"name":"addLiquidity","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMul","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"calculatePrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"candleStickData","outputs":[{"internalType":"uint256","name":"time","type":"uint256"},{"internalType":"uint256","name":"open","type":"uint256"},{"internalType":"uint256","name":"close","type":"uint256"},{"internalType":"uint256","name":"high","type":"uint256"},{"internalType":"uint256","name":"low","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newTeamWallet","type":"address"},{"internalType":"address","name":"newTreasuryWallet","type":"address"}],"name":"changeFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBuyMul","type":"uint256"},{"internalType":"uint256","name":"newSellMul","type":"uint256"}],"name":"changeFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"changeIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"changeIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newteamShare","type":"uint256"},{"internalType":"uint256","name":"newtreasuryShare","type":"uint256"}],"name":"changeTaxDistribution","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"changeWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMarketCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSRGPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountSRGIn","type":"uint256"}],"name":"getTokenAmountOut","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"}],"name":"getValueOfHoldings","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}],"name":"getsrgAmountOut","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liqConst","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBag","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellMul","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":"uint256","name":"","type":"uint256"}],"name":"tVol","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalVolume","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradeOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasuryShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"treasuryWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"txTimeStamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawTaxBalance","outputs":[],"stateMutability":"nonpayable","type":"function"}]

6080604081905263313ce56760e01b815273cd682ef09d07668d49a8103ddd65ff54aebfbfde9063313ce56790608490602090600481865afa1580156200004a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000709190620002d4565b60ff16600255605f60068190556007556064620000906009600a62000415565b620000a0906305f5e10062000426565b620000ac919062000440565b6009556000600a908155600b80546001600160a01b031990811673e84486ab11e8ecad92b2ce5ce0fc1ed3422eeb4d17909155600c805490911673063d923c6efc911f1ae0138196fe82d0615f38381790556028600d55603c600e55600254620001169162000463565b6200012590620f424062000426565b600f55620001366009600a62000415565b62000146906305f5e10062000426565b600f5462000155919062000426565b6010556011805460ff1916905560006013553480156200017457600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060018055620001c86009600a62000415565b620001d8906305f5e10062000426565b30600081815260036020908152604080832094909455338252600581528382208054600160ff1991821681179092556008909252848320805483168217905583835293822080548216851790557f046fee3d77c34a6c5e10c3be6dc4b132c30449dbf4f0bc07684896dd0933429980548216851790558180527f5eff886ea0ce6ca488a3d6e336d6c0f75f46d19b42c06ce5ee98e42c96d256c78054909116909317909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620002ad6009600a62000415565b620002bd906305f5e10062000426565b60405190815260200160405180910390a362000471565b600060208284031215620002e757600080fd5b815160ff81168114620002f957600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620003575781600019048211156200033b576200033b62000300565b808516156200034957918102915b93841c93908002906200031b565b509250929050565b60008262000370575060016200040f565b816200037f575060006200040f565b8160018114620003985760028114620003a357620003c3565b60019150506200040f565b60ff841115620003b757620003b762000300565b50506001821b6200040f565b5060208310610133831016604e8410600b8410161715620003e8575081810a6200040f565b620003f4838362000316565b80600019048211156200040b576200040b62000300565b0290505b92915050565b6000620002f960ff8416836200035f565b80820281158282048414176200040f576200040f62000300565b6000826200045e57634e487b7160e01b600052601260045260246000fd5b500490565b6000620002f983836200035f565b612bb080620004816000396000f3fe608060405234801561001057600080fd5b506004361061035d5760003560e01c80637220cf39116101d3578063b1b6524611610104578063e8f620b1116100a2578063f4034e4b1161007c578063f4034e4b1461075b578063f7a62fe91461076e578063fabe62831461078e578063fea2de43146107a157600080fd5b8063e8f620b114610736578063ea6ef2fe1461073f578063f2fde38b1461074857600080fd5b8063d348b409116100de578063d348b409146106dd578063d937e60d146106e5578063dd62ed3e146106f4578063e0cfcc951461072d57600080fd5b8063b1b65246146106ba578063b37659a4146106c2578063c9567bf9146106d557600080fd5b80639d75502611610171578063a3a2e89e1161014b578063a3a2e89e14610626578063a8fb66b414610639578063a9059cbb1461069e578063aa98e163146106b157600080fd5b80639d75502614610601578063a0e571a21461060a578063a13cef3a1461061357600080fd5b80638b42507f116101ad5780638b42507f146105a65780638da5cb5b146105c957806390825c28146105da57806395d89b41146105e257600080fd5b80637220cf39146105815780637796ff371461058a5780637db1342c1461059357600080fd5b80633410fe6e116102ad578063599270441161024b5780636ebcf607116102255780636ebcf6071461051d57806370a082311461053d57806371073b3814610566578063715018a61461057957600080fd5b806359927044146105015780635f81a57c1461051457806362ff2e9a1461045d57600080fd5b80634626402b116102875780634626402b1461049057806349ce234c146104bb57806351c6590a146104db578063571ac8b0146104ee57600080fd5b80633410fe6e1461045d5780633eaaf86b146104655780633f4218e01461046d57600080fd5b80631f02a29c1161031a57806323b872dd116102f457806323b872dd1461042657806325fa0b98146104395780632b112e4914610446578063313ce5671461044e57600080fd5b80631f02a29c146103ed5780631f2c80f11461040057806321ecff5b1461041357600080fd5b806306fdde03146103625780630910a5101461039d578063095ea7b3146103af57806318160ddd146103d25780631a686502146103da5780631d6bdb5b146103e3575b600080fd5b60408051808201909152600d81526c42414e4b204f462042414e4b5360981b60208201525b604051610394919061276d565b60405180910390f35b600f545b604051908152602001610394565b6103c26103bd3660046127d7565b6107b4565b6040519015158152602001610394565b6103a16108da565b6103a1600f5481565b6103eb6108fb565b005b6103a16103fb366004612801565b610ae6565b6103eb61040e36600461281c565b610b33565b6103eb61042136600461284f565b610c08565b6103c2610434366004612871565b610ce5565b6011546103c29060ff1681565b6103a1610d07565b60405160098152602001610394565b6103a1606481565b6103a1610d5a565b6103c261047b366004612801565b60056020526000908152604090205460ff1681565b600c546104a3906001600160a01b031681565b6040516001600160a01b039091168152602001610394565b6103a16104c93660046128ad565b60126020526000908152604090205481565b6103eb6104e93660046128ad565b610d77565b6103c26104fc366004612801565b610f92565b600b546104a3906001600160a01b031681565b6103a160135481565b6103a161052b366004612801565b60036020526000908152604090205481565b6103a161054b366004612801565b6001600160a01b031660009081526003602052604090205490565b6103a16105743660046128ad565b610fa0565b6103eb610fe6565b6103a160145481565b6103a1600e5481565b6103eb6105a13660046128ad565b61105a565b6103c26105b4366004612801565b60086020526000908152604090205460ff1681565b6000546001600160a01b03166104a3565b6103a1611153565b6040805180820190915260038152622127a160e91b6020820152610387565b6103a160065481565b6103a160075481565b6103a16106213660046128ad565b611181565b6103eb6106343660046128d7565b6111cb565b6106766106473660046128ad565b601660205260009081526040902080546001820154600283015460038401546004909401549293919290919085565b604080519586526020860194909452928401919091526060830152608082015260a001610394565b6103c26106ac3660046127d7565b611220565b6103a1600a5481565b6103a1611234565b6103c26106d036600461290e565b611322565b6103eb6119c6565b6103a1611a91565b6103a1670de0b6b3a764000081565b6103a161070236600461281c565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b6103a160095481565b6103a160105481565b6103a1600d5481565b6103eb610756366004612801565b611b03565b6103eb61076936600461284f565b611bed565b6103a161077c3660046128ad565b60156020526000908152604090205481565b6103eb61079c3660046128d7565b611c7b565b6103c26107af36600461290e565b611cd0565b60006001600160a01b03831661081c5760405162461bcd60e51b815260206004820152602260248201527f53524732303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084015b60405180910390fd5b336108755760405162461bcd60e51b8152602060048201526024808201527f53524732303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610813565b3360008181526004602090815260408083206001600160a01b03881680855290835292819020869055518581529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35060015b92915050565b60006108e86009600a612a34565b6108f6906305f5e100612a43565b905090565b60026001540361091d5760405162461bcd60e51b815260040161081390612a5a565b60026001556000546001600160a01b0316331461094c5760405162461bcd60e51b815260040161081390612a91565b600b54600d54600a5460009273cd682ef09d07668d49a8103ddd65ff54aebfbfde9263a9059cbb926001600160a01b039092169160649161098c91612a43565b6109969190612ac6565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af11580156109e1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a059190612ae8565b600c54600e54600a5492935060009273cd682ef09d07668d49a8103ddd65ff54aebfbfde9263a9059cbb926001600160a01b0390911691606491610a4891612a43565b610a529190612ac6565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015610a9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac19190612ae8565b9050818015610acd5750805b610ad957610ad9612b05565b50506000600a5560018055565b6000610af0611234565b3060009081526003602052604080822054600f546001600160a01b03871684529190922054610b1f9190612a43565b610b299190612ac6565b6108d49190612a43565b6000546001600160a01b03163314610b5d5760405162461bcd60e51b815260040161081390612a91565b6001600160a01b03821615801590610b7d57506001600160a01b03811615155b610bda5760405162461bcd60e51b815260206004820152602860248201527f4e65772077616c6c657473206d757374206e6f7420626520746865205a45524f604482015267206164647265737360c01b6064820152608401610813565b600b80546001600160a01b039384166001600160a01b031991821617909155600c8054929093169116179055565b6000546001600160a01b03163314610c325760405162461bcd60e51b815260040161081390612a91565b605a8210158015610c445750605a8110155b8015610c51575060648211155b8015610c5e575060648111155b610c9e5760405162461bcd60e51b815260206004820152601160248201527008ccacae640c2e4ca40e8dede40d0d2ced607b1b6044820152606401610813565b6007829055600681905560408051838152602081018390527fc19ebd395193e8ddaaeda048fb5cb09d4e2dbebcce719174166029a409387856910160405180910390a15050565b600033610cf3858285612338565b610cfe8585856123d1565b95945050505050565b61dead600090815260036020527f262bb27bbdd95c1cdc8e16957e36e38579ea44f7f6413dd7a9c75939def06b2c54610d426009600a612a34565b610d50906305f5e100612a43565b6108f69190612b1b565b610d666009600a612a34565b610d74906305f5e100612a43565b81565b6000546001600160a01b03163314610da15760405162461bcd60e51b815260040161081390612a91565b600f5430600090815260036020526040812054909190610dc2908490612a43565b610dcc9190612ac6565b33600090815260036020526040902054909150811115610e235760405162461bcd60e51b81526020600482015260126024820152714e6f7420656e6f75676820746f6b656e732160701b6044820152606401610813565b60405163a9059cbb60e01b81523060048201526024810183905260009073cd682ef09d07668d49a8103ddd65ff54aebfbfde9063a9059cbb906044016020604051808303816000875af1158015610e7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea29190612ae8565b905080610ef15760405162461bcd60e51b815260206004820152601d60248201527f535247207472616e736665722077617320756e73756363657366756c210000006044820152606401610813565b600f54610efe8482612b2e565b600f553060009081526003602052604081208054859290610f20908490612b2e565b90915550503360009081526003602052604081208054859290610f44908490612b1b565b9091555050600f546010548291610f5a91612a43565b610f649190612ac6565b60105560405183815230903390600080516020612b5b8339815191529060200160405180910390a350505050565b60006108d4826000196107b4565b60008082600f54610fb19190612b1b565b601054610fbe9190612ac6565b90506000600f54601054610fd29190612ac6565b9050610fde8183612b1b565b949350505050565b6000546001600160a01b031633146110105760405162461bcd60e51b815260040161081390612a91565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146110845760405162461bcd60e51b815260040161081390612a91565b60646110926009600a612a34565b6110a0906305f5e100612a43565b6110aa9190612ac6565b8110156111185760405162461bcd60e51b815260206004820152603660248201527f4e65772077616c6c6574206c696d69742073686f756c64206265206174206c65604482015275617374203125206f6620746f74616c20737570706c7960501b6064820152608401610813565b60098190556040518181527fb579b5ff4decd3791f679ec8d72f16128df08aa3f346b425480a0135d2e8bf759060200160405180910390a150565b600061115d611234565b611165611a91565b61116d610d07565b6111779190612a43565b6108f69190612a43565b30600090815260036020526040812054601054829161119f91612ac6565b30600090815260036020526040812054919250906111be908590612b2e565b601054610fd29190612ac6565b6000546001600160a01b031633146111f55760405162461bcd60e51b815260040161081390612a91565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b600061122d3384846123d1565b9392505050565b600073cd682ef09d07668d49a8103ddd65ff54aebfbfde6001600160a01b031663f2220c9e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611288573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ac9190612b41565b73cd682ef09d07668d49a8103ddd65ff54aebfbfde6001600160a01b031663d348b4096040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111779190612b41565b60006002600154036113465760405162461bcd60e51b815260040161081390612a5a565b60026001554283101561138e5760405162461bcd60e51b815260206004820152601060248201526f111958591b1a5b99481156141254915160821b6044820152606401610813565b3360009081526017602052604090205443900361140a5760405162461bcd60e51b815260206004820152603460248201527f427579696e6720616e642073656c6c696e6720696e207468652073616d6520626044820152736c6f636b206973206e6f7420616c6c6f7765642160601b6064820152608401610813565b336000818152600360205260409020548511156114695760405162461bcd60e51b815260206004820152601e60248201527f63616e6e6f742073656c6c2061626f766520746f6b656e20616d6f756e7400006044820152606401610813565b30600090815260036020526040812054611484908790612b2e565b6010546114919190612ac6565b600f5461149e9190612b1b565b90506000606460065460646114b39190612b1b565b6114bd9084612a43565b6114c79190612ac6565b905060006114d58284612b1b565b9050858310156115275760405162461bcd60e51b815260206004820152601a60248201527f494e53554646494349454e54204f555450555420414d4f554e540000000000006044820152606401610813565b3360009081526005602052604081205460ff166115bf5760405163a9059cbb60e01b81523360048201526024810183905273cd682ef09d07668d49a8103ddd65ff54aebfbfde9063a9059cbb906044016020604051808303816000875af1158015611596573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115ba9190612ae8565b61163b565b60405163a9059cbb60e01b81523360048201526024810185905273cd682ef09d07668d49a8103ddd65ff54aebfbfde9063a9059cbb906044016020604051808303816000875af1158015611617573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061163b9190612ae8565b9050806116805760405162461bcd60e51b815260206004820152601360248201527214d491c81d1c985b9cd9995c8819985a5b1959606a1b6044820152606401610813565b6001600160a01b0385166000908152600360205260409020546116a4908a90612b1b565b6001600160a01b03861660009081526003602090815260408083209390935533825260059052205460ff166116e65782600a546116e19190612b2e565b6116ea565b600a545b600a55600f546116fb908590612b1b565b600f5530600090815260036020526040902054611719908a90612b2e565b306000908152600360205260408120919091554290611736611234565b6117409087612a43565b905080601360008282546117549190612b2e565b909155505060008281526012602052604081208054839290611777908490612b2e565b925050819055506001601460008282546117919190612b2e565b909155505060145460009081526015602052604081208390556117b2611234565b6117ba611a91565b6117c49190612a43565b6000848152601660205260408120858155600101549192500361183457601660006015600060016014546117f89190612b1b565b81526020019081526020016000205481526020019081526020016000206002015460166000858152602001908152602001600020600101819055505b600083815260166020526040902060028101829055600301548111806118695750600083815260166020526040902060030154155b156118835760008381526016602052604090206003018190555b6000838152601660205260409020600401548110806118b15750600083815260166020526040902060040154155b156118cb5760008381526016602052604090206004018190555b6040518c815230906001600160a01b038a1690600080516020612b5b8339815191529060200160405180910390a33360009081526005602052604090205460ff161561195b57604080518d815260208101899052908101839052339030907f9be8a5ca22b7e6e81f04b5879f0248227bb770114291bd47dfaee4c3a82ad60e9060600160405180910390a36119b1565b33307f9be8a5ca22b7e6e81f04b5879f0248227bb770114291bd47dfaee4c3a82ad60e8e88611988611234565b611992908b612a43565b6040805193845260208401929092529082015260600160405180910390a35b505060018080559a9950505050505050505050565b6002600154036119e85760405162461bcd60e51b815260040161081390612a5a565b60026001556000546001600160a01b03163314611a175760405162461bcd60e51b815260040161081390612a91565b60115460ff1615611a7d5760405162461bcd60e51b815260206004820152602a60248201527f596f752063616e6e6f742064697361626c652074726164696e6720616674657260448201526920656e61626c696e672160b01b6064820152608401610813565b6011805460ff191660019081179091558055565b600080600f5411611ad35760405162461bcd60e51b815260206004820152600c60248201526b4e6f204c697175696469747960a01b6044820152606401610813565b30600090815260036020526040902054600f54611af990670de0b6b3a764000090612a43565b6108f69190612ac6565b6000546001600160a01b03163314611b2d5760405162461bcd60e51b815260040161081390612a91565b6001600160a01b038116611b925760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610813565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611c175760405162461bcd60e51b815260040161081390612a91565b6064611c238284612b2e565b14611c705760405162461bcd60e51b815260206004820152601960248201527f53756d206f6620736861726573206d75737420626520313030000000000000006044820152606401610813565b600d91909155600e55565b6000546001600160a01b03163314611ca55760405162461bcd60e51b815260040161081390612a91565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6000600260015403611cf45760405162461bcd60e51b815260040161081390612a5a565b600260015542821015611d3c5760405162461bcd60e51b815260206004820152601060248201526f111958591b1a5b99481156141254915160821b6044820152606401610813565b336000818152601760205260409020439055600f54611d9d5760405162461bcd60e51b815260206004820152601a60248201527f54686520746f6b656e20686173206e6f206c69717569646974790000000000006044820152606401610813565b60115460ff1680611dc657506001600160a01b03811660009081526008602052604090205460ff165b611e085760405162461bcd60e51b81526020600482015260136024820152722a3930b234b7339034b9903737ba1027b832b760691b6044820152606401610813565b6001600160a01b03811660009081526005602052604081205460ff16611e4757606460075487611e389190612a43565b611e429190612ac6565b611e49565b855b90506000600f5482611e5b9190612b2e565b601054611e689190612ac6565b30600090815260036020526040902054611e829190612b1b565b6009546001600160a01b03851660009081526003602052604090205491925090611ead908390612b2e565b111580611ed257506001600160a01b03831660009081526008602052604090205460ff165b611f145760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610813565b60018111611f705760405162461bcd60e51b815260206004820152602360248201527f53524732303a204d75737420427579206d6f7265207468616e203120646563696044820152621b585b60ea1b6064820152608401610813565b85811015611fc05760405162461bcd60e51b815260206004820152601a60248201527f494e53554646494349454e54204f555450555420414d4f554e540000000000006044820152606401610813565b6040516323b872dd60e01b81526001600160a01b03841660048201523060248201526044810188905260009073cd682ef09d07668d49a8103ddd65ff54aebfbfde906323b872dd906064016020604051808303816000875af115801561202a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061204e9190612ae8565b90508061209d5760405162461bcd60e51b815260206004820152601760248201527f7472616e73666572206f6620535247206661696c6564210000000000000000006044820152606401610813565b6120a733836125e4565b60006120b3848a612b1b565b905080600a546120c39190612b2e565b600a55600f546120d4908590612b2e565b600f554260006120e2611234565b6120ec908c612a43565b905080601360008282546121009190612b2e565b909155505060008281526012602052604081208054839290612123908490612b2e565b9250508190555060016014600082825461213d9190612b2e565b9091555050601454600090815260156020526040812083905561215e611234565b612166611a91565b6121709190612a43565b60008481526016602052604081208581556001015491925003612245576014546001036121f25761219f611234565b6121ab6009600a612a34565b6121b9906305f5e100612a43565b88600f546121c79190612b1b565b6121d19190612ac6565b6121db9190612a43565b600084815260166020526040902060010155612245565b601660006015600060016014546122099190612b1b565b81526020019081526020016000205481526020019081526020016000206002015460166000858152602001908152602001600020600101819055505b6000838152601660205260409020600281018290556003015481118061227a5750600083815260166020526040902060030154155b156122945760008381526016602052604090206003018190555b6000838152601660205260409020600401548110806122c25750600083815260166020526040902060040154155b156122dc5760008381526016602052604090206004018190555b60405186815233903090600080516020612b5b8339815191529060200160405180910390a330337f7ce543d1780f3bdc3dac42da06c95da802653cd1b212b8d74ec3e3c33ad7095c888f61232e611234565b611992908d612a43565b6001600160a01b0380841660009081526004602090815260408083209386168352929052205460001981146123cb57818110156123b75760405162461bcd60e51b815260206004820152601d60248201527f53524732303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610813565b6123cb84846123c68585612b1b565b612649565b50505050565b60006001600160a01b038316158015906123f457506001600160a01b0383163014155b61244b5760405162461bcd60e51b815260206004820152602260248201527f7472616e7366657220746f20746865207a65726f2061646472657373206f7220604482015261434160f01b6064820152608401610813565b600082116124ad5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610813565b6001600160a01b03831660009081526008602052604090205460ff16806124f957506009546001600160a01b0384166000908152600360205260409020546124f6908490612b2e565b11155b61253c5760405162461bcd60e51b81526020600482015260146024820152734d61782077616c6c65742065786365656465642160601b6044820152606401610813565b6001600160a01b038416600090815260036020526040902054612560908390612b1b565b6001600160a01b038086166000908152600360205260408082209390935590851681522054612590908390612b2e565b6001600160a01b038085166000818152600360205260409081902093909355915190861690600080516020612b5b833981519152906125d29086815260200190565b60405180910390a35060019392505050565b6001600160a01b038216600090815260036020526040902054612608908290612b2e565b6001600160a01b038316600090815260036020526040808220929092553081522054612635908290612b1b565b306000908152600360205260409020555050565b6001600160a01b0383166126ab5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610813565b6001600160a01b03821661270c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610813565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600060208083528351808285015260005b8181101561279a5785810183015185820160400152820161277e565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146127d257600080fd5b919050565b600080604083850312156127ea57600080fd5b6127f3836127bb565b946020939093013593505050565b60006020828403121561281357600080fd5b61122d826127bb565b6000806040838503121561282f57600080fd5b612838836127bb565b9150612846602084016127bb565b90509250929050565b6000806040838503121561286257600080fd5b50508035926020909101359150565b60008060006060848603121561288657600080fd5b61288f846127bb565b925061289d602085016127bb565b9150604084013590509250925092565b6000602082840312156128bf57600080fd5b5035919050565b80151581146128d457600080fd5b50565b600080604083850312156128ea57600080fd5b6128f3836127bb565b91506020830135612903816128c6565b809150509250929050565b60008060006060848603121561292357600080fd5b505081359360208301359350604090920135919050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561298b5781600019048211156129715761297161293a565b8085161561297e57918102915b93841c9390800290612955565b509250929050565b6000826129a2575060016108d4565b816129af575060006108d4565b81600181146129c557600281146129cf576129eb565b60019150506108d4565b60ff8411156129e0576129e061293a565b50506001821b6108d4565b5060208310610133831016604e8410600b8410161715612a0e575081810a6108d4565b612a188383612950565b8060001904821115612a2c57612a2c61293a565b029392505050565b600061122d60ff841683612993565b80820281158282048414176108d4576108d461293a565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600082612ae357634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215612afa57600080fd5b815161122d816128c6565b634e487b7160e01b600052600160045260246000fd5b818103818111156108d4576108d461293a565b808201808211156108d4576108d461293a565b600060208284031215612b5357600080fd5b505191905056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220e336f1712ee2f35f0da9dd9d35900aacab3ffe5878e2b3907467d9f69164e06264736f6c63430008130033

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061035d5760003560e01c80637220cf39116101d3578063b1b6524611610104578063e8f620b1116100a2578063f4034e4b1161007c578063f4034e4b1461075b578063f7a62fe91461076e578063fabe62831461078e578063fea2de43146107a157600080fd5b8063e8f620b114610736578063ea6ef2fe1461073f578063f2fde38b1461074857600080fd5b8063d348b409116100de578063d348b409146106dd578063d937e60d146106e5578063dd62ed3e146106f4578063e0cfcc951461072d57600080fd5b8063b1b65246146106ba578063b37659a4146106c2578063c9567bf9146106d557600080fd5b80639d75502611610171578063a3a2e89e1161014b578063a3a2e89e14610626578063a8fb66b414610639578063a9059cbb1461069e578063aa98e163146106b157600080fd5b80639d75502614610601578063a0e571a21461060a578063a13cef3a1461061357600080fd5b80638b42507f116101ad5780638b42507f146105a65780638da5cb5b146105c957806390825c28146105da57806395d89b41146105e257600080fd5b80637220cf39146105815780637796ff371461058a5780637db1342c1461059357600080fd5b80633410fe6e116102ad578063599270441161024b5780636ebcf607116102255780636ebcf6071461051d57806370a082311461053d57806371073b3814610566578063715018a61461057957600080fd5b806359927044146105015780635f81a57c1461051457806362ff2e9a1461045d57600080fd5b80634626402b116102875780634626402b1461049057806349ce234c146104bb57806351c6590a146104db578063571ac8b0146104ee57600080fd5b80633410fe6e1461045d5780633eaaf86b146104655780633f4218e01461046d57600080fd5b80631f02a29c1161031a57806323b872dd116102f457806323b872dd1461042657806325fa0b98146104395780632b112e4914610446578063313ce5671461044e57600080fd5b80631f02a29c146103ed5780631f2c80f11461040057806321ecff5b1461041357600080fd5b806306fdde03146103625780630910a5101461039d578063095ea7b3146103af57806318160ddd146103d25780631a686502146103da5780631d6bdb5b146103e3575b600080fd5b60408051808201909152600d81526c42414e4b204f462042414e4b5360981b60208201525b604051610394919061276d565b60405180910390f35b600f545b604051908152602001610394565b6103c26103bd3660046127d7565b6107b4565b6040519015158152602001610394565b6103a16108da565b6103a1600f5481565b6103eb6108fb565b005b6103a16103fb366004612801565b610ae6565b6103eb61040e36600461281c565b610b33565b6103eb61042136600461284f565b610c08565b6103c2610434366004612871565b610ce5565b6011546103c29060ff1681565b6103a1610d07565b60405160098152602001610394565b6103a1606481565b6103a1610d5a565b6103c261047b366004612801565b60056020526000908152604090205460ff1681565b600c546104a3906001600160a01b031681565b6040516001600160a01b039091168152602001610394565b6103a16104c93660046128ad565b60126020526000908152604090205481565b6103eb6104e93660046128ad565b610d77565b6103c26104fc366004612801565b610f92565b600b546104a3906001600160a01b031681565b6103a160135481565b6103a161052b366004612801565b60036020526000908152604090205481565b6103a161054b366004612801565b6001600160a01b031660009081526003602052604090205490565b6103a16105743660046128ad565b610fa0565b6103eb610fe6565b6103a160145481565b6103a1600e5481565b6103eb6105a13660046128ad565b61105a565b6103c26105b4366004612801565b60086020526000908152604090205460ff1681565b6000546001600160a01b03166104a3565b6103a1611153565b6040805180820190915260038152622127a160e91b6020820152610387565b6103a160065481565b6103a160075481565b6103a16106213660046128ad565b611181565b6103eb6106343660046128d7565b6111cb565b6106766106473660046128ad565b601660205260009081526040902080546001820154600283015460038401546004909401549293919290919085565b604080519586526020860194909452928401919091526060830152608082015260a001610394565b6103c26106ac3660046127d7565b611220565b6103a1600a5481565b6103a1611234565b6103c26106d036600461290e565b611322565b6103eb6119c6565b6103a1611a91565b6103a1670de0b6b3a764000081565b6103a161070236600461281c565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b6103a160095481565b6103a160105481565b6103a1600d5481565b6103eb610756366004612801565b611b03565b6103eb61076936600461284f565b611bed565b6103a161077c3660046128ad565b60156020526000908152604090205481565b6103eb61079c3660046128d7565b611c7b565b6103c26107af36600461290e565b611cd0565b60006001600160a01b03831661081c5760405162461bcd60e51b815260206004820152602260248201527f53524732303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084015b60405180910390fd5b336108755760405162461bcd60e51b8152602060048201526024808201527f53524732303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610813565b3360008181526004602090815260408083206001600160a01b03881680855290835292819020869055518581529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35060015b92915050565b60006108e86009600a612a34565b6108f6906305f5e100612a43565b905090565b60026001540361091d5760405162461bcd60e51b815260040161081390612a5a565b60026001556000546001600160a01b0316331461094c5760405162461bcd60e51b815260040161081390612a91565b600b54600d54600a5460009273cd682ef09d07668d49a8103ddd65ff54aebfbfde9263a9059cbb926001600160a01b039092169160649161098c91612a43565b6109969190612ac6565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af11580156109e1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a059190612ae8565b600c54600e54600a5492935060009273cd682ef09d07668d49a8103ddd65ff54aebfbfde9263a9059cbb926001600160a01b0390911691606491610a4891612a43565b610a529190612ac6565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015610a9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac19190612ae8565b9050818015610acd5750805b610ad957610ad9612b05565b50506000600a5560018055565b6000610af0611234565b3060009081526003602052604080822054600f546001600160a01b03871684529190922054610b1f9190612a43565b610b299190612ac6565b6108d49190612a43565b6000546001600160a01b03163314610b5d5760405162461bcd60e51b815260040161081390612a91565b6001600160a01b03821615801590610b7d57506001600160a01b03811615155b610bda5760405162461bcd60e51b815260206004820152602860248201527f4e65772077616c6c657473206d757374206e6f7420626520746865205a45524f604482015267206164647265737360c01b6064820152608401610813565b600b80546001600160a01b039384166001600160a01b031991821617909155600c8054929093169116179055565b6000546001600160a01b03163314610c325760405162461bcd60e51b815260040161081390612a91565b605a8210158015610c445750605a8110155b8015610c51575060648211155b8015610c5e575060648111155b610c9e5760405162461bcd60e51b815260206004820152601160248201527008ccacae640c2e4ca40e8dede40d0d2ced607b1b6044820152606401610813565b6007829055600681905560408051838152602081018390527fc19ebd395193e8ddaaeda048fb5cb09d4e2dbebcce719174166029a409387856910160405180910390a15050565b600033610cf3858285612338565b610cfe8585856123d1565b95945050505050565b61dead600090815260036020527f262bb27bbdd95c1cdc8e16957e36e38579ea44f7f6413dd7a9c75939def06b2c54610d426009600a612a34565b610d50906305f5e100612a43565b6108f69190612b1b565b610d666009600a612a34565b610d74906305f5e100612a43565b81565b6000546001600160a01b03163314610da15760405162461bcd60e51b815260040161081390612a91565b600f5430600090815260036020526040812054909190610dc2908490612a43565b610dcc9190612ac6565b33600090815260036020526040902054909150811115610e235760405162461bcd60e51b81526020600482015260126024820152714e6f7420656e6f75676820746f6b656e732160701b6044820152606401610813565b60405163a9059cbb60e01b81523060048201526024810183905260009073cd682ef09d07668d49a8103ddd65ff54aebfbfde9063a9059cbb906044016020604051808303816000875af1158015610e7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea29190612ae8565b905080610ef15760405162461bcd60e51b815260206004820152601d60248201527f535247207472616e736665722077617320756e73756363657366756c210000006044820152606401610813565b600f54610efe8482612b2e565b600f553060009081526003602052604081208054859290610f20908490612b2e565b90915550503360009081526003602052604081208054859290610f44908490612b1b565b9091555050600f546010548291610f5a91612a43565b610f649190612ac6565b60105560405183815230903390600080516020612b5b8339815191529060200160405180910390a350505050565b60006108d4826000196107b4565b60008082600f54610fb19190612b1b565b601054610fbe9190612ac6565b90506000600f54601054610fd29190612ac6565b9050610fde8183612b1b565b949350505050565b6000546001600160a01b031633146110105760405162461bcd60e51b815260040161081390612a91565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146110845760405162461bcd60e51b815260040161081390612a91565b60646110926009600a612a34565b6110a0906305f5e100612a43565b6110aa9190612ac6565b8110156111185760405162461bcd60e51b815260206004820152603660248201527f4e65772077616c6c6574206c696d69742073686f756c64206265206174206c65604482015275617374203125206f6620746f74616c20737570706c7960501b6064820152608401610813565b60098190556040518181527fb579b5ff4decd3791f679ec8d72f16128df08aa3f346b425480a0135d2e8bf759060200160405180910390a150565b600061115d611234565b611165611a91565b61116d610d07565b6111779190612a43565b6108f69190612a43565b30600090815260036020526040812054601054829161119f91612ac6565b30600090815260036020526040812054919250906111be908590612b2e565b601054610fd29190612ac6565b6000546001600160a01b031633146111f55760405162461bcd60e51b815260040161081390612a91565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b600061122d3384846123d1565b9392505050565b600073cd682ef09d07668d49a8103ddd65ff54aebfbfde6001600160a01b031663f2220c9e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611288573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ac9190612b41565b73cd682ef09d07668d49a8103ddd65ff54aebfbfde6001600160a01b031663d348b4096040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111779190612b41565b60006002600154036113465760405162461bcd60e51b815260040161081390612a5a565b60026001554283101561138e5760405162461bcd60e51b815260206004820152601060248201526f111958591b1a5b99481156141254915160821b6044820152606401610813565b3360009081526017602052604090205443900361140a5760405162461bcd60e51b815260206004820152603460248201527f427579696e6720616e642073656c6c696e6720696e207468652073616d6520626044820152736c6f636b206973206e6f7420616c6c6f7765642160601b6064820152608401610813565b336000818152600360205260409020548511156114695760405162461bcd60e51b815260206004820152601e60248201527f63616e6e6f742073656c6c2061626f766520746f6b656e20616d6f756e7400006044820152606401610813565b30600090815260036020526040812054611484908790612b2e565b6010546114919190612ac6565b600f5461149e9190612b1b565b90506000606460065460646114b39190612b1b565b6114bd9084612a43565b6114c79190612ac6565b905060006114d58284612b1b565b9050858310156115275760405162461bcd60e51b815260206004820152601a60248201527f494e53554646494349454e54204f555450555420414d4f554e540000000000006044820152606401610813565b3360009081526005602052604081205460ff166115bf5760405163a9059cbb60e01b81523360048201526024810183905273cd682ef09d07668d49a8103ddd65ff54aebfbfde9063a9059cbb906044016020604051808303816000875af1158015611596573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115ba9190612ae8565b61163b565b60405163a9059cbb60e01b81523360048201526024810185905273cd682ef09d07668d49a8103ddd65ff54aebfbfde9063a9059cbb906044016020604051808303816000875af1158015611617573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061163b9190612ae8565b9050806116805760405162461bcd60e51b815260206004820152601360248201527214d491c81d1c985b9cd9995c8819985a5b1959606a1b6044820152606401610813565b6001600160a01b0385166000908152600360205260409020546116a4908a90612b1b565b6001600160a01b03861660009081526003602090815260408083209390935533825260059052205460ff166116e65782600a546116e19190612b2e565b6116ea565b600a545b600a55600f546116fb908590612b1b565b600f5530600090815260036020526040902054611719908a90612b2e565b306000908152600360205260408120919091554290611736611234565b6117409087612a43565b905080601360008282546117549190612b2e565b909155505060008281526012602052604081208054839290611777908490612b2e565b925050819055506001601460008282546117919190612b2e565b909155505060145460009081526015602052604081208390556117b2611234565b6117ba611a91565b6117c49190612a43565b6000848152601660205260408120858155600101549192500361183457601660006015600060016014546117f89190612b1b565b81526020019081526020016000205481526020019081526020016000206002015460166000858152602001908152602001600020600101819055505b600083815260166020526040902060028101829055600301548111806118695750600083815260166020526040902060030154155b156118835760008381526016602052604090206003018190555b6000838152601660205260409020600401548110806118b15750600083815260166020526040902060040154155b156118cb5760008381526016602052604090206004018190555b6040518c815230906001600160a01b038a1690600080516020612b5b8339815191529060200160405180910390a33360009081526005602052604090205460ff161561195b57604080518d815260208101899052908101839052339030907f9be8a5ca22b7e6e81f04b5879f0248227bb770114291bd47dfaee4c3a82ad60e9060600160405180910390a36119b1565b33307f9be8a5ca22b7e6e81f04b5879f0248227bb770114291bd47dfaee4c3a82ad60e8e88611988611234565b611992908b612a43565b6040805193845260208401929092529082015260600160405180910390a35b505060018080559a9950505050505050505050565b6002600154036119e85760405162461bcd60e51b815260040161081390612a5a565b60026001556000546001600160a01b03163314611a175760405162461bcd60e51b815260040161081390612a91565b60115460ff1615611a7d5760405162461bcd60e51b815260206004820152602a60248201527f596f752063616e6e6f742064697361626c652074726164696e6720616674657260448201526920656e61626c696e672160b01b6064820152608401610813565b6011805460ff191660019081179091558055565b600080600f5411611ad35760405162461bcd60e51b815260206004820152600c60248201526b4e6f204c697175696469747960a01b6044820152606401610813565b30600090815260036020526040902054600f54611af990670de0b6b3a764000090612a43565b6108f69190612ac6565b6000546001600160a01b03163314611b2d5760405162461bcd60e51b815260040161081390612a91565b6001600160a01b038116611b925760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610813565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611c175760405162461bcd60e51b815260040161081390612a91565b6064611c238284612b2e565b14611c705760405162461bcd60e51b815260206004820152601960248201527f53756d206f6620736861726573206d75737420626520313030000000000000006044820152606401610813565b600d91909155600e55565b6000546001600160a01b03163314611ca55760405162461bcd60e51b815260040161081390612a91565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6000600260015403611cf45760405162461bcd60e51b815260040161081390612a5a565b600260015542821015611d3c5760405162461bcd60e51b815260206004820152601060248201526f111958591b1a5b99481156141254915160821b6044820152606401610813565b336000818152601760205260409020439055600f54611d9d5760405162461bcd60e51b815260206004820152601a60248201527f54686520746f6b656e20686173206e6f206c69717569646974790000000000006044820152606401610813565b60115460ff1680611dc657506001600160a01b03811660009081526008602052604090205460ff165b611e085760405162461bcd60e51b81526020600482015260136024820152722a3930b234b7339034b9903737ba1027b832b760691b6044820152606401610813565b6001600160a01b03811660009081526005602052604081205460ff16611e4757606460075487611e389190612a43565b611e429190612ac6565b611e49565b855b90506000600f5482611e5b9190612b2e565b601054611e689190612ac6565b30600090815260036020526040902054611e829190612b1b565b6009546001600160a01b03851660009081526003602052604090205491925090611ead908390612b2e565b111580611ed257506001600160a01b03831660009081526008602052604090205460ff165b611f145760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610813565b60018111611f705760405162461bcd60e51b815260206004820152602360248201527f53524732303a204d75737420427579206d6f7265207468616e203120646563696044820152621b585b60ea1b6064820152608401610813565b85811015611fc05760405162461bcd60e51b815260206004820152601a60248201527f494e53554646494349454e54204f555450555420414d4f554e540000000000006044820152606401610813565b6040516323b872dd60e01b81526001600160a01b03841660048201523060248201526044810188905260009073cd682ef09d07668d49a8103ddd65ff54aebfbfde906323b872dd906064016020604051808303816000875af115801561202a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061204e9190612ae8565b90508061209d5760405162461bcd60e51b815260206004820152601760248201527f7472616e73666572206f6620535247206661696c6564210000000000000000006044820152606401610813565b6120a733836125e4565b60006120b3848a612b1b565b905080600a546120c39190612b2e565b600a55600f546120d4908590612b2e565b600f554260006120e2611234565b6120ec908c612a43565b905080601360008282546121009190612b2e565b909155505060008281526012602052604081208054839290612123908490612b2e565b9250508190555060016014600082825461213d9190612b2e565b9091555050601454600090815260156020526040812083905561215e611234565b612166611a91565b6121709190612a43565b60008481526016602052604081208581556001015491925003612245576014546001036121f25761219f611234565b6121ab6009600a612a34565b6121b9906305f5e100612a43565b88600f546121c79190612b1b565b6121d19190612ac6565b6121db9190612a43565b600084815260166020526040902060010155612245565b601660006015600060016014546122099190612b1b565b81526020019081526020016000205481526020019081526020016000206002015460166000858152602001908152602001600020600101819055505b6000838152601660205260409020600281018290556003015481118061227a5750600083815260166020526040902060030154155b156122945760008381526016602052604090206003018190555b6000838152601660205260409020600401548110806122c25750600083815260166020526040902060040154155b156122dc5760008381526016602052604090206004018190555b60405186815233903090600080516020612b5b8339815191529060200160405180910390a330337f7ce543d1780f3bdc3dac42da06c95da802653cd1b212b8d74ec3e3c33ad7095c888f61232e611234565b611992908d612a43565b6001600160a01b0380841660009081526004602090815260408083209386168352929052205460001981146123cb57818110156123b75760405162461bcd60e51b815260206004820152601d60248201527f53524732303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610813565b6123cb84846123c68585612b1b565b612649565b50505050565b60006001600160a01b038316158015906123f457506001600160a01b0383163014155b61244b5760405162461bcd60e51b815260206004820152602260248201527f7472616e7366657220746f20746865207a65726f2061646472657373206f7220604482015261434160f01b6064820152608401610813565b600082116124ad5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610813565b6001600160a01b03831660009081526008602052604090205460ff16806124f957506009546001600160a01b0384166000908152600360205260409020546124f6908490612b2e565b11155b61253c5760405162461bcd60e51b81526020600482015260146024820152734d61782077616c6c65742065786365656465642160601b6044820152606401610813565b6001600160a01b038416600090815260036020526040902054612560908390612b1b565b6001600160a01b038086166000908152600360205260408082209390935590851681522054612590908390612b2e565b6001600160a01b038085166000818152600360205260409081902093909355915190861690600080516020612b5b833981519152906125d29086815260200190565b60405180910390a35060019392505050565b6001600160a01b038216600090815260036020526040902054612608908290612b2e565b6001600160a01b038316600090815260036020526040808220929092553081522054612635908290612b1b565b306000908152600360205260409020555050565b6001600160a01b0383166126ab5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610813565b6001600160a01b03821661270c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610813565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600060208083528351808285015260005b8181101561279a5785810183015185820160400152820161277e565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146127d257600080fd5b919050565b600080604083850312156127ea57600080fd5b6127f3836127bb565b946020939093013593505050565b60006020828403121561281357600080fd5b61122d826127bb565b6000806040838503121561282f57600080fd5b612838836127bb565b9150612846602084016127bb565b90509250929050565b6000806040838503121561286257600080fd5b50508035926020909101359150565b60008060006060848603121561288657600080fd5b61288f846127bb565b925061289d602085016127bb565b9150604084013590509250925092565b6000602082840312156128bf57600080fd5b5035919050565b80151581146128d457600080fd5b50565b600080604083850312156128ea57600080fd5b6128f3836127bb565b91506020830135612903816128c6565b809150509250929050565b60008060006060848603121561292357600080fd5b505081359360208301359350604090920135919050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561298b5781600019048211156129715761297161293a565b8085161561297e57918102915b93841c9390800290612955565b509250929050565b6000826129a2575060016108d4565b816129af575060006108d4565b81600181146129c557600281146129cf576129eb565b60019150506108d4565b60ff8411156129e0576129e061293a565b50506001821b6108d4565b5060208310610133831016604e8410600b8410161715612a0e575081810a6108d4565b612a188383612950565b8060001904821115612a2c57612a2c61293a565b029392505050565b600061122d60ff841683612993565b80820281158282048414176108d4576108d461293a565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600082612ae357634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215612afa57600080fd5b815161122d816128c6565b634e487b7160e01b600052600160045260246000fd5b818103818111156108d4576108d461293a565b808201808211156108d4576108d461293a565b600060208284031215612b5357600080fd5b505191905056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220e336f1712ee2f35f0da9dd9d35900aacab3ffe5878e2b3907467d9f69164e06264736f6c63430008130033

Deployed Bytecode Sourcemap

2708:18914:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6463:83;6533:5;;;;;;;;;;;;-1:-1:-1;;;6533:5:0;;;;6463:83;;;;;;;:::i;:::-;;;;;;;;17639:89;17711:9;;17639:89;;;713:25:1;;;701:2;686:18;17639:89:0;567:177:1;6740:450:0;;;;;;:::i;:::-;;:::i;:::-;;;1351:14:1;;1344:22;1326:41;;1314:2;1299:18;6740:450:0;1186:187:1;6030:102:0;;;:::i;4924:51::-;;;;;;19189:392;;;:::i;:::-;;17803:202;;;;;;:::i;:::-;;:::i;18804:377::-;;;;;;:::i;:::-;;:::i;18013:431::-;;;;;;:::i;:::-;;:::i;8297:335::-;;;;;;:::i;:::-;;:::i;5039:29::-;;;;;;;;;7328:118;;;:::i;6649:83::-;;;3442:1;2562:36:1;;2550:2;2535:18;6649:83:0;2420:184:1;4231:37:0;;4265:3;4231:37;;3887:61;;;:::i;4114:43::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;4566:74;;;;;-1:-1:-1;;;;;4566:74:0;;;;;;-1:-1:-1;;;;;2773:32:1;;;2755:51;;2743:2;2728:18;4566:74:0;2609:203:1;5102:39:0;;;;;;:::i;:::-;;;;;;;;;;;;;;20155:675;;;;;;:::i;:::-;;:::i;7198:122::-;;;;;;:::i;:::-;;:::i;4489:70::-;;;;;-1:-1:-1;;;;;4489:70:0;;;5148:30;;;;;;3974:44;;;;;;:::i;:::-;;;;;;;;;;;;;;6140:119;;;;;;:::i;:::-;-1:-1:-1;;;;;6233:18:0;6206:7;6233:18;;;:9;:18;;;;;;;6140:119;19589:287;;;;;;:::i;:::-;;:::i;2264:148::-;;;:::i;5258:22::-;;;;;;4703:33;;;;;;7454:284;;;;;;:::i;:::-;;:::i;4305:47::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2050:79;2088:7;2115:6;-1:-1:-1;;;;;2115:6:0;2050:79;;20838:141;;;:::i;6554:87::-;6626:7;;;;;;;;;;;;-1:-1:-1;;;6626:7:0;;;;6554:87;;4164:27;;;;;;4198:26;;;;;;19884:263;;;;;;:::i;:::-;;:::i;7746:122::-;;;;;;:::i;:::-;;:::i;5492:54::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3704:25:1;;;3760:2;3745:18;;3738:34;;;;3788:18;;;3781:34;;;;3846:2;3831:18;;3824:34;3889:3;3874:19;;3867:35;3691:3;3676:19;5492:54:0;3445:463:1;8067:188:0;;;;;;:::i;:::-;;:::i;4432:29::-;;;;;;21035:171;;;:::i;14218:3369::-;;;;;;:::i;:::-;;:::i;21453:166::-;;;:::i;21268:177::-;;;:::i;5211:40::-;;5245:6;5211:40;;6267:188;;;;;;:::i;:::-;-1:-1:-1;;;;;6419:19:0;;;6387:7;6419:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;6267:188;4359:42;;;;;;4982:50;;;;;;4667:29;;;;;;2420:281;;;;;;:::i;:::-;;:::i;18452:344::-;;;;;;:::i;:::-;;:::i;5287:46::-;;;;;;:::i;:::-;;;;;;;;;;;;;;7876:153;;;;;;:::i;:::-;;:::i;10525:3361::-;;;;;;:::i;:::-;;:::i;6740:450::-;6842:4;-1:-1:-1;;;;;6872:21:0;;6864:68;;;;-1:-1:-1;;;6864:68:0;;4436:2:1;6864:68:0;;;4418:21:1;4475:2;4455:18;;;4448:30;4514:34;4494:18;;;4487:62;-1:-1:-1;;;4565:18:1;;;4558:32;4607:19;;6864:68:0;;;;;;;;;6965:10;6943:110;;;;-1:-1:-1;;;6943:110:0;;4839:2:1;6943:110:0;;;4821:21:1;4878:2;4858:18;;;4851:30;4917:34;4897:18;;;4890:62;-1:-1:-1;;;4968:18:1;;;4961:34;5012:19;;6943:110:0;4637:400:1;6943:110:0;7078:10;7066:23;;;;:11;:23;;;;;;;;-1:-1:-1;;;;;7066:32:0;;;;;;;;;;;;:41;;;7123:37;713:25:1;;;7066:32:0;;7078:10;7123:37;;686:18:1;7123:37:0;;;;;;;-1:-1:-1;7178:4:0;6740:450;;;;;:::o;6030:102::-;6085:7;3492:13;3442:1;3492:2;:13;:::i;:::-;3926:22;;:5;:22;:::i;:::-;6105:19;;6030:102;:::o;19189:392::-;251:1;397:7;;:19;389:63;;;;-1:-1:-1;;;389:63:0;;;;;;;:::i;:::-;251:1;463:7;:18;2177:6:::1;::::0;-1:-1:-1;;;;;2177:6:0::1;1680:10:::0;2177:22:::1;2169:67;;;;-1:-1:-1::0;;;2169:67:0::1;;;;;;;:::i;:::-;19304:10:::2;::::0;19343:9:::2;::::0;19330:10:::2;::::0;19262::::2;::::0;3566:42:::2;::::0;19275:14:::2;::::0;-1:-1:-1;;;;;19304:10:0;;::::2;::::0;4782:3:::2;::::0;19330:22:::2;::::0;::::2;:::i;:::-;19329:39;;;;:::i;:::-;19275:104;::::0;-1:-1:-1;;;;;;19275:104:0::2;::::0;;;;;;-1:-1:-1;;;;;7865:32:1;;;19275:104:0::2;::::0;::::2;7847:51:1::0;7914:18;;;7907:34;7820:18;;19275:104:0::2;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19432:14;::::0;19475:13:::2;::::0;19462:10:::2;::::0;19262:117;;-1:-1:-1;19390:10:0::2;::::0;3566:42:::2;::::0;19403:14:::2;::::0;-1:-1:-1;;;;;19432:14:0;;::::2;::::0;4782:3:::2;::::0;19462:26:::2;::::0;::::2;:::i;:::-;19461:43;;;;:::i;:::-;19403:112;::::0;-1:-1:-1;;;;;;19403:112:0::2;::::0;;;;;;-1:-1:-1;;;;;7865:32:1;;;19403:112:0::2;::::0;::::2;7847:51:1::0;7914:18;;;7907:34;7820:18;;19403:112:0::2;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19390:125;;19533:5;:14;;;;;19542:5;19533:14;19526:22;;;;:::i;:::-;-1:-1:-1::0;;19572:1:0::2;19559:10;:14:::0;207:1;504:22;;19189:392::o;17803:202::-;17868:7;17984:13;:11;:13::i;:::-;17961:4;17943:24;;;;:9;:24;;;;;;;17930:9;;-1:-1:-1;;;;;17910:17:0;;;;;;;;;:29;;17930:9;17910:29;:::i;:::-;17909:58;;;;:::i;:::-;17908:89;;;;:::i;18804:377::-;2177:6;;-1:-1:-1;;;;;2177:6:0;1680:10;2177:22;2169:67;;;;-1:-1:-1;;;2169:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18959:27:0;::::1;::::0;;::::1;::::0;:62:::1;;-1:-1:-1::0;;;;;;18990:31:0;::::1;::::0;::::1;18959:62;18937:152;;;::::0;-1:-1:-1;;;18937:152:0;;8536:2:1;18937:152:0::1;::::0;::::1;8518:21:1::0;8575:2;8555:18;;;8548:30;8614:34;8594:18;;;8587:62;-1:-1:-1;;;8665:18:1;;;8658:38;8713:19;;18937:152:0::1;8334:404:1::0;18937:152:0::1;19102:10;:26:::0;;-1:-1:-1;;;;;19102:26:0;;::::1;-1:-1:-1::0;;;;;;19102:26:0;;::::1;;::::0;;;19139:14:::1;:34:::0;;;;;::::1;::::0;::::1;;::::0;;18804:377::o;18013:431::-;2177:6;;-1:-1:-1;;;;;2177:6:0;1680:10;2177:22;2169:67;;;;-1:-1:-1;;;2169:67:0;;;;;;;:::i;:::-;18160:2:::1;18147:9;:15;;:52;;;;;18197:2;18183:10;:16;;18147:52;:89;;;;;18233:3;18220:9;:16;;18147:89;:127;;;;;18271:3;18257:10;:17;;18147:127;18125:194;;;::::0;-1:-1:-1;;;18125:194:0;;8945:2:1;18125:194:0::1;::::0;::::1;8927:21:1::0;8984:2;8964:18;;;8957:30;-1:-1:-1;;;9003:18:1;;;8996:47;9060:18;;18125:194:0::1;8743:341:1::0;18125:194:0::1;18332:6;:18:::0;;;18361:7:::1;:20:::0;;;18399:37:::1;::::0;;9263:25:1;;;9319:2;9304:18;;9297:34;;;18399:37:0::1;::::0;9236:18:1;18399:37:0::1;;;;;;;18013:431:::0;;:::o;8297:335::-;8431:4;8466:10;8526:40;8542:6;8466:10;8559:6;8526:15;:40::i;:::-;8584;8598:6;8606:9;8617:6;8584:13;:40::i;:::-;8577:47;8297:335;-1:-1:-1;;;;;8297:335:0:o;7328:118::-;4847:42;7381:7;7423:15;;;:9;:15;;;;3492:13;3442:1;3492:2;:13;:::i;:::-;3926:22;;:5;:22;:::i;:::-;7408:30;;;;:::i;3887:61::-;3492:13;3442:1;3492:2;:13;:::i;:::-;3926:22;;:5;:22;:::i;:::-;3887:61;:::o;20155:675::-;2177:6;;-1:-1:-1;;;;;2177:6:0;1680:10;2177:22;2169:67;;;;-1:-1:-1;;;2169:67:0;;;;;;;:::i;:::-;20308:9:::1;::::0;20270:4:::1;20229:19;20252:24:::0;;;:9:::1;:24;::::0;;;;;20229:19;;20308:9;20252:39:::1;::::0;20279:12;;20252:39:::1;:::i;:::-;20251:66;;;;:::i;:::-;20346:10;20336:21;::::0;;;:9:::1;:21;::::0;;;;;20229:88;;-1:-1:-1;20336:36:0;-1:-1:-1;20336:36:0::1;20328:67;;;::::0;-1:-1:-1;;;20328:67:0;;9677:2:1;20328:67:0::1;::::0;::::1;9659:21:1::0;9716:2;9696:18;;;9689:30;-1:-1:-1;;;9735:18:1;;;9728:48;9793:18;;20328:67:0::1;9475:342:1::0;20328:67:0::1;20420:43;::::0;-1:-1:-1;;;20420:43:0;;20443:4:::1;20420:43;::::0;::::1;7847:51:1::0;7914:18;;;7907:34;;;20408:9:0::1;::::0;3566:42:::1;::::0;20420:14:::1;::::0;7820:18:1;;20420:43:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20408:55;;20482:4;20474:46;;;::::0;-1:-1:-1;;;20474:46:0;;10024:2:1;20474:46:0::1;::::0;::::1;10006:21:1::0;10063:2;10043:18;;;10036:30;10102:31;10082:18;;;10075:59;10151:18;;20474:46:0::1;9822:353:1::0;20474:46:0::1;20550:9;::::0;20582:24:::1;20594:12:::0;20550:9;20582:24:::1;:::i;:::-;20570:9;:36:::0;20635:4:::1;20617:24;::::0;;;:9:::1;:24;::::0;;;;:39;;20645:11;;20617:24;:39:::1;::::0;20645:11;;20617:39:::1;:::i;:::-;::::0;;;-1:-1:-1;;20677:10:0::1;20667:21;::::0;;;:9:::1;:21;::::0;;;;:36;;20692:11;;20667:21;:36:::1;::::0;20692:11;;20667:36:::1;:::i;:::-;::::0;;;-1:-1:-1;;20737:9:0::1;::::0;20726:8:::1;::::0;20750:6;;20726:20:::1;::::0;::::1;:::i;:::-;20725:31;;;;:::i;:::-;20714:8;:42:::0;20774:48:::1;::::0;713:25:1;;;20803:4:0::1;::::0;20783:10:::1;::::0;-1:-1:-1;;;;;;;;;;;20774:48:0;701:2:1;686:18;20774:48:0::1;;;;;;;20218:612;;;20155:675:::0;:::o;7198:122::-;7253:4;7277:35;7285:7;-1:-1:-1;;7277:7:0;:35::i;19589:287::-;19687:7;19712:19;19758:11;19746:9;;:23;;;;:::i;:::-;19734:8;;:36;;;;:::i;:::-;19712:58;;19781:20;19815:9;;19804:8;;:20;;;;:::i;:::-;19781:43;-1:-1:-1;19842:26:0;19781:43;19842:11;:26;:::i;:::-;19835:33;19589:287;-1:-1:-1;;;;19589:287:0:o;2264:148::-;2177:6;;-1:-1:-1;;;;;2177:6:0;1680:10;2177:22;2169:67;;;;-1:-1:-1;;;2169:67:0;;;;;;;:::i;:::-;2371:1:::1;2355:6:::0;;2334:40:::1;::::0;-1:-1:-1;;;;;2355:6:0;;::::1;::::0;2334:40:::1;::::0;2371:1;;2334:40:::1;2402:1;2385:19:::0;;-1:-1:-1;;;;;;2385:19:0::1;::::0;;2264:148::o;7454:284::-;2177:6;;-1:-1:-1;;;;;2177:6:0;1680:10;2177:22;2169:67;;;;-1:-1:-1;;;2169:67:0;;;;;;;:::i;:::-;7578:3:::1;3492:13;3442:1;3492:2;:13;:::i;:::-;3926:22;::::0;:5:::1;:22;:::i;:::-;7563:18;;;;:::i;:::-;7551:8;:30;;7529:134;;;::::0;-1:-1:-1;;;7529:134:0;;10512:2:1;7529:134:0::1;::::0;::::1;10494:21:1::0;10551:2;10531:18;;;10524:30;10590:34;10570:18;;;10563:62;-1:-1:-1;;;10641:18:1;;;10634:52;10703:19;;7529:134:0::1;10310:418:1::0;7529:134:0::1;7674:6;:17:::0;;;7707:23:::1;::::0;713:25:1;;;7707:23:0::1;::::0;701:2:1;686:18;7707:23:0::1;;;;;;;7454:284:::0;:::o;20838:141::-;20885:7;20957:13;:11;:13::i;:::-;20938:16;:14;:16::i;:::-;20913:22;:20;:22::i;:::-;:41;;;;:::i;:::-;:57;;;;:::i;19884:263::-;20017:4;19948:7;19999:24;;;:9;:24;;;;;;19988:8;;19948:7;;19988:35;;;:::i;:::-;20083:4;20034:16;20065:24;;;:9;:24;;;;;;19968:55;;-1:-1:-1;20034:16:0;20065:35;;20092:8;;20065:35;:::i;:::-;20053:8;;:48;;;;:::i;7746:122::-;2177:6;;-1:-1:-1;;;;;2177:6:0;1680:10;2177:22;2169:67;;;;-1:-1:-1;;;2169:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7832:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;7832:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;7746:122::o;8067:188::-;8174:4;8203:44;8217:10;8229:9;8240:6;8203:13;:44::i;:::-;8196:51;8067:188;-1:-1:-1;;;8067:188:0:o;21035:171::-;21079:7;3566:42;-1:-1:-1;;;;;21131:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3566:42;-1:-1:-1;;;;;21107:19:0;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;14218:3369::-;14354:4;251:1;397:7;;:19;389:63;;;;-1:-1:-1;;;389:63:0;;;;;;;:::i;:::-;251:1;463:7;:18;14424:15:::1;14412:27:::0;::::1;;14404:56;;;::::0;-1:-1:-1;;;14404:56:0;;11124:2:1;14404:56:0::1;::::0;::::1;11106:21:1::0;11163:2;11143:18;;;11136:30;-1:-1:-1;;;11182:18:1;;;11175:46;11238:18;;14404:56:0::1;10922:340:1::0;14404:56:0::1;14535:10;14521:25;::::0;;;:13:::1;:25;::::0;;;;;14550:12:::1;14521:41:::0;;14499:143:::1;;;::::0;-1:-1:-1;;;14499:143:0;;11469:2:1;14499:143:0::1;::::0;::::1;11451:21:1::0;11508:2;11488:18;;;11481:30;11547:34;11527:18;;;11520:62;-1:-1:-1;;;11598:18:1;;;11591:50;11658:19;;14499:143:0::1;11267:416:1::0;14499:143:0::1;14672:10;14655:14;14763:17:::0;;;:9:::1;:17;::::0;;;;;:32;-1:-1:-1;14763:32:0::1;14741:112;;;::::0;-1:-1:-1;;;14741:112:0;;11890:2:1;14741:112:0::1;::::0;::::1;11872:21:1::0;11929:2;11909:18;;;11902:30;11968:32;11948:18;;;11941:60;12018:18;;14741:112:0::1;11688:354:1::0;14741:112:0::1;14994:4;14918:17;14976:24:::0;;;:9:::1;:24;::::0;;;;;:38:::1;::::0;15003:11;;14976:38:::1;:::i;:::-;14964:8;;:51;;;;:::i;:::-;14938:9;;:78;;;;:::i;:::-;14918:98;;15027:17;4265:3;15071:7;;4265:3;15061:17;;;;:::i;:::-;15048:31;::::0;:9;:31:::1;:::i;:::-;15047:43;;;;:::i;:::-;15027:63:::0;-1:-1:-1;15101:17:0::1;15121:21;15027:63:::0;15121:9;:21:::1;:::i;:::-;15101:41;;15203:9;15190;:22;;15182:61;;;::::0;-1:-1:-1;;;15182:61:0;;12249:2:1;15182:61:0::1;::::0;::::1;12231:21:1::0;12288:2;12268:18;;;12261:30;12327:28;12307:18;;;12300:56;12373:18;;15182:61:0::1;12047:350:1::0;15182:61:0::1;15319:10;15289:15;15307:23:::0;;;:11:::1;:23;::::0;;;;;::::1;;:129;;15399:37;::::0;-1:-1:-1;;;15399:37:0;;15414:10:::1;15399:37;::::0;::::1;7847:51:1::0;7914:18;;;7907:34;;;3566:42:0::1;::::0;15399:14:::1;::::0;7820:18:1;;15399:37:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15307:129;;;15346:37;::::0;-1:-1:-1;;;15346:37:0;;15361:10:::1;15346:37;::::0;::::1;7847:51:1::0;7914:18;;;7907:34;;;3566:42:0::1;::::0;15346:14:::1;::::0;7820:18:1;;15346:37:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15289:147;;15455:10;15447:42;;;::::0;-1:-1:-1;;;15447:42:0;;12604:2:1;15447:42:0::1;::::0;::::1;12586:21:1::0;12643:2;12623:18;;;12616:30;-1:-1:-1;;;12662:18:1;;;12655:49;12721:18;;15447:42:0::1;12402:343:1::0;15447:42:0::1;-1:-1:-1::0;;;;;15567:17:0;::::1;;::::0;;;:9:::1;:17;::::0;;;;;:31:::1;::::0;15587:11;;15567:31:::1;:::i;:::-;-1:-1:-1::0;;;;;15547:17:0;::::1;;::::0;;;:9:::1;:17;::::0;;;;;;;:51;;;;15741:10:::1;15729:23:::0;;:11:::1;:23:::0;;;;::::1;;:87;;15807:9;15794:10;;:22;;;;:::i;:::-;15729:87;;;15768:10;;15729:87;15716:10;:100:::0;15839:9:::1;::::0;:21:::1;::::0;15851:9;;15839:21:::1;:::i;:::-;15827:9;:33:::0;15964:4:::1;15946:24;::::0;;;:9:::1;:24;::::0;;;;;:38:::1;::::0;15973:11;;15946:38:::1;:::i;:::-;15937:4;15919:24;::::0;;;:9:::1;:24;::::0;;;;:65;;;;16038:15:::1;::::0;16097:13:::1;:11;:13::i;:::-;16085:25;::::0;:9;:25:::1;:::i;:::-;16064:46;;16136:10;16121:11;;:25;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;16157:11:0::1;::::0;;;:4:::1;:11;::::0;;;;:25;;16172:10;;16157:11;:25:::1;::::0;16172:10;;16157:25:::1;:::i;:::-;;;;;;;;16240:1;16229:7;;:12;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;16264:7:0::1;::::0;16252:20:::1;::::0;;;:11:::1;:20;::::0;;;;:28;;;16327:13:::1;:11;:13::i;:::-;16308:16;:14;:16::i;:::-;:32;;;;:::i;:::-;16351:22;::::0;;;:15:::1;:22;::::0;;;;:35;;;16401:27:::1;;::::0;16291:49;;-1:-1:-1;16401:32:0;16397:174:::1;;16480:15;:73;16514:11;:24;16536:1;16526:7;;:11;;;;:::i;:::-;16514:24;;;;;;;;;;;;16480:73;;;;;;;;;;;:79;;;16450:15;:22;16466:5;16450:22;;;;;;;;;;;:27;;:109;;;;16397:174;16581:22;::::0;;;:15:::1;:22;::::0;;;;:28:::1;::::0;::::1;:37:::0;;;16649:27:::1;;::::0;:36;-1:-1:-1;16649:36:0;:85:::1;;-1:-1:-1::0;16702:22:0::1;::::0;;;:15:::1;:22;::::0;;;;:27:::1;;::::0;:32;16649:85:::1;16631:178;;;16761:22;::::0;;;:15:::1;:22;::::0;;;;:27:::1;;:36:::0;;;16631:178:::1;16839:22;::::0;;;:15:::1;:22;::::0;;;;:26:::1;;::::0;:35;-1:-1:-1;16839:35:0;:83:::1;;-1:-1:-1::0;16891:22:0::1;::::0;;;:15:::1;:22;::::0;;;;:26:::1;;::::0;:31;16839:83:::1;16821:175;;;16949:22;::::0;;;:15:::1;:22;::::0;;;;:26:::1;;:35:::0;;;16821:175:::1;17055:44;::::0;713:25:1;;;17080:4:0::1;::::0;-1:-1:-1;;;;;17055:44:0;::::1;::::0;-1:-1:-1;;;;;;;;;;;17055:44:0;701:2:1;686:18;17055:44:0::1;;;;;;;17126:10;17114:23;::::0;;;:11:::1;:23;::::0;;;;;::::1;;17110:448;;;17159:167;::::0;;12952:25:1;;;13008:2;12993:18;;12986:34;;;13036:18;;;13029:34;;;17214:10:0::1;::::0;17190:4:::1;::::0;17159:167:::1;::::0;12940:2:1;12925:18;17159:167:0::1;;;;;;;17110:448;;;17419:10;17395:4;17364:182;17448:11:::0;17478:9;17518:13:::1;:11;:13::i;:::-;17506:25;::::0;:9;:25:::1;:::i;:::-;17364:182;::::0;;12952:25:1;;;13008:2;12993:18;;12986:34;;;;13036:18;;;13029:34;12940:2;12925:18;17364:182:0::1;;;;;;;17110:448;-1:-1:-1::0;;17575:4:0::1;504:22:::0;;;17575:4;14218:3369;-1:-1:-1;;;;;;;;;;14218:3369:0:o;21453:166::-;251:1;397:7;;:19;389:63;;;;-1:-1:-1;;;389:63:0;;;;;;;:::i;:::-;251:1;463:7;:18;2177:6:::1;::::0;-1:-1:-1;;;;;2177:6:0::1;1680:10:::0;2177:22:::1;2169:67;;;;-1:-1:-1::0;;;2169:67:0::1;;;;;;;:::i;:::-;21528:9:::2;::::0;::::2;;21527:10;21519:65;;;::::0;-1:-1:-1;;;21519:65:0;;13276:2:1;21519:65:0::2;::::0;::::2;13258:21:1::0;13315:2;13295:18;;;13288:30;13354:34;13334:18;;;13327:62;-1:-1:-1;;;13405:18:1;;;13398:40;13455:19;;21519:65:0::2;13074:406:1::0;21519:65:0::2;21595:9;:16:::0;;-1:-1:-1;;21595:16:0::2;21607:4;21595:16:::0;;::::2;::::0;;;504:22;;21453:166::o;21268:177::-;21315:7;21355:1;21343:9;;:13;21335:38;;;;-1:-1:-1;;;21335:38:0;;13687:2:1;21335:38:0;;;13669:21:1;13726:2;13706:18;;;13699:30;-1:-1:-1;;;13745:18:1;;;13738:42;13797:18;;21335:38:0;13485:336:1;21335:38:0;21431:4;21413:24;;;;:9;:24;;;;;;21391:9;;:19;;5245:6;;21391:19;:::i;:::-;:46;;;;:::i;2420:281::-;2177:6;;-1:-1:-1;;;;;2177:6:0;1680:10;2177:22;2169:67;;;;-1:-1:-1;;;2169:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2523:22:0;::::1;2501:110;;;::::0;-1:-1:-1;;;2501:110:0;;14028:2:1;2501:110:0::1;::::0;::::1;14010:21:1::0;14067:2;14047:18;;;14040:30;14106:34;14086:18;;;14079:62;-1:-1:-1;;;14157:18:1;;;14150:36;14203:19;;2501:110:0::1;13826:402:1::0;2501:110:0::1;2648:6;::::0;;2627:38:::1;::::0;-1:-1:-1;;;;;2627:38:0;;::::1;::::0;2648:6;::::1;::::0;2627:38:::1;::::0;::::1;2676:6;:17:::0;;-1:-1:-1;;;;;;2676:17:0::1;-1:-1:-1::0;;;;;2676:17:0;;;::::1;::::0;;;::::1;::::0;;2420:281::o;18452:344::-;2177:6;;-1:-1:-1;;;;;2177:6:0;1680:10;2177:22;2169:67;;;;-1:-1:-1;;;2169:67:0;;;;;;;:::i;:::-;4782:3:::1;18608:31;18623:16:::0;18608:12;:31:::1;:::i;:::-;:47;18586:122;;;::::0;-1:-1:-1;;;18586:122:0;;14435:2:1;18586:122:0::1;::::0;::::1;14417:21:1::0;14474:2;14454:18;;;14447:30;14513:27;14493:18;;;14486:55;14558:18;;18586:122:0::1;14233:349:1::0;18586:122:0::1;18721:9;:24:::0;;;;18756:13:::1;:32:::0;18452:344::o;7876:153::-;2177:6;;-1:-1:-1;;;;;2177:6:0;1680:10;2177:22;2169:67;;;;-1:-1:-1;;;2169:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7989:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;7989:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;7876:153::o;10525:3361::-;10660:4;251:1;397:7;;:19;389:63;;;;-1:-1:-1;;;389:63:0;;;;;;;:::i;:::-;251:1;463:7;:18;10730:15:::1;10718:27:::0;::::1;;10710:56;;;::::0;-1:-1:-1;;;10710:56:0;;11124:2:1;10710:56:0::1;::::0;::::1;11106:21:1::0;11163:2;11143:18;;;11136:30;-1:-1:-1;;;11182:18:1;;;11175:46;11238:18;;10710:56:0::1;10922:340:1::0;10710:56:0::1;10793:10;10777:13;10841:20:::0;;;:13:::1;:20;::::0;;;;10864:12:::1;10841:35:::0;;10926:9:::1;::::0;10918:52:::1;;;::::0;-1:-1:-1;;;10918:52:0;;14789:2:1;10918:52:0::1;::::0;::::1;14771:21:1::0;14828:2;14808:18;;;14801:30;14867:28;14847:18;;;14840:56;14913:18;;10918:52:0::1;14587:350:1::0;10918:52:0::1;11042:9;::::0;::::1;;::::0;:35:::1;;-1:-1:-1::0;;;;;;11055:22:0;::::1;;::::0;;;:15:::1;:22;::::0;;;;;::::1;;11042:35;11020:104;;;::::0;-1:-1:-1;;;11020:104:0;;15144:2:1;11020:104:0::1;::::0;::::1;15126:21:1::0;15183:2;15163:18;;;15156:30;-1:-1:-1;;;15202:18:1;;;15195:49;15261:18;;11020:104:0::1;14942:343:1::0;11020:104:0::1;-1:-1:-1::0;;;;;11187:18:0;::::1;11167:17;11187:18:::0;;;:11:::1;:18;::::0;;;;;::::1;;:89;;4265:3;11259:6;;11247:9;:18;;;;:::i;:::-;11246:30;;;;:::i;:::-;11187:89;;;11221:9;11187:89;11167:109;;11332:20;11420:9;;11408;:21;;;;:::i;:::-;11396:8;;:34;;;;:::i;:::-;11373:4;11355:24;::::0;;;:9:::1;:24;::::0;;;;;:76:::1;::::0;;::::1;:::i;:::-;11531:6;::::0;-1:-1:-1;;;;;11496:16:0;::::1;;::::0;;;:9:::1;:16;::::0;;;;;11332:99;;-1:-1:-1;11531:6:0;11496:31:::1;::::0;11332:99;;11496:31:::1;:::i;:::-;:41;;:84;;;-1:-1:-1::0;;;;;;11558:22:0;::::1;;::::0;;;:15:::1;:22;::::0;;;;;::::1;;11496:84;11474:153;;;::::0;-1:-1:-1;;;11474:153:0;;15492:2:1;11474:153:0::1;::::0;::::1;15474:21:1::0;15531:2;15511:18;;;15504:30;-1:-1:-1;;;15550:18:1;;;15543:49;15609:18;;11474:153:0::1;15290:343:1::0;11474:153:0::1;11693:1;11678:12;:16;11670:64;;;::::0;-1:-1:-1;;;11670:64:0;;15840:2:1;11670:64:0::1;::::0;::::1;15822:21:1::0;15879:2;15859:18;;;15852:30;15918:34;15898:18;;;15891:62;-1:-1:-1;;;15969:18:1;;;15962:33;16012:19;;11670:64:0::1;15638:399:1::0;11670:64:0::1;11803:11;11787:12;:27;;11779:66;;;::::0;-1:-1:-1;;;11779:66:0;;12249:2:1;11779:66:0::1;::::0;::::1;12231:21:1::0;12288:2;12268:18;;;12261:30;12327:28;12307:18;;;12300:56;12373:18;;11779:66:0::1;12047:350:1::0;11779:66:0::1;11934:51;::::0;-1:-1:-1;;;11934:51:0;;-1:-1:-1;;;;;16300:15:1;;11934:51:0::1;::::0;::::1;16282:34:1::0;11968:4:0::1;16332:18:1::0;;;16325:43;16384:18;;;16377:34;;;11925:6:0::1;::::0;3566:42:::1;::::0;11934:18:::1;::::0;16217::1;;11934:51:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11925:60;;12006:1;11998:37;;;::::0;-1:-1:-1;;;11998:37:0;;16624:2:1;11998:37:0::1;::::0;::::1;16606:21:1::0;16663:2;16643:18;;;16636:30;16702:25;16682:18;;;16675:53;16745:18;;11998:37:0::1;16422:347:1::0;11998:37:0::1;12101:29;12105:10;12117:12;12101:3;:29::i;:::-;12200:17;12220:21;12232:9:::0;12220;:21:::1;:::i;:::-;12200:41;;12278:9;12265:10;;:22;;;;:::i;:::-;12252:10;:35:::0;12310:9:::1;::::0;:21:::1;::::0;12322:9;;12310:21:::1;:::i;:::-;12298:9;:33:::0;12385:15:::1;12369:13;12443;:11;:13::i;:::-;12431:25;::::0;:9;:25:::1;:::i;:::-;12411:45;;12482:9;12467:11;;:24;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;12504:11:0::1;::::0;;;:4:::1;:11;::::0;;;;:24;;12519:9;;12504:11;:24:::1;::::0;12519:9;;12504:24:::1;:::i;:::-;;;;;;;;12586:1;12575:7;;:12;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;12610:7:0::1;::::0;12598:20:::1;::::0;;;:11:::1;:20;::::0;;;;:28;;;12673:13:::1;:11;:13::i;:::-;12654:16;:14;:16::i;:::-;:32;;;;:::i;:::-;12697:22;::::0;;;:15:::1;:22;::::0;;;;:35;;;12747:27:::1;;::::0;12637:49;;-1:-1:-1;12747:32:0;12743:405:::1;;12800:7;;12811:1;12800:12:::0;12796:341:::1;;12950:13;:11;:13::i;:::-;3492;3442:1;3492:2;:13;:::i;:::-;3926:22;::::0;:5:::1;:22;:::i;:::-;12898:9;12886;;:21;;;;:::i;:::-;12885:40;;;;:::i;:::-;12884:79;;;;:::i;:::-;12833:22;::::0;;;:15:::1;:22;::::0;;;;:27:::1;;:130:::0;12796:341:::1;;;13034:15;:81;13072:11;:24;13094:1;13084:7;;:11;;;;:::i;:::-;13072:24;;;;;;;;;;;;13034:81;;;;;;;;;;;:87;;;13004:15;:22;13020:5;13004:22;;;;;;;;;;;:27;;:117;;;;12796:341;13158:22;::::0;;;:15:::1;:22;::::0;;;;:28:::1;::::0;::::1;:37:::0;;;13226:27:::1;;::::0;:36;-1:-1:-1;13226:36:0;:85:::1;;-1:-1:-1::0;13279:22:0::1;::::0;;;:15:::1;:22;::::0;;;;:27:::1;;::::0;:32;13226:85:::1;13208:178;;;13338:22;::::0;;;:15:::1;:22;::::0;;;;:27:::1;;:36:::0;;;13208:178:::1;13416:22;::::0;;;:15:::1;:22;::::0;;;;:26:::1;;::::0;:35;-1:-1:-1;13416:35:0;:83:::1;;-1:-1:-1::0;13468:22:0::1;::::0;;;:15:::1;:22;::::0;;;;:26:::1;;::::0;:31;13416:83:::1;13398:175;;;13526:22;::::0;;;:15:::1;:22;::::0;;;;:26:::1;;:35:::0;;;13398:175:::1;13630:49;::::0;713:25:1;;;13654:10:0::1;::::0;13647:4:::1;::::0;-1:-1:-1;;;;;;;;;;;13630:49:0;701:2:1;686:18;13630:49:0::1;;;;;;;13749:4;13716:10;13695:161;13769:12:::0;13796:9;13832:13:::1;:11;:13::i;:::-;13820:25;::::0;:9;:25:::1;:::i;9536:521::-:0;-1:-1:-1;;;;;9698:18:0;;;9671:24;9698:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;9740:37:0;;9736:314;;9840:6;9820:16;:26;;9794:117;;;;-1:-1:-1;;;9794:117:0;;16976:2:1;9794:117:0;;;16958:21:1;17015:2;16995:18;;;16988:30;17054:31;17034:18;;;17027:59;17103:18;;9794:117:0;16774:353:1;9794:117:0;9973:51;9982:5;9989:7;9998:25;10017:6;9998:16;:25;:::i;:::-;9973:8;:51::i;:::-;9660:397;9536:521;;;:::o;8670:858::-;8796:4;-1:-1:-1;;;;;8868:23:0;;;;;;:53;;-1:-1:-1;;;;;;8895:26:0;;8916:4;8895:26;;8868:53;8846:137;;;;-1:-1:-1;;;8846:137:0;;17334:2:1;8846:137:0;;;17316:21:1;17373:2;17353:18;;;17346:30;17412:34;17392:18;;;17385:62;-1:-1:-1;;;17463:18:1;;;17456:32;17505:19;;8846:137:0;17132:398:1;8846:137:0;9011:1;9002:6;:10;8994:64;;;;-1:-1:-1;;;8994:64:0;;17737:2:1;8994:64:0;;;17719:21:1;17776:2;17756:18;;;17749:30;17815:34;17795:18;;;17788:62;-1:-1:-1;;;17866:18:1;;;17859:39;17915:19;;8994:64:0;17535:405:1;8994:64:0;-1:-1:-1;;;;;9091:26:0;;;;;;:15;:26;;;;;;;;;:86;;-1:-1:-1;9171:6:0;;-1:-1:-1;;;;;9138:20:0;;;;;;:9;:20;;;;;;:29;;9161:6;;9138:29;:::i;:::-;:39;;9091:86;9069:156;;;;-1:-1:-1;;;9069:156:0;;18147:2:1;9069:156:0;;;18129:21:1;18186:2;18166:18;;;18159:30;-1:-1:-1;;;18205:18:1;;;18198:50;18265:18;;9069:156:0;17945:344:1;9069:156:0;-1:-1:-1;;;;;9291:17:0;;;;;;:9;:17;;;;;;:26;;9311:6;;9291:26;:::i;:::-;-1:-1:-1;;;;;9271:17:0;;;;;;;:9;:17;;;;;;:46;;;;9389:20;;;;;;;:29;;9412:6;;9389:29;:::i;:::-;-1:-1:-1;;;;;9366:20:0;;;;;;;:9;:20;;;;;;;:52;;;;9463:35;;;;;;-1:-1:-1;;;;;;;;;;;9463:35:0;;;9491:6;713:25:1;;701:2;686:18;;567:177;9463:35:0;;;;;;;;-1:-1:-1;9516:4:0;8670:858;;;;;:::o;13940:196::-;-1:-1:-1;;;;;14029:19:0;;;;;;:9;:19;;;;;;:28;;14051:6;;14029:28;:::i;:::-;-1:-1:-1;;;;;14007:19:0;;;;;;:9;:19;;;;;;:50;;;;14113:4;14095:24;;;;:33;;14122:6;;14095:33;:::i;:::-;14086:4;14068:24;;;;:9;:24;;;;;:60;-1:-1:-1;;13940:196:0:o;10065:380::-;-1:-1:-1;;;;;10201:19:0;;10193:68;;;;-1:-1:-1;;;10193:68:0;;18496:2:1;10193:68:0;;;18478:21:1;18535:2;18515:18;;;18508:30;18574:34;18554:18;;;18547:62;-1:-1:-1;;;18625:18:1;;;18618:34;18669:19;;10193:68:0;18294:400:1;10193:68:0;-1:-1:-1;;;;;10280:21:0;;10272:68;;;;-1:-1:-1;;;10272:68:0;;18901:2:1;10272:68:0;;;18883:21:1;18940:2;18920:18;;;18913:30;18979:34;18959:18;;;18952:62;-1:-1:-1;;;19030:18:1;;;19023:32;19072:19;;10272:68:0;18699:398:1;10272:68:0;-1:-1:-1;;;;;10353:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10405:32;;713:25:1;;;10405:32:0;;686:18:1;10405:32:0;;;;;;;10065:380;;;:::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;749:173::-;817:20;;-1:-1:-1;;;;;866:31:1;;856:42;;846:70;;912:1;909;902:12;846:70;749:173;;;:::o;927:254::-;995:6;1003;1056:2;1044:9;1035:7;1031:23;1027:32;1024:52;;;1072:1;1069;1062:12;1024:52;1095:29;1114:9;1095:29;:::i;:::-;1085:39;1171:2;1156:18;;;;1143:32;;-1:-1:-1;;;927:254:1:o;1378:186::-;1437:6;1490:2;1478:9;1469:7;1465:23;1461:32;1458:52;;;1506:1;1503;1496:12;1458:52;1529:29;1548:9;1529:29;:::i;1569:260::-;1637:6;1645;1698:2;1686:9;1677:7;1673:23;1669:32;1666:52;;;1714:1;1711;1704:12;1666:52;1737:29;1756:9;1737:29;:::i;:::-;1727:39;;1785:38;1819:2;1808:9;1804:18;1785:38;:::i;:::-;1775:48;;1569:260;;;;;:::o;1834:248::-;1902:6;1910;1963:2;1951:9;1942:7;1938:23;1934:32;1931:52;;;1979:1;1976;1969:12;1931:52;-1:-1:-1;;2002:23:1;;;2072:2;2057:18;;;2044:32;;-1:-1:-1;1834:248:1:o;2087:328::-;2164:6;2172;2180;2233:2;2221:9;2212:7;2208:23;2204:32;2201:52;;;2249:1;2246;2239:12;2201:52;2272:29;2291:9;2272:29;:::i;:::-;2262:39;;2320:38;2354:2;2343:9;2339:18;2320:38;:::i;:::-;2310:48;;2405:2;2394:9;2390:18;2377:32;2367:42;;2087:328;;;;;:::o;2817:180::-;2876:6;2929:2;2917:9;2908:7;2904:23;2900:32;2897:52;;;2945:1;2942;2935:12;2897:52;-1:-1:-1;2968:23:1;;2817:180;-1:-1:-1;2817:180:1:o;3002:118::-;3088:5;3081:13;3074:21;3067:5;3064:32;3054:60;;3110:1;3107;3100:12;3054:60;3002:118;:::o;3125:315::-;3190:6;3198;3251:2;3239:9;3230:7;3226:23;3222:32;3219:52;;;3267:1;3264;3257:12;3219:52;3290:29;3309:9;3290:29;:::i;:::-;3280:39;;3369:2;3358:9;3354:18;3341:32;3382:28;3404:5;3382:28;:::i;:::-;3429:5;3419:15;;;3125:315;;;;;:::o;3913:316::-;3990:6;3998;4006;4059:2;4047:9;4038:7;4034:23;4030:32;4027:52;;;4075:1;4072;4065:12;4027:52;-1:-1:-1;;4098:23:1;;;4168:2;4153:18;;4140:32;;-1:-1:-1;4219:2:1;4204:18;;;4191:32;;3913:316;-1:-1:-1;3913:316:1:o;5042:127::-;5103:10;5098:3;5094:20;5091:1;5084:31;5134:4;5131:1;5124:15;5158:4;5155:1;5148:15;5174:422;5263:1;5306:5;5263:1;5320:270;5341:7;5331:8;5328:21;5320:270;;;5400:4;5396:1;5392:6;5388:17;5382:4;5379:27;5376:53;;;5409:18;;:::i;:::-;5459:7;5449:8;5445:22;5442:55;;;5479:16;;;;5442:55;5558:22;;;;5518:15;;;;5320:270;;;5324:3;5174:422;;;;;:::o;5601:806::-;5650:5;5680:8;5670:80;;-1:-1:-1;5721:1:1;5735:5;;5670:80;5769:4;5759:76;;-1:-1:-1;5806:1:1;5820:5;;5759:76;5851:4;5869:1;5864:59;;;;5937:1;5932:130;;;;5844:218;;5864:59;5894:1;5885:10;;5908:5;;;5932:130;5969:3;5959:8;5956:17;5953:43;;;5976:18;;:::i;:::-;-1:-1:-1;;6032:1:1;6018:16;;6047:5;;5844:218;;6146:2;6136:8;6133:16;6127:3;6121:4;6118:13;6114:36;6108:2;6098:8;6095:16;6090:2;6084:4;6081:12;6077:35;6074:77;6071:159;;;-1:-1:-1;6183:19:1;;;6215:5;;6071:159;6262:34;6287:8;6281:4;6262:34;:::i;:::-;6332:6;6328:1;6324:6;6320:19;6311:7;6308:32;6305:58;;;6343:18;;:::i;:::-;6381:20;;5601:806;-1:-1:-1;;;5601:806:1:o;6412:140::-;6470:5;6499:47;6540:4;6530:8;6526:19;6520:4;6499:47;:::i;6557:168::-;6630:9;;;6661;;6678:15;;;6672:22;;6658:37;6648:71;;6699:18;;:::i;6730:355::-;6932:2;6914:21;;;6971:2;6951:18;;;6944:30;7010:33;7005:2;6990:18;;6983:61;7076:2;7061:18;;6730:355::o;7090:356::-;7292:2;7274:21;;;7311:18;;;7304:30;7370:34;7365:2;7350:18;;7343:62;7437:2;7422:18;;7090:356::o;7451:217::-;7491:1;7517;7507:132;;7561:10;7556:3;7552:20;7549:1;7542:31;7596:4;7593:1;7586:15;7624:4;7621:1;7614:15;7507:132;-1:-1:-1;7653:9:1;;7451:217::o;7952:245::-;8019:6;8072:2;8060:9;8051:7;8047:23;8043:32;8040:52;;;8088:1;8085;8078:12;8040:52;8120:9;8114:16;8139:28;8161:5;8139:28;:::i;8202:127::-;8263:10;8258:3;8254:20;8251:1;8244:31;8294:4;8291:1;8284:15;8318:4;8315:1;8308:15;9342:128;9409:9;;;9430:11;;;9427:37;;;9444:18;;:::i;10180:125::-;10245:9;;;10266:10;;;10263:36;;;10279:18;;:::i;10733:184::-;10803:6;10856:2;10844:9;10835:7;10831:23;10827:32;10824:52;;;10872:1;10869;10862:12;10824:52;-1:-1:-1;10895:16:1;;10733:184;-1:-1:-1;10733:184:1:o

Swarm Source

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