ETH Price: $3,388.16 (-2.67%)
Gas: 1 Gwei

Token

Fluid (FLUID)
 

Overview

Max Total Supply

10,000,000 FLUID

Holders

980 (0.00%)

Market

Price

$0.08 @ 0.000024 ETH

Onchain Market Cap

$807,270.00

Circulating Supply Market Cap

$645,818.00

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.000000000000000001 FLUID

Value
$0.00 ( ~0 Eth) [0.0000%]
0xd4f69d02ef082f612558588d103994a7e3cf29c9
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Revolutionize your crypto trading with Fluid.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
Fluid

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-09-23
*/

// SPDX-License-Identifier: MIT

// Fluid Token
// https://fluid.trade


pragma solidity 0.8.21;
pragma experimental ABIEncoderV2;

abstract contract Ownable {
    address private _owner;

    constructor() {
        _owner = msg.sender;
    }

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

    modifier onlyOwner() {
        require(owner() == msg.sender, "Ownable: caller is not the owner");
        _;
    }

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

library SafeERC20 {
    function safeTransfer(address token, address to, uint256 value) internal {
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(IERC20.transfer.selector, to, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: INTERNAL TRANSFER_FAILED');
    }
}

interface IERC20 {
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external;
    function approve(address spender, uint256 amount) external returns (bool);
}

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

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

    function WETH() external pure returns (address);

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

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

contract Fluid is Ownable {
    string private constant _name = unicode"Fluid";
    string private constant _symbol = unicode"FLUID";
    uint256 private constant _totalSupply = 10_000_000 * 1e18;

    uint256 public maxTransactionAmount = 120_000 * 1e18; //1.2%
    uint256 public maxWallet = 120_000 * 1e18; //1.2%
    uint256 public swapTokensAtAmount = (_totalSupply * 2) / 10000; //0.02%

    address public revWallet = 0x92795b9dC4Fa484fA8E045f403Eaa028093717Ad;
    address public treasuryWallet = 0xb6C7BB9592E1dcBF011Ac248DFe5cB3D2220E093;
    address public teamWallet = 0x243Dc5958513c6B668a4556061D897E72F2f56F7;
    address public saleContract = 0x1412DcdB4508e199b6F4ee869D50234d59b70F32;
    address private constant WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;

    uint8 public buyTotalFees = 50;
    uint8 public sellTotalFees = 50;

    uint8 public revFee = 40;
    uint8 public treasuryFee = 20;
    uint8 public teamFee = 40;

    bool private swapping;
    bool public limitsInEffect = true;
    bool private launched;

    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) private _isExcludedMaxTransactionAmount;
    mapping(address => bool) private automatedMarketMakerPairs;

    event SwapAndLiquify(uint256 tokensSwapped, uint256 teamETH, uint256 revETH, uint256 TreasuryETH);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);

    IUniswapV2Router02 public constant uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address public uniswapV2Pair;

    constructor() {

        setExcludedFromFees(owner(), true);
        setExcludedFromFees(address(this), true);
        setExcludedFromFees(address(0xdead), true);
        setExcludedFromFees(teamWallet, true);
        setExcludedFromFees(revWallet, true);
        setExcludedFromFees(treasuryWallet, true);

        setExcludedFromMaxTransaction(owner(), true);
        setExcludedFromMaxTransaction(address(uniswapV2Router), true);
        setExcludedFromMaxTransaction(address(this), true);
        setExcludedFromMaxTransaction(address(0xdead), true);
        setExcludedFromMaxTransaction(address(uniswapV2Pair), true);
        setExcludedFromMaxTransaction(teamWallet, true);
        setExcludedFromMaxTransaction(revWallet, true);
        setExcludedFromMaxTransaction(treasuryWallet, true);
        setExcludedFromMaxTransaction(saleContract, true);


        _balances[saleContract] = 6_000_000 * 1e18;
        emit Transfer(address(0), saleContract, _balances[saleContract]);

        _balances[treasuryWallet] = 1_500_000 * 1e18;
        emit Transfer(address(0), treasuryWallet, _balances[treasuryWallet]);

        _balances[teamWallet] = 500_000 * 1e18;
        emit Transfer(address(0), teamWallet, _balances[teamWallet]);

        _balances[address(this)] = 2_000_000 * 1e18;
        emit Transfer(address(0), address(this), _balances[address(this)]);

        _approve(address(this), address(uniswapV2Router), type(uint256).max);
    }

    receive() external payable {}

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

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

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

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

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

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

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

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

    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool) {
        uint256 currentAllowance = _allowances[sender][msg.sender];
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
            unchecked {
                _approve(sender, msg.sender, currentAllowance - amount);
            }
        }

        _transfer(sender, recipient, amount);

        return true;
    }

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        if (!launched && (from != owner() && from != address(this) && to != owner())) {
            revert("Trading not enabled");
        }

        if (limitsInEffect) {
            if (from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping) {
                if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
                    require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTx");
                    require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
                } else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                    require(amount <= maxTransactionAmount,"Sell transfer amount exceeds the maxTx");
                } else if (!_isExcludedMaxTransactionAmount[to]) {
                    require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
                }
            }
        }

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

        if (canSwap && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]) {
            swapping = true;
            swapBack();
            swapping = false;
        }

        bool takeFee = !swapping;

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

        uint256 senderBalance = _balances[from];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");

        uint256 fees = 0;
        if (takeFee) {
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0) {
                fees = (amount * sellTotalFees) / 1000;
            } else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = (amount * buyTotalFees) / 1000;
            }

            if (fees > 0) {
                unchecked {
                    amount = amount - fees;
                    _balances[from] -= fees;
                    _balances[address(this)] += fees;
                }
                emit Transfer(from, address(this), fees);
            }
        }
        unchecked {
            _balances[from] -= amount;
            _balances[to] += amount;
        }
        emit Transfer(from, to, amount);
    }

    function removeLimits() external onlyOwner {
        limitsInEffect = false;
    }

    function setDistributionFees(uint8 _RevFee, uint8 _TreasuryFee, uint8 _teamFee) external onlyOwner {
        revFee = _RevFee;
        treasuryFee = _TreasuryFee;
        teamFee = _teamFee;
        require((revFee + treasuryFee + teamFee) == 100, "Distribution must to be equal to 100%");
    }

    function setFees(uint8 _buyTotalFees, uint8 _sellTotalFees) external onlyOwner {
        require(_buyTotalFees <= 50, "Buy fees must be less than or equal to 5%");
        require(_sellTotalFees <= 50, "Sell fees must be less than or equal to 5%");
        buyTotalFees = _buyTotalFees;
        sellTotalFees = _sellTotalFees;
    }

    function setExcludedFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
    }

    function setExcludedFromMaxTransaction(address account, bool excluded) public onlyOwner {
        _isExcludedMaxTransactionAmount[account] = excluded;
    }

    function bulkSendTokens(address[] memory addresses, uint256[] memory amounts) external onlyOwner {
        require(!launched, "Already launched");
        for (uint256 i = 0; i < addresses.length; i++) {
            require(_balances[msg.sender] >= amounts[i], "ERC20: transfer amount exceeds balance");
            _balances[addresses[i]] += amounts[i];
            _balances[msg.sender] -= amounts[i];
            emit Transfer(msg.sender, addresses[i], amounts[i]);
        }
    }

    function openTheFloodGates() external onlyOwner {
        require(!launched, "Already launched");
        launched = true;
    }

    function fillThePool() external payable onlyOwner {
        require(!launched, "Already launched");

        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), WETH);

        _approve(address(this), address(uniswapV2Pair), type(uint256).max);

        IERC20(uniswapV2Pair).approve(address(uniswapV2Router),type(uint256).max);

        automatedMarketMakerPairs[uniswapV2Pair] = true;

        setExcludedFromMaxTransaction(address(uniswapV2Pair), true);

        uniswapV2Router.addLiquidityETH{value: msg.value}(
            address(this),
            _balances[address(this)],
            0,
            0,
            teamWallet,
            block.timestamp
        );
    }

    function setAutomatedMarketMakerPair(address pair, bool value) external onlyOwner {
        require(pair != uniswapV2Pair, "The pair cannot be removed");
        automatedMarketMakerPairs[pair] = value;
    }

    function setSwapAtAmount(uint256 newSwapAmount) external onlyOwner {
        require(newSwapAmount >= (totalSupply() * 1) / 100000, "Swap amount cannot be lower than 0.001% of the supply");
        require(newSwapAmount <= (totalSupply() * 5) / 1000, "Swap amount cannot be higher than 0.5% of the supply");
        swapTokensAtAmount = newSwapAmount;
    }

    function setMaxTxnAmount(uint256 newMaxTx) external onlyOwner {
        require(newMaxTx >= ((totalSupply() * 1) / 1000) / 1e18, "Cannot set max transaction lower than 0.1%");
        maxTransactionAmount = newMaxTx * (10**18);
    }

    function setMaxWalletAmount(uint256 newMaxWallet) external onlyOwner {
        require(newMaxWallet >= ((totalSupply() * 1) / 1000) / 1e18, "Cannot set max wallet lower than 0.1%");
        maxWallet = newMaxWallet * (10**18);
    }

    function updateRevWallet(address newAddress) external onlyOwner {
        require(newAddress != address(0), "Address cannot be zero");
        revWallet = newAddress;
    }

    function updateTreasuryWallet(address newAddress) external onlyOwner {
        require(newAddress != address(0), "Address cannot be zero");
        treasuryWallet = newAddress;
    }

    function updateTeamWallet(address newAddress) external onlyOwner {
        require(newAddress != address(0), "Address cannot be zero");
        teamWallet = newAddress;
    }

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

    function withdrawStuckToken(address token, address to) external onlyOwner {
        uint256 _contractBalance = IERC20(token).balanceOf(address(this));
        SafeERC20.safeTransfer(token, to, _contractBalance); // Use safeTransfer
    }

    function withdrawStuckETH(address addr) external onlyOwner {
        require(addr != address(0), "Invalid address");

        (bool success, ) = addr.call{value: address(this).balance}("");
        require(success, "Withdrawal failed");
    }

    function swapBack() private {
        uint256 swapThreshold = swapTokensAtAmount;
        bool success;

        if (balanceOf(address(this)) > swapTokensAtAmount * 20) {
            swapThreshold = swapTokensAtAmount * 20;
        }

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

        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(swapThreshold, 0, path, address(this), block.timestamp);

        uint256 ethBalance = address(this).balance;
        if (ethBalance > 0) {
            uint256 ethForRev = (ethBalance * revFee) / 100;
            uint256 ethForTeam = (ethBalance * teamFee) / 100;
            uint256 ethForTreasury = ethBalance - ethForRev - ethForTeam;

            (success, ) = address(teamWallet).call{value: ethForTeam}("");
            (success, ) = address(treasuryWallet).call{value: ethForTreasury}("");
            (success, ) = address(revWallet).call{value: ethForRev}("");

            emit SwapAndLiquify(swapThreshold, ethForTeam, ethForRev, ethForTreasury);
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"teamETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"revETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"TreasuryETH","type":"uint256"}],"name":"SwapAndLiquify","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":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"bulkSendTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fillThePool","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","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":"openTheFloodGates","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"revWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"saleContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_RevFee","type":"uint8"},{"internalType":"uint8","name":"_TreasuryFee","type":"uint8"},{"internalType":"uint8","name":"_teamFee","type":"uint8"}],"name":"setDistributionFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setExcludedFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_buyTotalFees","type":"uint8"},{"internalType":"uint8","name":"_sellTotalFees","type":"uint8"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMaxTx","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMaxWallet","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newSwapAmount","type":"uint256"}],"name":"setSwapAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"teamFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"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":[{"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":[],"name":"treasuryFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"treasuryWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"updateRevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"updateTeamWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"updateTreasuryWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"}],"name":"withdrawStuckToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052691969368974c05b000000600155691969368974c05b0000006002556127106a084595161401484a00000060026200003d919062000614565b6200004991906200063e565b600355600480546001600160a01b03199081167392795b9dc4fa484fa8e045f403eaa028093717ad1790915560058054821673b6c7bb9592e1dcbf011ac248dfe5cb3d2220e0931790556006805490911673243dc5958513c6b668a4556061d897e72f2f56f7179055600780547a010028142832321412dcdb4508e199b6f4ee869d50234d59b70f32600161ff0160c81b0319909116179055348015620000ee575f80fd5b505f80546001600160a01b031916331790556200011e620001165f546001600160a01b031690565b6001620003e3565b6200012b306001620003e3565b6200013a61dead6001620003e3565b60065462000153906001600160a01b03166001620003e3565b6004546200016c906001600160a01b03166001620003e3565b60055462000185906001600160a01b03166001620003e3565b620001a36200019b5f546001600160a01b031690565b60016200046a565b620001c4737a250d5630b4cf539739df2c5dacb4c659f2488d60016200046a565b620001d13060016200046a565b620001e061dead60016200046a565b600d54620001f9906001600160a01b031660016200046a565b60065462000212906001600160a01b031660016200046a565b6004546200022b906001600160a01b031660016200046a565b60055462000244906001600160a01b031660016200046a565b6007546200025d906001600160a01b031660016200046a565b600780546001600160a01b039081165f908152600860205260408082206a04f68ca6d8cd91c60000009055925490911680825282822054925190925f80516020620032d683398151915291620002b591815260200190565b60405180910390a3600580546001600160a01b039081165f908152600860205260408082206a013da329b63364718000009055925490911680825282822054925190925f80516020620032d6833981519152916200031591815260200190565b60405180910390a3600680546001600160a01b039081165f908152600860205260408082206969e10de76676d08000009055925490911680825282822054925190925f80516020620032d6833981519152916200037491815260200190565b60405180910390a3305f8181526008602090815260408083206a01a784379d99db420000009081905590519081525f80516020620032d6833981519152910160405180910390a3620003dd30737a250d5630b4cf539739df2c5dacb4c659f2488d5f19620004ed565b6200065e565b33620003f65f546001600160a01b031690565b6001600160a01b031614620004405760405162461bcd60e51b815260206004820181905260248201525f80516020620032b683398151915260448201526064015b60405180910390fd5b6001600160a01b03919091165f908152600a60205260409020805460ff1916911515919091179055565b336200047d5f546001600160a01b031690565b6001600160a01b031614620004c35760405162461bcd60e51b815260206004820181905260248201525f80516020620032b6833981519152604482015260640162000437565b6001600160a01b03919091165f908152600b60205260409020805460ff1916911515919091179055565b6001600160a01b038316620005515760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840162000437565b6001600160a01b038216620005b45760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840162000437565b6001600160a01b038381165f8181526009602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b80820281158282048414176200063857634e487b7160e01b5f52601160045260245ffd5b92915050565b5f826200065957634e487b7160e01b5f52601260045260245ffd5b500490565b612c4a806200066c5f395ff3fe608060405260043610610262575f3560e01c806372f07ea61161013f578063bc205ad3116100b3578063d85ba06311610078578063d85ba06314610762578063daf6ca3014610782578063dd62ed3e146107a1578063e2f45605146107e5578063edecdae6146107fa578063f8b45b0514610819575f80fd5b8063bc205ad3146106cf578063c8c8ebe4146106ee578063cc32d17614610703578063d201b01e14610723578063d7c94efd14610742575f80fd5b806385ecafd71161010457806385ecafd7146105f25780638da5cb5b1461062957806395d89b41146106455780639a7a23d614610672578063a9059cbb14610691578063adfa29e5146106b0575f80fd5b806372f07ea61461057957806374010ece14610581578063751039fc146105a05780637cb332bb146105b4578063809d458d146105d3575f80fd5b806349bd5a5e116101d657806362beb0b51161019b57806362beb0b5146104bf5780636402511e146104d357806366650dae146104f25780636a486a8e1461051157806370a0823114610531578063715018a614610565575f80fd5b806349bd5a5e146104235780634a62bb65146104425780634fcd244614610462578063590ffdce1461048157806359927044146104a0575f80fd5b806323b872dd1161022757806323b872dd1461037357806327a14fc21461039257806329dde842146103b3578063313ce567146103d25780633c090c46146103e55780634626402b14610404575f80fd5b806306fdde031461026d578063095ea7b3146102ac5780631694505e146102db57806318160ddd1461031a57806321d37e3914610341575f80fd5b3661026957005b5f80fd5b348015610278575f80fd5b50604080518082019091526005815264119b1d5a5960da1b60208201525b6040516102a3919061261c565b60405180910390f35b3480156102b7575f80fd5b506102cb6102c6366004612665565b61082e565b60405190151581526020016102a3565b3480156102e6575f80fd5b50610302737a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b0390911681526020016102a3565b348015610325575f80fd5b506a084595161401484a0000005b6040519081526020016102a3565b34801561034c575f80fd5b5060075461036190600160b01b900460ff1681565b60405160ff90911681526020016102a3565b34801561037e575f80fd5b506102cb61038d36600461268f565b610844565b34801561039d575f80fd5b506103b16103ac3660046126cd565b6108f8565b005b3480156103be575f80fd5b506103b16103cd3660046127b4565b6109db565b3480156103dd575f80fd5b506012610361565b3480156103f0575f80fd5b506103b16103ff366004612885565b610bf7565b34801561040f575f80fd5b50600554610302906001600160a01b031681565b34801561042e575f80fd5b50600d54610302906001600160a01b031681565b34801561044d575f80fd5b506007546102cb90600160d01b900460ff1681565b34801561046d575f80fd5b506103b161047c3660046128c5565b610cfa565b34801561048c575f80fd5b506103b161049b366004612903565b610e33565b3480156104ab575f80fd5b50600654610302906001600160a01b031681565b3480156104ca575f80fd5b506103b1610e95565b3480156104de575f80fd5b506103b16104ed3660046126cd565b610f0c565b3480156104fd575f80fd5b506103b161050c366004612903565b611069565b34801561051c575f80fd5b5060075461036190600160a81b900460ff1681565b34801561053c575f80fd5b5061033361054b36600461293a565b6001600160a01b03165f9081526008602052604090205490565b348015610570575f80fd5b506103b16110cb565b6103b1611114565b34801561058c575f80fd5b506103b161059b3660046126cd565b611409565b3480156105ab575f80fd5b506103b16114f1565b3480156105bf575f80fd5b506103b16105ce36600461293a565b611538565b3480156105de575f80fd5b506103b16105ed36600461293a565b6115b8565b3480156105fd575f80fd5b506102cb61060c36600461293a565b6001600160a01b03165f908152600a602052604090205460ff1690565b348015610634575f80fd5b505f546001600160a01b0316610302565b348015610650575f80fd5b50604080518082019091526005815264119315525160da1b6020820152610296565b34801561067d575f80fd5b506103b161068c366004612903565b611638565b34801561069c575f80fd5b506102cb6106ab366004612665565b6116f8565b3480156106bb575f80fd5b506103b16106ca36600461293a565b611704565b3480156106da575f80fd5b506103b16106e936600461295c565b611784565b3480156106f9575f80fd5b5061033360015481565b34801561070e575f80fd5b5060075461036190600160b81b900460ff1681565b34801561072e575f80fd5b506103b161073d36600461293a565b611831565b34801561074d575f80fd5b5060075461036190600160c01b900460ff1681565b34801561076d575f80fd5b5060075461036190600160a01b900460ff1681565b34801561078d575f80fd5b50600754610302906001600160a01b031681565b3480156107ac575f80fd5b506103336107bb36600461295c565b6001600160a01b039182165f90815260096020908152604080832093909416825291909152205490565b3480156107f0575f80fd5b5061033360035481565b348015610805575f80fd5b50600454610302906001600160a01b031681565b348015610824575f80fd5b5061033360025481565b5f61083a338484611948565b5060015b92915050565b6001600160a01b0383165f9081526009602090815260408083203384529091528120545f1981146108e257828110156108d55760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6108e28533858403611948565b6108ed858585611a6b565b506001949350505050565b3361090a5f546001600160a01b031690565b6001600160a01b0316146109305760405162461bcd60e51b81526004016108cc90612988565b670de0b6b3a76400006103e86109526a084595161401484a00000060016129d1565b61095c91906129e8565b61096691906129e8565b8110156109c35760405162461bcd60e51b815260206004820152602560248201527f43616e6e6f7420736574206d61782077616c6c6574206c6f776572207468616e60448201526420302e312560d81b60648201526084016108cc565b6109d581670de0b6b3a76400006129d1565b60025550565b336109ed5f546001600160a01b031690565b6001600160a01b031614610a135760405162461bcd60e51b81526004016108cc90612988565b600754600160d81b900460ff1615610a3d5760405162461bcd60e51b81526004016108cc90612a07565b5f5b8251811015610bf257818181518110610a5a57610a5a612a31565b602002602001015160085f336001600160a01b03166001600160a01b031681526020019081526020015f20541015610aa45760405162461bcd60e51b81526004016108cc90612a45565b818181518110610ab657610ab6612a31565b602002602001015160085f858481518110610ad357610ad3612a31565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f205f828254610b089190612a8b565b92505081905550818181518110610b2157610b21612a31565b602002602001015160085f336001600160a01b03166001600160a01b031681526020019081526020015f205f828254610b5a9190612a9e565b92505081905550828181518110610b7357610b73612a31565b60200260200101516001600160a01b0316336001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef848481518110610bc157610bc1612a31565b6020026020010151604051610bd891815260200190565b60405180910390a380610bea81612ab1565b915050610a3f565b505050565b33610c095f546001600160a01b031690565b6001600160a01b031614610c2f5760405162461bcd60e51b81526004016108cc90612988565b6007805461ffff60b01b1916600160b01b60ff868116820260ff60b81b191692909217600160b81b86841681029190911760ff60c01b1916600160c01b868516810291909117948590558404831693610c9093918104821692900416612ac9565b610c9a9190612ac9565b60ff16606414610bf25760405162461bcd60e51b815260206004820152602560248201527f446973747269627574696f6e206d75737420746f20626520657175616c20746f604482015264203130302560d81b60648201526084016108cc565b33610d0c5f546001600160a01b031690565b6001600160a01b031614610d325760405162461bcd60e51b81526004016108cc90612988565b60328260ff161115610d985760405162461bcd60e51b815260206004820152602960248201527f4275792066656573206d757374206265206c657373207468616e206f7220657160448201526875616c20746f20352560b81b60648201526084016108cc565b60328160ff161115610dff5760405162461bcd60e51b815260206004820152602a60248201527f53656c6c2066656573206d757374206265206c657373207468616e206f7220656044820152697175616c20746f20352560b01b60648201526084016108cc565b6007805461ffff60a01b1916600160a01b60ff9485160260ff60a81b191617600160a81b9290931691909102919091179055565b33610e455f546001600160a01b031690565b6001600160a01b031614610e6b5760405162461bcd60e51b81526004016108cc90612988565b6001600160a01b03919091165f908152600a60205260409020805460ff1916911515919091179055565b33610ea75f546001600160a01b031690565b6001600160a01b031614610ecd5760405162461bcd60e51b81526004016108cc90612988565b600754600160d81b900460ff1615610ef75760405162461bcd60e51b81526004016108cc90612a07565b6007805460ff60d81b1916600160d81b179055565b33610f1e5f546001600160a01b031690565b6001600160a01b031614610f445760405162461bcd60e51b81526004016108cc90612988565b620186a0610f5e6a084595161401484a00000060016129d1565b610f6891906129e8565b811015610fd55760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527420302e30303125206f662074686520737570706c7960581b60648201526084016108cc565b6103e8610fee6a084595161401484a00000060056129d1565b610ff891906129e8565b8111156110645760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f7420626520686967686572207468616044820152736e20302e3525206f662074686520737570706c7960601b60648201526084016108cc565b600355565b3361107b5f546001600160a01b031690565b6001600160a01b0316146110a15760405162461bcd60e51b81526004016108cc90612988565b6001600160a01b03919091165f908152600b60205260409020805460ff1916911515919091179055565b336110dd5f546001600160a01b031690565b6001600160a01b0316146111035760405162461bcd60e51b81526004016108cc90612988565b5f80546001600160a01b0319169055565b336111265f546001600160a01b031690565b6001600160a01b03161461114c5760405162461bcd60e51b81526004016108cc90612988565b600754600160d81b900460ff16156111765760405162461bcd60e51b81526004016108cc90612a07565b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111c6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111ea9190612ae2565b6040516364e329cb60e11b815230600482015273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc260248201526001600160a01b03919091169063c9c65396906044016020604051808303815f875af1158015611249573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061126d9190612ae2565b600d80546001600160a01b0319166001600160a01b039290921691821790556112999030905f19611948565b600d5460405163095ea7b360e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d60048201525f1960248201526001600160a01b039091169063095ea7b3906044016020604051808303815f875af11580156112fb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061131f9190612afd565b50600d80546001600160a01b039081165f908152600c60205260409020805460ff19166001908117909155915461135892911690611069565b305f8181526008602052604080822054600654915163f305d71960e01b8152600481019490945260248401526044830182905260648301919091526001600160a01b031660848201524260a4820152737a250d5630b4cf539739df2c5dacb4c659f2488d9063f305d71990349060c40160606040518083038185885af11580156113e4573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610bf29190612b18565b3361141b5f546001600160a01b031690565b6001600160a01b0316146114415760405162461bcd60e51b81526004016108cc90612988565b670de0b6b3a76400006103e86114636a084595161401484a00000060016129d1565b61146d91906129e8565b61147791906129e8565b8110156114d95760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d6178207472616e73616374696f6e206c6f776572604482015269207468616e20302e312560b01b60648201526084016108cc565b6114eb81670de0b6b3a76400006129d1565b60015550565b336115035f546001600160a01b031690565b6001600160a01b0316146115295760405162461bcd60e51b81526004016108cc90612988565b6007805460ff60d01b19169055565b3361154a5f546001600160a01b031690565b6001600160a01b0316146115705760405162461bcd60e51b81526004016108cc90612988565b6001600160a01b0381166115965760405162461bcd60e51b81526004016108cc90612b43565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b336115ca5f546001600160a01b031690565b6001600160a01b0316146115f05760405162461bcd60e51b81526004016108cc90612988565b6001600160a01b0381166116165760405162461bcd60e51b81526004016108cc90612b43565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b3361164a5f546001600160a01b031690565b6001600160a01b0316146116705760405162461bcd60e51b81526004016108cc90612988565b600d546001600160a01b03908116908316036116ce5760405162461bcd60e51b815260206004820152601a60248201527f54686520706169722063616e6e6f742062652072656d6f76656400000000000060448201526064016108cc565b6001600160a01b03919091165f908152600c60205260409020805460ff1916911515919091179055565b5f61083a338484611a6b565b336117165f546001600160a01b031690565b6001600160a01b03161461173c5760405162461bcd60e51b81526004016108cc90612988565b6001600160a01b0381166117625760405162461bcd60e51b81526004016108cc90612b43565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b336117965f546001600160a01b031690565b6001600160a01b0316146117bc5760405162461bcd60e51b81526004016108cc90612988565b6040516370a0823160e01b81523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa158015611800573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118249190612b73565b9050610bf28383836121e4565b336118435f546001600160a01b031690565b6001600160a01b0316146118695760405162461bcd60e51b81526004016108cc90612988565b6001600160a01b0381166118b15760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b60448201526064016108cc565b5f816001600160a01b0316476040515f6040518083038185875af1925050503d805f81146118fa576040519150601f19603f3d011682016040523d82523d5f602084013e6118ff565b606091505b50509050806119445760405162461bcd60e51b815260206004820152601160248201527015da5d1a191c985dd85b0819985a5b1959607a1b60448201526064016108cc565b5050565b6001600160a01b0383166119aa5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108cc565b6001600160a01b038216611a0b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108cc565b6001600160a01b038381165f8181526009602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611acf5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108cc565b6001600160a01b038216611b315760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108cc565b5f8111611b925760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016108cc565b600754600160d81b900460ff16158015611be657505f546001600160a01b03848116911614801590611bcd57506001600160a01b0383163014155b8015611be657505f546001600160a01b03838116911614155b15611c295760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b60448201526064016108cc565b600754600160d01b900460ff1615611eea575f546001600160a01b03848116911614801590611c6557505f546001600160a01b03838116911614155b8015611c7957506001600160a01b03821615155b8015611c9057506001600160a01b03821661dead14155b8015611ca65750600754600160c81b900460ff16155b15611eea576001600160a01b0383165f908152600c602052604090205460ff168015611cea57506001600160a01b0382165f908152600b602052604090205460ff16155b15611dbd57600154811115611d4f5760405162461bcd60e51b815260206004820152602560248201527f427579207472616e7366657220616d6f756e74206578636565647320746865206044820152640dac2f0a8f60db1b60648201526084016108cc565b6002546001600160a01b0383165f90815260086020526040902054611d749083612a8b565b1115611db85760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016108cc565b611eea565b6001600160a01b0382165f908152600c602052604090205460ff168015611dfc57506001600160a01b0383165f908152600b602052604090205460ff16155b15611e6257600154811115611db85760405162461bcd60e51b815260206004820152602660248201527f53656c6c207472616e7366657220616d6f756e74206578636565647320746865604482015265040dac2f0a8f60d31b60648201526084016108cc565b6001600160a01b0382165f908152600b602052604090205460ff16611eea576002546001600160a01b0383165f90815260086020526040902054611ea69083612a8b565b1115611eea5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016108cc565b600354305f90815260086020526040902054108015908190611f165750600754600160c81b900460ff16155b8015611f3a57506001600160a01b0384165f908152600c602052604090205460ff16155b8015611f5e57506001600160a01b0384165f908152600a602052604090205460ff16155b8015611f8257506001600160a01b0383165f908152600a602052604090205460ff16155b15611fb0576007805460ff60c81b1916600160c81b179055611fa261230b565b6007805460ff60c81b191690555b6007546001600160a01b0385165f908152600a602052604090205460ff600160c81b909204821615911680611ffc57506001600160a01b0384165f908152600a602052604090205460ff165b1561200457505f5b6001600160a01b0385165f908152600860205260409020548381101561203c5760405162461bcd60e51b81526004016108cc90612a45565b5f8215612172576001600160a01b0386165f908152600c602052604090205460ff1680156120755750600754600160a81b900460ff1615155b156120a6576007546103e89061209590600160a81b900460ff16876129d1565b61209f91906129e8565b9050612105565b6001600160a01b0387165f908152600c602052604090205460ff1680156120d85750600754600160a01b900460ff1615155b15612105576007546103e8906120f890600160a01b900460ff16876129d1565b61210291906129e8565b90505b8015612172576001600160a01b0387165f8181526008602090815260408083208054869003905530808452928190208054860190555184815297849003979192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35b6001600160a01b038088165f8181526008602052604080822080548a900390559289168082529083902080548901905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906121d39089815260200190565b60405180910390a350505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b17905291515f9283929087169161223f9190612b8a565b5f604051808303815f865af19150503d805f8114612278576040519150601f19603f3d011682016040523d82523d5f602084013e61227d565b606091505b50915091508180156122a75750805115806122a75750808060200190518101906122a79190612afd565b6123045760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657248656c7065723a20494e5445524e414c205452414e5346456044820152671497d1905253115160c21b60648201526084016108cc565b5050505050565b6003545f61231a8260146129d1565b305f9081526008602052604090205411156123405760035461233d9060146129d1565b91505b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061237357612373612a31565b60200260200101906001600160a01b031690816001600160a01b03168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2816001815181106123bb576123bb612a31565b6001600160a01b039092166020928302919091019091015260405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac947906124129086905f90869030904290600401612ba5565b5f604051808303815f87803b158015612429575f80fd5b505af115801561243b573d5f803e3d5ffd5b5047925050811590506125f4576007545f9060649061246490600160b01b900460ff16846129d1565b61246e91906129e8565b6007549091505f9060649061248d90600160c01b900460ff16856129d1565b61249791906129e8565b90505f816124a58486612a9e565b6124af9190612a9e565b6006546040519192506001600160a01b03169083905f81818185875af1925050503d805f81146124fa576040519150601f19603f3d011682016040523d82523d5f602084013e6124ff565b606091505b50506005546040519197506001600160a01b03169082905f81818185875af1925050503d805f811461254c576040519150601f19603f3d011682016040523d82523d5f602084013e612551565b606091505b50506004546040519197506001600160a01b03169084905f81818185875af1925050503d805f811461259e576040519150601f19603f3d011682016040523d82523d5f602084013e6125a3565b606091505b50506040805189815260208101859052908101859052606081018390529096507f93efcf28fbf701a930e0ad258987a2e4f08eb3aa99f9c02029e7ba049f69405f9060800160405180910390a15050505b50505050565b5f5b838110156126145781810151838201526020016125fc565b50505f910152565b602081525f825180602084015261263a8160408501602087016125fa565b601f01601f19169190910160400192915050565b6001600160a01b0381168114612662575f80fd5b50565b5f8060408385031215612676575f80fd5b82356126818161264e565b946020939093013593505050565b5f805f606084860312156126a1575f80fd5b83356126ac8161264e565b925060208401356126bc8161264e565b929592945050506040919091013590565b5f602082840312156126dd575f80fd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612721576127216126e4565b604052919050565b5f67ffffffffffffffff821115612742576127426126e4565b5060051b60200190565b5f82601f83011261275b575f80fd5b8135602061277061276b83612729565b6126f8565b82815260059290921b8401810191818101908684111561278e575f80fd5b8286015b848110156127a95780358352918301918301612792565b509695505050505050565b5f80604083850312156127c5575f80fd5b823567ffffffffffffffff808211156127dc575f80fd5b818501915085601f8301126127ef575f80fd5b813560206127ff61276b83612729565b82815260059290921b8401810191818101908984111561281d575f80fd5b948201945b838610156128445785356128358161264e565b82529482019490820190612822565b96505086013592505080821115612859575f80fd5b506128668582860161274c565b9150509250929050565b803560ff81168114612880575f80fd5b919050565b5f805f60608486031215612897575f80fd5b6128a084612870565b92506128ae60208501612870565b91506128bc60408501612870565b90509250925092565b5f80604083850312156128d6575f80fd5b6128df83612870565b91506128ed60208401612870565b90509250929050565b8015158114612662575f80fd5b5f8060408385031215612914575f80fd5b823561291f8161264e565b9150602083013561292f816128f6565b809150509250929050565b5f6020828403121561294a575f80fd5b81356129558161264e565b9392505050565b5f806040838503121561296d575f80fd5b82356129788161264e565b9150602083013561292f8161264e565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761083e5761083e6129bd565b5f82612a0257634e487b7160e01b5f52601260045260245ffd5b500490565b60208082526010908201526f105b1c9958591e481b185d5b98da195960821b604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b60208082526026908201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604082015265616c616e636560d01b606082015260800190565b8082018082111561083e5761083e6129bd565b8181038181111561083e5761083e6129bd565b5f60018201612ac257612ac26129bd565b5060010190565b60ff818116838216019081111561083e5761083e6129bd565b5f60208284031215612af2575f80fd5b81516129558161264e565b5f60208284031215612b0d575f80fd5b8151612955816128f6565b5f805f60608486031215612b2a575f80fd5b8351925060208401519150604084015190509250925092565b602080825260169082015275416464726573732063616e6e6f74206265207a65726f60501b604082015260600190565b5f60208284031215612b83575f80fd5b5051919050565b5f8251612b9b8184602087016125fa565b9190910192915050565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015612bf35784516001600160a01b031683529383019391830191600101612bce565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212208fe50e07843a99f263794ad409870ffda31ecc091f3430448634ed18dbededaa64736f6c634300081500334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef

Deployed Bytecode

0x608060405260043610610262575f3560e01c806372f07ea61161013f578063bc205ad3116100b3578063d85ba06311610078578063d85ba06314610762578063daf6ca3014610782578063dd62ed3e146107a1578063e2f45605146107e5578063edecdae6146107fa578063f8b45b0514610819575f80fd5b8063bc205ad3146106cf578063c8c8ebe4146106ee578063cc32d17614610703578063d201b01e14610723578063d7c94efd14610742575f80fd5b806385ecafd71161010457806385ecafd7146105f25780638da5cb5b1461062957806395d89b41146106455780639a7a23d614610672578063a9059cbb14610691578063adfa29e5146106b0575f80fd5b806372f07ea61461057957806374010ece14610581578063751039fc146105a05780637cb332bb146105b4578063809d458d146105d3575f80fd5b806349bd5a5e116101d657806362beb0b51161019b57806362beb0b5146104bf5780636402511e146104d357806366650dae146104f25780636a486a8e1461051157806370a0823114610531578063715018a614610565575f80fd5b806349bd5a5e146104235780634a62bb65146104425780634fcd244614610462578063590ffdce1461048157806359927044146104a0575f80fd5b806323b872dd1161022757806323b872dd1461037357806327a14fc21461039257806329dde842146103b3578063313ce567146103d25780633c090c46146103e55780634626402b14610404575f80fd5b806306fdde031461026d578063095ea7b3146102ac5780631694505e146102db57806318160ddd1461031a57806321d37e3914610341575f80fd5b3661026957005b5f80fd5b348015610278575f80fd5b50604080518082019091526005815264119b1d5a5960da1b60208201525b6040516102a3919061261c565b60405180910390f35b3480156102b7575f80fd5b506102cb6102c6366004612665565b61082e565b60405190151581526020016102a3565b3480156102e6575f80fd5b50610302737a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b0390911681526020016102a3565b348015610325575f80fd5b506a084595161401484a0000005b6040519081526020016102a3565b34801561034c575f80fd5b5060075461036190600160b01b900460ff1681565b60405160ff90911681526020016102a3565b34801561037e575f80fd5b506102cb61038d36600461268f565b610844565b34801561039d575f80fd5b506103b16103ac3660046126cd565b6108f8565b005b3480156103be575f80fd5b506103b16103cd3660046127b4565b6109db565b3480156103dd575f80fd5b506012610361565b3480156103f0575f80fd5b506103b16103ff366004612885565b610bf7565b34801561040f575f80fd5b50600554610302906001600160a01b031681565b34801561042e575f80fd5b50600d54610302906001600160a01b031681565b34801561044d575f80fd5b506007546102cb90600160d01b900460ff1681565b34801561046d575f80fd5b506103b161047c3660046128c5565b610cfa565b34801561048c575f80fd5b506103b161049b366004612903565b610e33565b3480156104ab575f80fd5b50600654610302906001600160a01b031681565b3480156104ca575f80fd5b506103b1610e95565b3480156104de575f80fd5b506103b16104ed3660046126cd565b610f0c565b3480156104fd575f80fd5b506103b161050c366004612903565b611069565b34801561051c575f80fd5b5060075461036190600160a81b900460ff1681565b34801561053c575f80fd5b5061033361054b36600461293a565b6001600160a01b03165f9081526008602052604090205490565b348015610570575f80fd5b506103b16110cb565b6103b1611114565b34801561058c575f80fd5b506103b161059b3660046126cd565b611409565b3480156105ab575f80fd5b506103b16114f1565b3480156105bf575f80fd5b506103b16105ce36600461293a565b611538565b3480156105de575f80fd5b506103b16105ed36600461293a565b6115b8565b3480156105fd575f80fd5b506102cb61060c36600461293a565b6001600160a01b03165f908152600a602052604090205460ff1690565b348015610634575f80fd5b505f546001600160a01b0316610302565b348015610650575f80fd5b50604080518082019091526005815264119315525160da1b6020820152610296565b34801561067d575f80fd5b506103b161068c366004612903565b611638565b34801561069c575f80fd5b506102cb6106ab366004612665565b6116f8565b3480156106bb575f80fd5b506103b16106ca36600461293a565b611704565b3480156106da575f80fd5b506103b16106e936600461295c565b611784565b3480156106f9575f80fd5b5061033360015481565b34801561070e575f80fd5b5060075461036190600160b81b900460ff1681565b34801561072e575f80fd5b506103b161073d36600461293a565b611831565b34801561074d575f80fd5b5060075461036190600160c01b900460ff1681565b34801561076d575f80fd5b5060075461036190600160a01b900460ff1681565b34801561078d575f80fd5b50600754610302906001600160a01b031681565b3480156107ac575f80fd5b506103336107bb36600461295c565b6001600160a01b039182165f90815260096020908152604080832093909416825291909152205490565b3480156107f0575f80fd5b5061033360035481565b348015610805575f80fd5b50600454610302906001600160a01b031681565b348015610824575f80fd5b5061033360025481565b5f61083a338484611948565b5060015b92915050565b6001600160a01b0383165f9081526009602090815260408083203384529091528120545f1981146108e257828110156108d55760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6108e28533858403611948565b6108ed858585611a6b565b506001949350505050565b3361090a5f546001600160a01b031690565b6001600160a01b0316146109305760405162461bcd60e51b81526004016108cc90612988565b670de0b6b3a76400006103e86109526a084595161401484a00000060016129d1565b61095c91906129e8565b61096691906129e8565b8110156109c35760405162461bcd60e51b815260206004820152602560248201527f43616e6e6f7420736574206d61782077616c6c6574206c6f776572207468616e60448201526420302e312560d81b60648201526084016108cc565b6109d581670de0b6b3a76400006129d1565b60025550565b336109ed5f546001600160a01b031690565b6001600160a01b031614610a135760405162461bcd60e51b81526004016108cc90612988565b600754600160d81b900460ff1615610a3d5760405162461bcd60e51b81526004016108cc90612a07565b5f5b8251811015610bf257818181518110610a5a57610a5a612a31565b602002602001015160085f336001600160a01b03166001600160a01b031681526020019081526020015f20541015610aa45760405162461bcd60e51b81526004016108cc90612a45565b818181518110610ab657610ab6612a31565b602002602001015160085f858481518110610ad357610ad3612a31565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f205f828254610b089190612a8b565b92505081905550818181518110610b2157610b21612a31565b602002602001015160085f336001600160a01b03166001600160a01b031681526020019081526020015f205f828254610b5a9190612a9e565b92505081905550828181518110610b7357610b73612a31565b60200260200101516001600160a01b0316336001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef848481518110610bc157610bc1612a31565b6020026020010151604051610bd891815260200190565b60405180910390a380610bea81612ab1565b915050610a3f565b505050565b33610c095f546001600160a01b031690565b6001600160a01b031614610c2f5760405162461bcd60e51b81526004016108cc90612988565b6007805461ffff60b01b1916600160b01b60ff868116820260ff60b81b191692909217600160b81b86841681029190911760ff60c01b1916600160c01b868516810291909117948590558404831693610c9093918104821692900416612ac9565b610c9a9190612ac9565b60ff16606414610bf25760405162461bcd60e51b815260206004820152602560248201527f446973747269627574696f6e206d75737420746f20626520657175616c20746f604482015264203130302560d81b60648201526084016108cc565b33610d0c5f546001600160a01b031690565b6001600160a01b031614610d325760405162461bcd60e51b81526004016108cc90612988565b60328260ff161115610d985760405162461bcd60e51b815260206004820152602960248201527f4275792066656573206d757374206265206c657373207468616e206f7220657160448201526875616c20746f20352560b81b60648201526084016108cc565b60328160ff161115610dff5760405162461bcd60e51b815260206004820152602a60248201527f53656c6c2066656573206d757374206265206c657373207468616e206f7220656044820152697175616c20746f20352560b01b60648201526084016108cc565b6007805461ffff60a01b1916600160a01b60ff9485160260ff60a81b191617600160a81b9290931691909102919091179055565b33610e455f546001600160a01b031690565b6001600160a01b031614610e6b5760405162461bcd60e51b81526004016108cc90612988565b6001600160a01b03919091165f908152600a60205260409020805460ff1916911515919091179055565b33610ea75f546001600160a01b031690565b6001600160a01b031614610ecd5760405162461bcd60e51b81526004016108cc90612988565b600754600160d81b900460ff1615610ef75760405162461bcd60e51b81526004016108cc90612a07565b6007805460ff60d81b1916600160d81b179055565b33610f1e5f546001600160a01b031690565b6001600160a01b031614610f445760405162461bcd60e51b81526004016108cc90612988565b620186a0610f5e6a084595161401484a00000060016129d1565b610f6891906129e8565b811015610fd55760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527420302e30303125206f662074686520737570706c7960581b60648201526084016108cc565b6103e8610fee6a084595161401484a00000060056129d1565b610ff891906129e8565b8111156110645760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f7420626520686967686572207468616044820152736e20302e3525206f662074686520737570706c7960601b60648201526084016108cc565b600355565b3361107b5f546001600160a01b031690565b6001600160a01b0316146110a15760405162461bcd60e51b81526004016108cc90612988565b6001600160a01b03919091165f908152600b60205260409020805460ff1916911515919091179055565b336110dd5f546001600160a01b031690565b6001600160a01b0316146111035760405162461bcd60e51b81526004016108cc90612988565b5f80546001600160a01b0319169055565b336111265f546001600160a01b031690565b6001600160a01b03161461114c5760405162461bcd60e51b81526004016108cc90612988565b600754600160d81b900460ff16156111765760405162461bcd60e51b81526004016108cc90612a07565b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111c6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111ea9190612ae2565b6040516364e329cb60e11b815230600482015273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc260248201526001600160a01b03919091169063c9c65396906044016020604051808303815f875af1158015611249573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061126d9190612ae2565b600d80546001600160a01b0319166001600160a01b039290921691821790556112999030905f19611948565b600d5460405163095ea7b360e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d60048201525f1960248201526001600160a01b039091169063095ea7b3906044016020604051808303815f875af11580156112fb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061131f9190612afd565b50600d80546001600160a01b039081165f908152600c60205260409020805460ff19166001908117909155915461135892911690611069565b305f8181526008602052604080822054600654915163f305d71960e01b8152600481019490945260248401526044830182905260648301919091526001600160a01b031660848201524260a4820152737a250d5630b4cf539739df2c5dacb4c659f2488d9063f305d71990349060c40160606040518083038185885af11580156113e4573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610bf29190612b18565b3361141b5f546001600160a01b031690565b6001600160a01b0316146114415760405162461bcd60e51b81526004016108cc90612988565b670de0b6b3a76400006103e86114636a084595161401484a00000060016129d1565b61146d91906129e8565b61147791906129e8565b8110156114d95760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d6178207472616e73616374696f6e206c6f776572604482015269207468616e20302e312560b01b60648201526084016108cc565b6114eb81670de0b6b3a76400006129d1565b60015550565b336115035f546001600160a01b031690565b6001600160a01b0316146115295760405162461bcd60e51b81526004016108cc90612988565b6007805460ff60d01b19169055565b3361154a5f546001600160a01b031690565b6001600160a01b0316146115705760405162461bcd60e51b81526004016108cc90612988565b6001600160a01b0381166115965760405162461bcd60e51b81526004016108cc90612b43565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b336115ca5f546001600160a01b031690565b6001600160a01b0316146115f05760405162461bcd60e51b81526004016108cc90612988565b6001600160a01b0381166116165760405162461bcd60e51b81526004016108cc90612b43565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b3361164a5f546001600160a01b031690565b6001600160a01b0316146116705760405162461bcd60e51b81526004016108cc90612988565b600d546001600160a01b03908116908316036116ce5760405162461bcd60e51b815260206004820152601a60248201527f54686520706169722063616e6e6f742062652072656d6f76656400000000000060448201526064016108cc565b6001600160a01b03919091165f908152600c60205260409020805460ff1916911515919091179055565b5f61083a338484611a6b565b336117165f546001600160a01b031690565b6001600160a01b03161461173c5760405162461bcd60e51b81526004016108cc90612988565b6001600160a01b0381166117625760405162461bcd60e51b81526004016108cc90612b43565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b336117965f546001600160a01b031690565b6001600160a01b0316146117bc5760405162461bcd60e51b81526004016108cc90612988565b6040516370a0823160e01b81523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa158015611800573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118249190612b73565b9050610bf28383836121e4565b336118435f546001600160a01b031690565b6001600160a01b0316146118695760405162461bcd60e51b81526004016108cc90612988565b6001600160a01b0381166118b15760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b60448201526064016108cc565b5f816001600160a01b0316476040515f6040518083038185875af1925050503d805f81146118fa576040519150601f19603f3d011682016040523d82523d5f602084013e6118ff565b606091505b50509050806119445760405162461bcd60e51b815260206004820152601160248201527015da5d1a191c985dd85b0819985a5b1959607a1b60448201526064016108cc565b5050565b6001600160a01b0383166119aa5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108cc565b6001600160a01b038216611a0b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108cc565b6001600160a01b038381165f8181526009602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611acf5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108cc565b6001600160a01b038216611b315760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108cc565b5f8111611b925760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016108cc565b600754600160d81b900460ff16158015611be657505f546001600160a01b03848116911614801590611bcd57506001600160a01b0383163014155b8015611be657505f546001600160a01b03838116911614155b15611c295760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b60448201526064016108cc565b600754600160d01b900460ff1615611eea575f546001600160a01b03848116911614801590611c6557505f546001600160a01b03838116911614155b8015611c7957506001600160a01b03821615155b8015611c9057506001600160a01b03821661dead14155b8015611ca65750600754600160c81b900460ff16155b15611eea576001600160a01b0383165f908152600c602052604090205460ff168015611cea57506001600160a01b0382165f908152600b602052604090205460ff16155b15611dbd57600154811115611d4f5760405162461bcd60e51b815260206004820152602560248201527f427579207472616e7366657220616d6f756e74206578636565647320746865206044820152640dac2f0a8f60db1b60648201526084016108cc565b6002546001600160a01b0383165f90815260086020526040902054611d749083612a8b565b1115611db85760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016108cc565b611eea565b6001600160a01b0382165f908152600c602052604090205460ff168015611dfc57506001600160a01b0383165f908152600b602052604090205460ff16155b15611e6257600154811115611db85760405162461bcd60e51b815260206004820152602660248201527f53656c6c207472616e7366657220616d6f756e74206578636565647320746865604482015265040dac2f0a8f60d31b60648201526084016108cc565b6001600160a01b0382165f908152600b602052604090205460ff16611eea576002546001600160a01b0383165f90815260086020526040902054611ea69083612a8b565b1115611eea5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016108cc565b600354305f90815260086020526040902054108015908190611f165750600754600160c81b900460ff16155b8015611f3a57506001600160a01b0384165f908152600c602052604090205460ff16155b8015611f5e57506001600160a01b0384165f908152600a602052604090205460ff16155b8015611f8257506001600160a01b0383165f908152600a602052604090205460ff16155b15611fb0576007805460ff60c81b1916600160c81b179055611fa261230b565b6007805460ff60c81b191690555b6007546001600160a01b0385165f908152600a602052604090205460ff600160c81b909204821615911680611ffc57506001600160a01b0384165f908152600a602052604090205460ff165b1561200457505f5b6001600160a01b0385165f908152600860205260409020548381101561203c5760405162461bcd60e51b81526004016108cc90612a45565b5f8215612172576001600160a01b0386165f908152600c602052604090205460ff1680156120755750600754600160a81b900460ff1615155b156120a6576007546103e89061209590600160a81b900460ff16876129d1565b61209f91906129e8565b9050612105565b6001600160a01b0387165f908152600c602052604090205460ff1680156120d85750600754600160a01b900460ff1615155b15612105576007546103e8906120f890600160a01b900460ff16876129d1565b61210291906129e8565b90505b8015612172576001600160a01b0387165f8181526008602090815260408083208054869003905530808452928190208054860190555184815297849003979192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35b6001600160a01b038088165f8181526008602052604080822080548a900390559289168082529083902080548901905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906121d39089815260200190565b60405180910390a350505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b17905291515f9283929087169161223f9190612b8a565b5f604051808303815f865af19150503d805f8114612278576040519150601f19603f3d011682016040523d82523d5f602084013e61227d565b606091505b50915091508180156122a75750805115806122a75750808060200190518101906122a79190612afd565b6123045760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657248656c7065723a20494e5445524e414c205452414e5346456044820152671497d1905253115160c21b60648201526084016108cc565b5050505050565b6003545f61231a8260146129d1565b305f9081526008602052604090205411156123405760035461233d9060146129d1565b91505b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061237357612373612a31565b60200260200101906001600160a01b031690816001600160a01b03168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2816001815181106123bb576123bb612a31565b6001600160a01b039092166020928302919091019091015260405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac947906124129086905f90869030904290600401612ba5565b5f604051808303815f87803b158015612429575f80fd5b505af115801561243b573d5f803e3d5ffd5b5047925050811590506125f4576007545f9060649061246490600160b01b900460ff16846129d1565b61246e91906129e8565b6007549091505f9060649061248d90600160c01b900460ff16856129d1565b61249791906129e8565b90505f816124a58486612a9e565b6124af9190612a9e565b6006546040519192506001600160a01b03169083905f81818185875af1925050503d805f81146124fa576040519150601f19603f3d011682016040523d82523d5f602084013e6124ff565b606091505b50506005546040519197506001600160a01b03169082905f81818185875af1925050503d805f811461254c576040519150601f19603f3d011682016040523d82523d5f602084013e612551565b606091505b50506004546040519197506001600160a01b03169084905f81818185875af1925050503d805f811461259e576040519150601f19603f3d011682016040523d82523d5f602084013e6125a3565b606091505b50506040805189815260208101859052908101859052606081018390529096507f93efcf28fbf701a930e0ad258987a2e4f08eb3aa99f9c02029e7ba049f69405f9060800160405180910390a15050505b50505050565b5f5b838110156126145781810151838201526020016125fc565b50505f910152565b602081525f825180602084015261263a8160408501602087016125fa565b601f01601f19169190910160400192915050565b6001600160a01b0381168114612662575f80fd5b50565b5f8060408385031215612676575f80fd5b82356126818161264e565b946020939093013593505050565b5f805f606084860312156126a1575f80fd5b83356126ac8161264e565b925060208401356126bc8161264e565b929592945050506040919091013590565b5f602082840312156126dd575f80fd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612721576127216126e4565b604052919050565b5f67ffffffffffffffff821115612742576127426126e4565b5060051b60200190565b5f82601f83011261275b575f80fd5b8135602061277061276b83612729565b6126f8565b82815260059290921b8401810191818101908684111561278e575f80fd5b8286015b848110156127a95780358352918301918301612792565b509695505050505050565b5f80604083850312156127c5575f80fd5b823567ffffffffffffffff808211156127dc575f80fd5b818501915085601f8301126127ef575f80fd5b813560206127ff61276b83612729565b82815260059290921b8401810191818101908984111561281d575f80fd5b948201945b838610156128445785356128358161264e565b82529482019490820190612822565b96505086013592505080821115612859575f80fd5b506128668582860161274c565b9150509250929050565b803560ff81168114612880575f80fd5b919050565b5f805f60608486031215612897575f80fd5b6128a084612870565b92506128ae60208501612870565b91506128bc60408501612870565b90509250925092565b5f80604083850312156128d6575f80fd5b6128df83612870565b91506128ed60208401612870565b90509250929050565b8015158114612662575f80fd5b5f8060408385031215612914575f80fd5b823561291f8161264e565b9150602083013561292f816128f6565b809150509250929050565b5f6020828403121561294a575f80fd5b81356129558161264e565b9392505050565b5f806040838503121561296d575f80fd5b82356129788161264e565b9150602083013561292f8161264e565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761083e5761083e6129bd565b5f82612a0257634e487b7160e01b5f52601260045260245ffd5b500490565b60208082526010908201526f105b1c9958591e481b185d5b98da195960821b604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b60208082526026908201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604082015265616c616e636560d01b606082015260800190565b8082018082111561083e5761083e6129bd565b8181038181111561083e5761083e6129bd565b5f60018201612ac257612ac26129bd565b5060010190565b60ff818116838216019081111561083e5761083e6129bd565b5f60208284031215612af2575f80fd5b81516129558161264e565b5f60208284031215612b0d575f80fd5b8151612955816128f6565b5f805f60608486031215612b2a575f80fd5b8351925060208401519150604084015190509250925092565b602080825260169082015275416464726573732063616e6e6f74206265207a65726f60501b604082015260600190565b5f60208284031215612b83575f80fd5b5051919050565b5f8251612b9b8184602087016125fa565b9190910192915050565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015612bf35784516001600160a01b031683529383019391830191600101612bce565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212208fe50e07843a99f263794ad409870ffda31ecc091f3430448634ed18dbededaa64736f6c63430008150033

Deployed Bytecode Sourcemap

1869:13699:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5227:83;;;;;;;;;;-1:-1:-1;5297:5:0;;;;;;;;;;;;-1:-1:-1;;;5297:5:0;;;;5227:83;;;;;;;:::i;:::-;;;;;;;;5856:152;;;;;;;;;;-1:-1:-1;5856:152:0;;;;;:::i;:::-;;:::i;:::-;;;1291:14:1;;1284:22;1266:41;;1254:2;1239:18;5856:152:0;1126:187:1;3539:115:0;;;;;;;;;;;;3611:42;3539:115;;;;;-1:-1:-1;;;;;1508:32:1;;;1490:51;;1478:2;1463:18;3539:115:0;1318:229:1;5497:91:0;;;;;;;;;;-1:-1:-1;2050:17:0;5497:91;;;1698:25:1;;;1686:2;1671:18;5497:91:0;1552:177:1;2749:24:0;;;;;;;;;;-1:-1:-1;2749:24:0;;;;-1:-1:-1;;;2749:24:0;;;;;;;;;1906:4:1;1894:17;;;1876:36;;1864:2;1849:18;2749:24:0;1734:184:1;6527:520:0;;;;;;;;;;-1:-1:-1;6527:520:0;;;;;:::i;:::-;;:::i;13010:235::-;;;;;;;;;;-1:-1:-1;13010:235:0;;;;;:::i;:::-;;:::i;:::-;;10795:492;;;;;;;;;;-1:-1:-1;10795:492:0;;;;;:::i;:::-;;:::i;5413:76::-;;;;;;;;;;-1:-1:-1;5479:2:0;5413:76;;9832:300;;;;;;;;;;-1:-1:-1;9832:300:0;;;;;:::i;:::-;;:::i;2352:74::-;;;;;;;;;;-1:-1:-1;2352:74:0;;;;-1:-1:-1;;;;;2352:74:0;;;3661:28;;;;;;;;;;-1:-1:-1;3661:28:0;;;;-1:-1:-1;;;;;3661:28:0;;;2878:33;;;;;;;;;;-1:-1:-1;2878:33:0;;;;-1:-1:-1;;;2878:33:0;;;;;;10140:337;;;;;;;;;;-1:-1:-1;10140:337:0;;;;;:::i;:::-;;:::i;10485:136::-;;;;;;;;;;-1:-1:-1;10485:136:0;;;;;:::i;:::-;;:::i;2433:70::-;;;;;;;;;;-1:-1:-1;2433:70:0;;;;-1:-1:-1;;;;;2433:70:0;;;11295:131;;;;;;;;;;;;;:::i;12397:361::-;;;;;;;;;;-1:-1:-1;12397:361:0;;;;;:::i;:::-;;:::i;10629:158::-;;;;;;;;;;-1:-1:-1;10629:158:0;;;;;:::i;:::-;;:::i;2709:31::-;;;;;;;;;;-1:-1:-1;2709:31:0;;;;-1:-1:-1;;;2709:31:0;;;;;;5596:110;;;;;;;;;;-1:-1:-1;5596:110:0;;;;;:::i;:::-;-1:-1:-1;;;;;5680:18:0;5653:7;5680:18;;;:9;:18;;;;;;;5596:110;486:92;;;;;;;;;;;;;:::i;11434:736::-;;;:::i;12766:236::-;;;;;;;;;;-1:-1:-1;12766:236:0;;;;;:::i;:::-;;:::i;9740:84::-;;;;;;;;;;;;;:::i;13629:177::-;;;;;;;;;;-1:-1:-1;13629:177:0;;;;;:::i;:::-;;:::i;13436:185::-;;;;;;;;;;-1:-1:-1;13436:185:0;;;;;:::i;:::-;;:::i;13814:123::-;;;;;;;;;;-1:-1:-1;13814:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;13901:28:0;13877:4;13901:28;;;:19;:28;;;;;;;;;13814:123;265:87;;;;;;;;;;-1:-1:-1;311:7:0;338:6;-1:-1:-1;;;;;338:6:0;265:87;;5318;;;;;;;;;;-1:-1:-1;5390:7:0;;;;;;;;;;;;-1:-1:-1;;;5390:7:0;;;;5318:87;;12178:211;;;;;;;;;;-1:-1:-1;12178:211:0;;;;;:::i;:::-;;:::i;6361:158::-;;;;;;;;;;-1:-1:-1;6361:158:0;;;;;:::i;:::-;;:::i;13253:175::-;;;;;;;;;;-1:-1:-1;13253:175:0;;;;;:::i;:::-;;:::i;13945:240::-;;;;;;;;;;-1:-1:-1;13945:240:0;;;;;:::i;:::-;;:::i;2076:52::-;;;;;;;;;;;;;;;;2780:29;;;;;;;;;;-1:-1:-1;2780:29:0;;;;-1:-1:-1;;;2780:29:0;;;;;;14193:247;;;;;;;;;;-1:-1:-1;14193:247:0;;;;;:::i;:::-;;:::i;2816:25::-;;;;;;;;;;-1:-1:-1;2816:25:0;;;;-1:-1:-1;;;2816:25:0;;;;;;2672:30;;;;;;;;;;-1:-1:-1;2672:30:0;;;;-1:-1:-1;;;2672:30:0;;;;;;2510:72;;;;;;;;;;-1:-1:-1;2510:72:0;;;;-1:-1:-1;;;;;2510:72:0;;;5714:134;;;;;;;;;;-1:-1:-1;5714:134:0;;;;;:::i;:::-;-1:-1:-1;;;;;5813:18:0;;;5786:7;5813:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;5714:134;2197:62;;;;;;;;;;;;;;;;2276:69;;;;;;;;;;-1:-1:-1;2276:69:0;;;;-1:-1:-1;;;;;2276:69:0;;;2142:41;;;;;;;;;;;;;;;;5856:152;5924:4;5941:37;5950:10;5962:7;5971:6;5941:8;:37::i;:::-;-1:-1:-1;5996:4:0;5856:152;;;;;:::o;6527:520::-;-1:-1:-1;;;;;6662:19:0;;6618:4;6662:19;;;:11;:19;;;;;;;;6682:10;6662:31;;;;;;;;-1:-1:-1;;6708:37:0;;6704:263;;6790:6;6770:16;:26;;6762:79;;;;-1:-1:-1;;;6762:79:0;;7366:2:1;6762:79:0;;;7348:21:1;7405:2;7385:18;;;7378:30;7444:34;7424:18;;;7417:62;-1:-1:-1;;;7495:18:1;;;7488:38;7543:19;;6762:79:0;;;;;;;;;6885:55;6894:6;6902:10;6933:6;6914:16;:25;6885:8;:55::i;:::-;6979:36;6989:6;6997:9;7008:6;6979:9;:36::i;:::-;-1:-1:-1;7035:4:0;;6527:520;-1:-1:-1;;;;6527:520:0:o;13010:235::-;411:10;400:7;311;338:6;-1:-1:-1;;;;;338:6:0;;265:87;400:7;-1:-1:-1;;;;;400:21:0;;392:66;;;;-1:-1:-1;;;392:66:0;;;;;;;:::i;:::-;13145:4:::1;13137;13116:17;2050::::0;13132:1:::1;13116:17;:::i;:::-;13115:26;;;;:::i;:::-;13114:35;;;;:::i;:::-;13098:12;:51;;13090:101;;;::::0;-1:-1:-1;;;13090:101:0;;8663:2:1;13090:101:0::1;::::0;::::1;8645:21:1::0;8702:2;8682:18;;;8675:30;8741:34;8721:18;;;8714:62;-1:-1:-1;;;8792:18:1;;;8785:35;8837:19;;13090:101:0::1;8461:401:1::0;13090:101:0::1;13214:23;:12:::0;13230:6:::1;13214:23;:::i;:::-;13202:9;:35:::0;-1:-1:-1;13010:235:0:o;10795:492::-;411:10;400:7;311;338:6;-1:-1:-1;;;;;338:6:0;;265:87;400:7;-1:-1:-1;;;;;400:21:0;;392:66;;;;-1:-1:-1;;;392:66:0;;;;;;;:::i;:::-;10912:8:::1;::::0;-1:-1:-1;;;10912:8:0;::::1;;;10911:9;10903:38;;;;-1:-1:-1::0;;;10903:38:0::1;;;;;;;:::i;:::-;10957:9;10952:328;10976:9;:16;10972:1;:20;10952:328;;;11047:7;11055:1;11047:10;;;;;;;;:::i;:::-;;;;;;;11022:9;:21;11032:10;-1:-1:-1::0;;;;;11022:21:0::1;-1:-1:-1::0;;;;;11022:21:0::1;;;;;;;;;;;;;:35;;11014:86;;;;-1:-1:-1::0;;;11014:86:0::1;;;;;;;:::i;:::-;11142:7;11150:1;11142:10;;;;;;;;:::i;:::-;;;;;;;11115:9;:23;11125:9;11135:1;11125:12;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;11115:23:0::1;-1:-1:-1::0;;;;;11115:23:0::1;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;;;;;;;11192:7;11200:1;11192:10;;;;;;;;:::i;:::-;;;;;;;11167:9;:21;11177:10;-1:-1:-1::0;;;;;11167:21:0::1;-1:-1:-1::0;;;;;11167:21:0::1;;;;;;;;;;;;;:35;;;;;;;:::i;:::-;;;;;;;;11243:9;11253:1;11243:12;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;11222:46:0::1;11231:10;-1:-1:-1::0;;;;;11222:46:0::1;;11257:7;11265:1;11257:10;;;;;;;;:::i;:::-;;;;;;;11222:46;;;;1698:25:1::0;;1686:2;1671:18;;1552:177;11222:46:0::1;;;;;;;;10994:3:::0;::::1;::::0;::::1;:::i;:::-;;;;10952:328;;;;10795:492:::0;;:::o;9832:300::-;411:10;400:7;311;338:6;-1:-1:-1;;;;;338:6:0;;265:87;400:7;-1:-1:-1;;;;;400:21:0;;392:66;;;;-1:-1:-1;;;392:66:0;;;;;;;:::i;:::-;9942:6:::1;:16:::0;;-1:-1:-1;;;;9969:26:0;-1:-1:-1;;;9942:16:0::1;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;;;9969:26:0;;;;;-1:-1:-1;;;9969:26:0;;::::1;::::0;::::1;::::0;;;::::1;-1:-1:-1::0;;;;10006:18:0::1;-1:-1:-1::0;;;10006:18:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;;10067:7;::::1;::::0;::::1;::::0;10044:20:::1;::::0;10053:11;;::::1;::::0;::::1;::::0;10044:6;::::1;;:20;:::i;:::-;:30;;;;:::i;:::-;10043:39;;10079:3;10043:39;10035:89;;;::::0;-1:-1:-1;;;10035:89:0;;10509:2:1;10035:89:0::1;::::0;::::1;10491:21:1::0;10548:2;10528:18;;;10521:30;10587:34;10567:18;;;10560:62;-1:-1:-1;;;10638:18:1;;;10631:35;10683:19;;10035:89:0::1;10307:401:1::0;10140:337:0;411:10;400:7;311;338:6;-1:-1:-1;;;;;338:6:0;;265:87;400:7;-1:-1:-1;;;;;400:21:0;;392:66;;;;-1:-1:-1;;;392:66:0;;;;;;;:::i;:::-;10255:2:::1;10238:13;:19;;;;10230:73;;;::::0;-1:-1:-1;;;10230:73:0;;10915:2:1;10230:73:0::1;::::0;::::1;10897:21:1::0;10954:2;10934:18;;;10927:30;10993:34;10973:18;;;10966:62;-1:-1:-1;;;11044:18:1;;;11037:39;11093:19;;10230:73:0::1;10713:405:1::0;10230:73:0::1;10340:2;10322:14;:20;;;;10314:75;;;::::0;-1:-1:-1;;;10314:75:0;;11325:2:1;10314:75:0::1;::::0;::::1;11307:21:1::0;11364:2;11344:18;;;11337:30;11403:34;11383:18;;;11376:62;-1:-1:-1;;;11454:18:1;;;11447:40;11504:19;;10314:75:0::1;11123:406:1::0;10314:75:0::1;10400:12;:28:::0;;-1:-1:-1;;;;10439:30:0;-1:-1:-1;;;10400:28:0::1;::::0;;::::1;;-1:-1:-1::0;;;;10439:30:0;;-1:-1:-1;;;10439:30:0;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;10140:337::o;10485:136::-;411:10;400:7;311;338:6;-1:-1:-1;;;;;338:6:0;;265:87;400:7;-1:-1:-1;;;;;400:21:0;;392:66;;;;-1:-1:-1;;;392:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10574:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:39;;-1:-1:-1;;10574:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;10485:136::o;11295:131::-;411:10;400:7;311;338:6;-1:-1:-1;;;;;338:6:0;;265:87;400:7;-1:-1:-1;;;;;400:21:0;;392:66;;;;-1:-1:-1;;;392:66:0;;;;;;;:::i;:::-;11363:8:::1;::::0;-1:-1:-1;;;11363:8:0;::::1;;;11362:9;11354:38;;;;-1:-1:-1::0;;;11354:38:0::1;;;;;;;:::i;:::-;11403:8;:15:::0;;-1:-1:-1;;;;11403:15:0::1;-1:-1:-1::0;;;11403:15:0::1;::::0;;11295:131::o;12397:361::-;411:10;400:7;311;338:6;-1:-1:-1;;;;;338:6:0;;265:87;400:7;-1:-1:-1;;;;;400:21:0;;392:66;;;;-1:-1:-1;;;392:66:0;;;;;;;:::i;:::-;12522:6:::1;12501:17;2050::::0;12517:1:::1;12501:17;:::i;:::-;12500:28;;;;:::i;:::-;12483:13;:45;;12475:111;;;::::0;-1:-1:-1;;;12475:111:0;;11736:2:1;12475:111:0::1;::::0;::::1;11718:21:1::0;11775:2;11755:18;;;11748:30;11814:34;11794:18;;;11787:62;-1:-1:-1;;;11865:18:1;;;11858:51;11926:19;;12475:111:0::1;11534:417:1::0;12475:111:0::1;12644:4;12623:17;2050::::0;12639:1:::1;12623:17;:::i;:::-;12622:26;;;;:::i;:::-;12605:13;:43;;12597:108;;;::::0;-1:-1:-1;;;12597:108:0;;12158:2:1;12597:108:0::1;::::0;::::1;12140:21:1::0;12197:2;12177:18;;;12170:30;12236:34;12216:18;;;12209:62;-1:-1:-1;;;12287:18:1;;;12280:50;12347:19;;12597:108:0::1;11956:416:1::0;12597:108:0::1;12716:18;:34:::0;12397:361::o;10629:158::-;411:10;400:7;311;338:6;-1:-1:-1;;;;;338:6:0;;265:87;400:7;-1:-1:-1;;;;;400:21:0;;392:66;;;;-1:-1:-1;;;392:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10728:40:0;;;::::1;;::::0;;;:31:::1;:40;::::0;;;;:51;;-1:-1:-1;;10728:51:0::1;::::0;::::1;;::::0;;;::::1;::::0;;10629:158::o;486:92::-;411:10;400:7;311;338:6;-1:-1:-1;;;;;338:6:0;;265:87;400:7;-1:-1:-1;;;;;400:21:0;;392:66;;;;-1:-1:-1;;;392:66:0;;;;;;;:::i;:::-;568:1:::1;551:19:::0;;-1:-1:-1;;;;;;551:19:0::1;::::0;;486:92::o;11434:736::-;411:10;400:7;311;338:6;-1:-1:-1;;;;;338:6:0;;265:87;400:7;-1:-1:-1;;;;;400:21:0;;392:66;;;;-1:-1:-1;;;392:66:0;;;;;;;:::i;:::-;11504:8:::1;::::0;-1:-1:-1;;;11504:8:0;::::1;;;11503:9;11495:38;;;;-1:-1:-1::0;;;11495:38:0::1;;;;;;;:::i;:::-;3611:42;-1:-1:-1::0;;;;;11580:23:0::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11562:76;::::0;-1:-1:-1;;;11562:76:0;;11626:4:::1;11562:76;::::0;::::1;12845:34:1::0;2621:42:0::1;12895:18:1::0;;;12888:43;-1:-1:-1;;;;;11562:55:0;;;::::1;::::0;::::1;::::0;12780:18:1;;11562:76:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11546:13;:92:::0;;-1:-1:-1;;;;;;11546:92:0::1;-1:-1:-1::0;;;;;11546:92:0;;;::::1;::::0;;::::1;::::0;;11651:66:::1;::::0;11668:4:::1;::::0;-1:-1:-1;;11651:8:0::1;:66::i;:::-;11737:13;::::0;11730:73:::1;::::0;-1:-1:-1;;;11730:73:0;;3611:42:::1;11730:73;::::0;::::1;13116:51:1::0;-1:-1:-1;;13183:18:1;;;13176:34;-1:-1:-1;;;;;11737:13:0;;::::1;::::0;11730:29:::1;::::0;13089:18:1;;11730:73:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;11842:13:0::1;::::0;;-1:-1:-1;;;;;11842:13:0;;::::1;11816:40;::::0;;;:25:::1;:40;::::0;;;;:47;;-1:-1:-1;;11816:47:0::1;11859:4;11816:47:::0;;::::1;::::0;;;11914:13;;11876:59:::1;::::0;11914:13;::::1;::::0;11876:29:::1;:59::i;:::-;12020:4;12040:24;::::0;;;:9:::1;:24;::::0;;;;;;12111:10:::1;::::0;11948:214;;-1:-1:-1;;;11948:214:0;;::::1;::::0;::::1;13812:34:1::0;;;;13862:18;;;13855:34;13905:18;;;13898:34;;;13948:18;;;13941:34;;;;-1:-1:-1;;;;;12111:10:0::1;13991:19:1::0;;;13984:44;12136:15:0::1;14044:19:1::0;;;14037:35;3611:42:0::1;::::0;11948:31:::1;::::0;11987:9:::1;::::0;13746:19:1;;11948:214:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;12766:236::-:0;411:10;400:7;311;338:6;-1:-1:-1;;;;;338:6:0;;265:87;400:7;-1:-1:-1;;;;;400:21:0;;392:66;;;;-1:-1:-1;;;392:66:0;;;;;;;:::i;:::-;12890:4:::1;12882;12861:17;2050::::0;12877:1:::1;12861:17;:::i;:::-;12860:26;;;;:::i;:::-;12859:35;;;;:::i;:::-;12847:8;:47;;12839:102;;;::::0;-1:-1:-1;;;12839:102:0;;14596:2:1;12839:102:0::1;::::0;::::1;14578:21:1::0;14635:2;14615:18;;;14608:30;14674:34;14654:18;;;14647:62;-1:-1:-1;;;14725:18:1;;;14718:40;14775:19;;12839:102:0::1;14394:406:1::0;12839:102:0::1;12975:19;:8:::0;12987:6:::1;12975:19;:::i;:::-;12952:20;:42:::0;-1:-1:-1;12766:236:0:o;9740:84::-;411:10;400:7;311;338:6;-1:-1:-1;;;;;338:6:0;;265:87;400:7;-1:-1:-1;;;;;400:21:0;;392:66;;;;-1:-1:-1;;;392:66:0;;;;;;;:::i;:::-;9794:14:::1;:22:::0;;-1:-1:-1;;;;9794:22:0::1;::::0;;9740:84::o;13629:177::-;411:10;400:7;311;338:6;-1:-1:-1;;;;;338:6:0;;265:87;400:7;-1:-1:-1;;;;;400:21:0;;392:66;;;;-1:-1:-1;;;392:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13713:24:0;::::1;13705:59;;;;-1:-1:-1::0;;;13705:59:0::1;;;;;;;:::i;:::-;13775:10;:23:::0;;-1:-1:-1;;;;;;13775:23:0::1;-1:-1:-1::0;;;;;13775:23:0;;;::::1;::::0;;;::::1;::::0;;13629:177::o;13436:185::-;411:10;400:7;311;338:6;-1:-1:-1;;;;;338:6:0;;265:87;400:7;-1:-1:-1;;;;;400:21:0;;392:66;;;;-1:-1:-1;;;392:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13524:24:0;::::1;13516:59;;;;-1:-1:-1::0;;;13516:59:0::1;;;;;;;:::i;:::-;13586:14;:27:::0;;-1:-1:-1;;;;;;13586:27:0::1;-1:-1:-1::0;;;;;13586:27:0;;;::::1;::::0;;;::::1;::::0;;13436:185::o;12178:211::-;411:10;400:7;311;338:6;-1:-1:-1;;;;;338:6:0;;265:87;400:7;-1:-1:-1;;;;;400:21:0;;392:66;;;;-1:-1:-1;;;392:66:0;;;;;;;:::i;:::-;12287:13:::1;::::0;-1:-1:-1;;;;;12287:13:0;;::::1;12279:21:::0;;::::1;::::0;12271:60:::1;;;::::0;-1:-1:-1;;;12271:60:0;;15358:2:1;12271:60:0::1;::::0;::::1;15340:21:1::0;15397:2;15377:18;;;15370:30;15436:28;15416:18;;;15409:56;15482:18;;12271:60:0::1;15156:350:1::0;12271:60:0::1;-1:-1:-1::0;;;;;12342:31:0;;;::::1;;::::0;;;:25:::1;:31;::::0;;;;:39;;-1:-1:-1;;12342:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12178:211::o;6361:158::-;6432:4;6449:40;6459:10;6471:9;6482:6;6449:9;:40::i;13253:175::-;411:10;400:7;311;338:6;-1:-1:-1;;;;;338:6:0;;265:87;400:7;-1:-1:-1;;;;;400:21:0;;392:66;;;;-1:-1:-1;;;392:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13336:24:0;::::1;13328:59;;;;-1:-1:-1::0;;;13328:59:0::1;;;;;;;:::i;:::-;13398:9;:22:::0;;-1:-1:-1;;;;;;13398:22:0::1;-1:-1:-1::0;;;;;13398:22:0;;;::::1;::::0;;;::::1;::::0;;13253:175::o;13945:240::-;411:10;400:7;311;338:6;-1:-1:-1;;;;;338:6:0;;265:87;400:7;-1:-1:-1;;;;;400:21:0;;392:66;;;;-1:-1:-1;;;392:66:0;;;;;;;:::i;:::-;14057:38:::1;::::0;-1:-1:-1;;;14057:38:0;;14089:4:::1;14057:38;::::0;::::1;1490:51:1::0;14030:24:0::1;::::0;-1:-1:-1;;;;;14057:23:0;::::1;::::0;::::1;::::0;1463:18:1;;14057:38:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14030:65;;14106:51;14129:5;14136:2;14140:16;14106:22;:51::i;14193:247::-:0;411:10;400:7;311;338:6;-1:-1:-1;;;;;338:6:0;;265:87;400:7;-1:-1:-1;;;;;400:21:0;;392:66;;;;-1:-1:-1;;;392:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14271:18:0;::::1;14263:46;;;::::0;-1:-1:-1;;;14263:46:0;;15902:2:1;14263:46:0::1;::::0;::::1;15884:21:1::0;15941:2;15921:18;;;15914:30;-1:-1:-1;;;15960:18:1;;;15953:45;16015:18;;14263:46:0::1;15700:339:1::0;14263:46:0::1;14323:12;14341:4;-1:-1:-1::0;;;;;14341:9:0::1;14358:21;14341:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14322:62;;;14403:7;14395:37;;;::::0;-1:-1:-1;;;14395:37:0;;16456:2:1;14395:37:0::1;::::0;::::1;16438:21:1::0;16495:2;16475:18;;;16468:30;-1:-1:-1;;;16514:18:1;;;16507:47;16571:18;;14395:37:0::1;16254:341:1::0;14395:37:0::1;14252:188;14193:247:::0;:::o;6016:337::-;-1:-1:-1;;;;;6109:19:0;;6101:68;;;;-1:-1:-1;;;6101:68:0;;16802:2:1;6101:68:0;;;16784:21:1;16841:2;16821:18;;;16814:30;16880:34;16860:18;;;16853:62;-1:-1:-1;;;16931:18:1;;;16924:34;16975:19;;6101:68:0;16600:400:1;6101:68:0;-1:-1:-1;;;;;6188:21:0;;6180:68;;;;-1:-1:-1;;;6180:68:0;;17207:2:1;6180:68:0;;;17189:21:1;17246:2;17226:18;;;17219:30;17285:34;17265:18;;;17258:62;-1:-1:-1;;;17336:18:1;;;17329:32;17378:19;;6180:68:0;17005:398:1;6180:68:0;-1:-1:-1;;;;;6261:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;6313:32;;1698:25:1;;;6313:32:0;;1671:18:1;6313:32:0;;;;;;;6016:337;;;:::o;7055:2677::-;-1:-1:-1;;;;;7143:18:0;;7135:68;;;;-1:-1:-1;;;7135:68:0;;17610:2:1;7135:68:0;;;17592:21:1;17649:2;17629:18;;;17622:30;17688:34;17668:18;;;17661:62;-1:-1:-1;;;17739:18:1;;;17732:35;17784:19;;7135:68:0;17408:401:1;7135:68:0;-1:-1:-1;;;;;7222:16:0;;7214:64;;;;-1:-1:-1;;;7214:64:0;;18016:2:1;7214:64:0;;;17998:21:1;18055:2;18035:18;;;18028:30;18094:34;18074:18;;;18067:62;-1:-1:-1;;;18145:18:1;;;18138:33;18188:19;;7214:64:0;17814:399:1;7214:64:0;7306:1;7297:6;:10;7289:64;;;;-1:-1:-1;;;7289:64:0;;18420:2:1;7289:64:0;;;18402:21:1;18459:2;18439:18;;;18432:30;18498:34;18478:18;;;18471:62;-1:-1:-1;;;18549:18:1;;;18542:39;18598:19;;7289:64:0;18218:405:1;7289:64:0;7371:8;;-1:-1:-1;;;7371:8:0;;;;7370:9;:72;;;;-1:-1:-1;311:7:0;338:6;-1:-1:-1;;;;;7384:15:0;;;338:6;;7384:15;;;;:40;;-1:-1:-1;;;;;;7403:21:0;;7419:4;7403:21;;7384:40;:57;;;;-1:-1:-1;311:7:0;338:6;-1:-1:-1;;;;;7428:13:0;;;338:6;;7428:13;;7384:57;7366:134;;;7459:29;;-1:-1:-1;;;7459:29:0;;18830:2:1;7459:29:0;;;18812:21:1;18869:2;18849:18;;;18842:30;-1:-1:-1;;;18888:18:1;;;18881:49;18947:18;;7459:29:0;18628:343:1;7366:134:0;7516:14;;-1:-1:-1;;;7516:14:0;;;;7512:830;;;311:7;338:6;-1:-1:-1;;;;;7551:15:0;;;338:6;;7551:15;;;;:32;;-1:-1:-1;311:7:0;338:6;-1:-1:-1;;;;;7570:13:0;;;338:6;;7570:13;;7551:32;:52;;;;-1:-1:-1;;;;;;7587:16:0;;;;7551:52;:77;;;;-1:-1:-1;;;;;;7607:21:0;;7621:6;7607:21;;7551:77;:90;;;;-1:-1:-1;7633:8:0;;-1:-1:-1;;;7633:8:0;;;;7632:9;7551:90;7547:784;;;-1:-1:-1;;;;;7666:31:0;;;;;;:25;:31;;;;;;;;:71;;;;-1:-1:-1;;;;;;7702:35:0;;;;;;:31;:35;;;;;;;;7701:36;7666:71;7662:654;;;7780:20;;7770:6;:30;;7762:80;;;;-1:-1:-1;;;7762:80:0;;19178:2:1;7762:80:0;;;19160:21:1;19217:2;19197:18;;;19190:30;19256:34;19236:18;;;19229:62;-1:-1:-1;;;19307:18:1;;;19300:35;19352:19;;7762:80:0;18976:401:1;7762:80:0;7899:9;;-1:-1:-1;;;;;5680:18:0;;5653:7;5680:18;;;:9;:18;;;;;;7873:22;;:6;:22;:::i;:::-;:35;;7865:67;;;;-1:-1:-1;;;7865:67:0;;19584:2:1;7865:67:0;;;19566:21:1;19623:2;19603:18;;;19596:30;-1:-1:-1;;;19642:18:1;;;19635:49;19701:18;;7865:67:0;19382:343:1;7865:67:0;7662:654;;;-1:-1:-1;;;;;7962:29:0;;;;;;:25;:29;;;;;;;;:71;;;;-1:-1:-1;;;;;;7996:37:0;;;;;;:31;:37;;;;;;;;7995:38;7962:71;7958:358;;;8076:20;;8066:6;:30;;8058:80;;;;-1:-1:-1;;;8058:80:0;;19932:2:1;8058:80:0;;;19914:21:1;19971:2;19951:18;;;19944:30;20010:34;19990:18;;;19983:62;-1:-1:-1;;;20061:18:1;;;20054:36;20107:19;;8058:80:0;19730:402:1;7958:358:0;-1:-1:-1;;;;;8169:35:0;;;;;;:31;:35;;;;;;;;8164:152;;8263:9;;-1:-1:-1;;;;;5680:18:0;;5653:7;5680:18;;;:9;:18;;;;;;8237:22;;:6;:22;:::i;:::-;:35;;8229:67;;;;-1:-1:-1;;;8229:67:0;;19584:2:1;8229:67:0;;;19566:21:1;19623:2;19603:18;;;19596:30;-1:-1:-1;;;19642:18:1;;;19635:49;19701:18;;8229:67:0;19382:343:1;8229:67:0;8397:18;;8387:4;8354:12;5680:18;;;:9;:18;;;;;;-1:-1:-1;8369:46:0;;;;;8432:20;;-1:-1:-1;8444:8:0;;-1:-1:-1;;;8444:8:0;;;;8443:9;8432:20;:56;;;;-1:-1:-1;;;;;;8457:31:0;;;;;;:25;:31;;;;;;;;8456:32;8432:56;:86;;;;-1:-1:-1;;;;;;8493:25:0;;;;;;:19;:25;;;;;;;;8492:26;8432:86;:114;;;;-1:-1:-1;;;;;;8523:23:0;;;;;;:19;:23;;;;;;;;8522:24;8432:114;8428:218;;;8563:8;:15;;-1:-1:-1;;;;8563:15:0;-1:-1:-1;;;8563:15:0;;;8593:10;:8;:10::i;:::-;8618:8;:16;;-1:-1:-1;;;;8618:16:0;;;8428:218;8674:8;;-1:-1:-1;;;;;8699:25:0;;8658:12;8699:25;;;:19;:25;;;;;;8674:8;-1:-1:-1;;;8674:8:0;;;;;8673:9;;8699:25;;:52;;-1:-1:-1;;;;;;8728:23:0;;;;;;:19;:23;;;;;;;;8699:52;8695:100;;;-1:-1:-1;8778:5:0;8695:100;-1:-1:-1;;;;;8831:15:0;;8807:21;8831:15;;;:9;:15;;;;;;8865:23;;;;8857:74;;;;-1:-1:-1;;;8857:74:0;;;;;;;:::i;:::-;8944:12;8975:7;8971:602;;;-1:-1:-1;;;;;9003:29:0;;;;;;:25;:29;;;;;;;;:50;;;;-1:-1:-1;9036:13:0;;-1:-1:-1;;;9036:13:0;;;;:17;;9003:50;8999:264;;;9091:13;;9108:4;;9082:22;;-1:-1:-1;;;9091:13:0;;;;9082:6;:22;:::i;:::-;9081:31;;;;:::i;:::-;9074:38;;8999:264;;;-1:-1:-1;;;;;9138:31:0;;;;;;:25;:31;;;;;;;;:51;;;;-1:-1:-1;9173:12:0;;-1:-1:-1;;;9173:12:0;;;;:16;;9138:51;9134:129;;;9227:12;;9243:4;;9218:21;;-1:-1:-1;;;9227:12:0;;;;9218:6;:21;:::i;:::-;9217:30;;;;:::i;:::-;9210:37;;9134:129;9283:8;;9279:283;;-1:-1:-1;;;;;9390:15:0;;;;;;:9;:15;;;;;;;;:23;;;;;;;9454:4;9436:24;;;;;;;:32;;;;;;9511:35;1698:25:1;;;9354:13:0;;;;;9454:4;;9390:15;9511:35;;1671:18:1;9511:35:0;;;;;;;9279:283;-1:-1:-1;;;;;9608:15:0;;;;;;;:9;:15;;;;;;:25;;;;;;;9648:13;;;;;;;;;;:23;;;;;;9698:26;;;;;;9627:6;1698:25:1;;1686:2;1671:18;;1552:177;9698:26:0;;;;;;;;7124:2608;;;;7055:2677;;;:::o;610:320::-;741:59;;;-1:-1:-1;;;;;13134:32:1;;;741:59:0;;;13116:51:1;13183:18;;;;13176:34;;;741:59:0;;;;;;;;;;13089:18:1;;;;741:59:0;;;;;;;-1:-1:-1;;;;;741:59:0;-1:-1:-1;;;741:59:0;;;730:71;;-1:-1:-1;;;;730:10:0;;;;:71;;741:59;730:71;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;694:107;;;;820:7;:57;;;;-1:-1:-1;832:11:0;;:16;;:44;;;863:4;852:24;;;;;;;;;;;;:::i;:::-;812:110;;;;-1:-1:-1;;;812:110:0;;20631:2:1;812:110:0;;;20613:21:1;20670:2;20650:18;;;20643:30;20709:34;20689:18;;;20682:62;-1:-1:-1;;;20760:18:1;;;20753:38;20808:19;;812:110:0;20429:404:1;812:110:0;683:247;;610:320;;;:::o;14448:1117::-;14511:18;;14487:21;14596:23;14511:18;14617:2;14596:23;:::i;:::-;14587:4;5653:7;5680:18;;;:9;:18;;;;;;14569:50;14565:122;;;14652:18;;:23;;14673:2;14652:23;:::i;:::-;14636:39;;14565:122;14723:16;;;14737:1;14723:16;;;;;;;;14699:21;;14723:16;;;;;;;;;;-1:-1:-1;14723:16:0;14699:40;;14768:4;14750;14755:1;14750:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;14750:23:0;;;-1:-1:-1;;;;;14750:23:0;;;;;2621:42;14784:4;14789:1;14784:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14784:14:0;;;:7;;;;;;;;;;;:14;14811:122;;-1:-1:-1;;;14811:122:0;;3611:42;;14811:66;;:122;;14878:13;;14893:1;;14896:4;;14910;;14917:15;;14811:122;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14967:21:0;;-1:-1:-1;;15003:14:0;;;-1:-1:-1;14999:559:0;;15068:6;;15034:17;;15078:3;;15055:19;;-1:-1:-1;;;15068:6:0;;;;15055:10;:19;:::i;:::-;15054:27;;;;:::i;:::-;15131:7;;15034:47;;-1:-1:-1;15096:18:0;;15142:3;;15118:20;;-1:-1:-1;;;15131:7:0;;;;15118:10;:20;:::i;:::-;15117:28;;;;:::i;:::-;15096:49;-1:-1:-1;15160:22:0;15096:49;15185:22;15198:9;15185:10;:22;:::i;:::-;:35;;;;:::i;:::-;15259:10;;15251:47;;15160:60;;-1:-1:-1;;;;;;15259:10:0;;15283;;15251:47;;;;15283:10;15259;15251:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15335:14:0;;15327:55;;15237:61;;-1:-1:-1;;;;;;15335:14:0;;15363;;15327:55;;;;15363:14;15335;15327:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15419:9:0;;15411:45;;15313:69;;-1:-1:-1;;;;;;15419:9:0;;15442;;15411:45;;;;15442:9;15419;15411:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15478:68:0;;;22054:25:1;;;22110:2;22095:18;;22088:34;;;22138:18;;;22131:34;;;22196:2;22181:18;;22174:34;;;15397:59:0;;-1:-1:-1;15478:68:0;;22041:3:1;22026:19;15478:68:0;;;;;;;15019:539;;;14999:559;14476:1089;;;;14448:1117::o;14:250:1:-;99:1;109:113;123:6;120:1;117:13;109:113;;;199:11;;;193:18;180:11;;;173:39;145:2;138:10;109:113;;;-1:-1:-1;;256:1:1;238:16;;231:27;14:250::o;269:396::-;418:2;407:9;400:21;381:4;450:6;444:13;493:6;488:2;477:9;473:18;466:34;509:79;581:6;576:2;565:9;561:18;556:2;548:6;544:15;509:79;:::i;:::-;649:2;628:15;-1:-1:-1;;624:29:1;609:45;;;;656:2;605:54;;269:396;-1:-1:-1;;269:396:1:o;670:131::-;-1:-1:-1;;;;;745:31:1;;735:42;;725:70;;791:1;788;781:12;725:70;670:131;:::o;806:315::-;874:6;882;935:2;923:9;914:7;910:23;906:32;903:52;;;951:1;948;941:12;903:52;990:9;977:23;1009:31;1034:5;1009:31;:::i;:::-;1059:5;1111:2;1096:18;;;;1083:32;;-1:-1:-1;;;806:315:1:o;1923:456::-;2000:6;2008;2016;2069:2;2057:9;2048:7;2044:23;2040:32;2037:52;;;2085:1;2082;2075:12;2037:52;2124:9;2111:23;2143:31;2168:5;2143:31;:::i;:::-;2193:5;-1:-1:-1;2250:2:1;2235:18;;2222:32;2263:33;2222:32;2263:33;:::i;:::-;1923:456;;2315:7;;-1:-1:-1;;;2369:2:1;2354:18;;;;2341:32;;1923:456::o;2384:180::-;2443:6;2496:2;2484:9;2475:7;2471:23;2467:32;2464:52;;;2512:1;2509;2502:12;2464:52;-1:-1:-1;2535:23:1;;2384:180;-1:-1:-1;2384:180:1:o;2569:127::-;2630:10;2625:3;2621:20;2618:1;2611:31;2661:4;2658:1;2651:15;2685:4;2682:1;2675:15;2701:275;2772:2;2766:9;2837:2;2818:13;;-1:-1:-1;;2814:27:1;2802:40;;2872:18;2857:34;;2893:22;;;2854:62;2851:88;;;2919:18;;:::i;:::-;2955:2;2948:22;2701:275;;-1:-1:-1;2701:275:1:o;2981:183::-;3041:4;3074:18;3066:6;3063:30;3060:56;;;3096:18;;:::i;:::-;-1:-1:-1;3141:1:1;3137:14;3153:4;3133:25;;2981:183::o;3169:662::-;3223:5;3276:3;3269:4;3261:6;3257:17;3253:27;3243:55;;3294:1;3291;3284:12;3243:55;3330:6;3317:20;3356:4;3380:60;3396:43;3436:2;3396:43;:::i;:::-;3380:60;:::i;:::-;3474:15;;;3560:1;3556:10;;;;3544:23;;3540:32;;;3505:12;;;;3584:15;;;3581:35;;;3612:1;3609;3602:12;3581:35;3648:2;3640:6;3636:15;3660:142;3676:6;3671:3;3668:15;3660:142;;;3742:17;;3730:30;;3780:12;;;;3693;;3660:142;;;-1:-1:-1;3820:5:1;3169:662;-1:-1:-1;;;;;;3169:662:1:o;3836:1215::-;3954:6;3962;4015:2;4003:9;3994:7;3990:23;3986:32;3983:52;;;4031:1;4028;4021:12;3983:52;4071:9;4058:23;4100:18;4141:2;4133:6;4130:14;4127:34;;;4157:1;4154;4147:12;4127:34;4195:6;4184:9;4180:22;4170:32;;4240:7;4233:4;4229:2;4225:13;4221:27;4211:55;;4262:1;4259;4252:12;4211:55;4298:2;4285:16;4320:4;4344:60;4360:43;4400:2;4360:43;:::i;4344:60::-;4438:15;;;4520:1;4516:10;;;;4508:19;;4504:28;;;4469:12;;;;4544:19;;;4541:39;;;4576:1;4573;4566:12;4541:39;4600:11;;;;4620:217;4636:6;4631:3;4628:15;4620:217;;;4716:3;4703:17;4733:31;4758:5;4733:31;:::i;:::-;4777:18;;4653:12;;;;4815;;;;4620:217;;;4856:5;-1:-1:-1;;4899:18:1;;4886:32;;-1:-1:-1;;4930:16:1;;;4927:36;;;4959:1;4956;4949:12;4927:36;;4982:63;5037:7;5026:8;5015:9;5011:24;4982:63;:::i;:::-;4972:73;;;3836:1215;;;;;:::o;5056:156::-;5122:20;;5182:4;5171:16;;5161:27;;5151:55;;5202:1;5199;5192:12;5151:55;5056:156;;;:::o;5217:322::-;5288:6;5296;5304;5357:2;5345:9;5336:7;5332:23;5328:32;5325:52;;;5373:1;5370;5363:12;5325:52;5396:27;5413:9;5396:27;:::i;:::-;5386:37;;5442:36;5474:2;5463:9;5459:18;5442:36;:::i;:::-;5432:46;;5497:36;5529:2;5518:9;5514:18;5497:36;:::i;:::-;5487:46;;5217:322;;;;;:::o;5752:252::-;5816:6;5824;5877:2;5865:9;5856:7;5852:23;5848:32;5845:52;;;5893:1;5890;5883:12;5845:52;5916:27;5933:9;5916:27;:::i;:::-;5906:37;;5962:36;5994:2;5983:9;5979:18;5962:36;:::i;:::-;5952:46;;5752:252;;;;;:::o;6009:118::-;6095:5;6088:13;6081:21;6074:5;6071:32;6061:60;;6117:1;6114;6107:12;6132:382;6197:6;6205;6258:2;6246:9;6237:7;6233:23;6229:32;6226:52;;;6274:1;6271;6264:12;6226:52;6313:9;6300:23;6332:31;6357:5;6332:31;:::i;:::-;6382:5;-1:-1:-1;6439:2:1;6424:18;;6411:32;6452:30;6411:32;6452:30;:::i;:::-;6501:7;6491:17;;;6132:382;;;;;:::o;6519:247::-;6578:6;6631:2;6619:9;6610:7;6606:23;6602:32;6599:52;;;6647:1;6644;6637:12;6599:52;6686:9;6673:23;6705:31;6730:5;6705:31;:::i;:::-;6755:5;6519:247;-1:-1:-1;;;6519:247:1:o;6771:388::-;6839:6;6847;6900:2;6888:9;6879:7;6875:23;6871:32;6868:52;;;6916:1;6913;6906:12;6868:52;6955:9;6942:23;6974:31;6999:5;6974:31;:::i;:::-;7024:5;-1:-1:-1;7081:2:1;7066:18;;7053:32;7094:33;7053:32;7094:33;:::i;7573:356::-;7775:2;7757:21;;;7794:18;;;7787:30;7853:34;7848:2;7833:18;;7826:62;7920:2;7905:18;;7573:356::o;7934:127::-;7995:10;7990:3;7986:20;7983:1;7976:31;8026:4;8023:1;8016:15;8050:4;8047:1;8040:15;8066:168;8139:9;;;8170;;8187:15;;;8181:22;;8167:37;8157:71;;8208:18;;:::i;8239:217::-;8279:1;8305;8295:132;;8349:10;8344:3;8340:20;8337:1;8330:31;8384:4;8381:1;8374:15;8412:4;8409:1;8402:15;8295:132;-1:-1:-1;8441:9:1;;8239:217::o;8867:340::-;9069:2;9051:21;;;9108:2;9088:18;;;9081:30;-1:-1:-1;;;9142:2:1;9127:18;;9120:46;9198:2;9183:18;;8867:340::o;9212:127::-;9273:10;9268:3;9264:20;9261:1;9254:31;9304:4;9301:1;9294:15;9328:4;9325:1;9318:15;9344:402;9546:2;9528:21;;;9585:2;9565:18;;;9558:30;9624:34;9619:2;9604:18;;9597:62;-1:-1:-1;;;9690:2:1;9675:18;;9668:36;9736:3;9721:19;;9344:402::o;9751:125::-;9816:9;;;9837:10;;;9834:36;;;9850:18;;:::i;9881:128::-;9948:9;;;9969:11;;;9966:37;;;9983:18;;:::i;10014:135::-;10053:3;10074:17;;;10071:43;;10094:18;;:::i;:::-;-1:-1:-1;10141:1:1;10130:13;;10014:135::o;10154:148::-;10242:4;10221:12;;;10235;;;10217:31;;10260:13;;10257:39;;;10276:18;;:::i;12377:251::-;12447:6;12500:2;12488:9;12479:7;12475:23;12471:32;12468:52;;;12516:1;12513;12506:12;12468:52;12548:9;12542:16;12567:31;12592:5;12567:31;:::i;13221:245::-;13288:6;13341:2;13329:9;13320:7;13316:23;13312:32;13309:52;;;13357:1;13354;13347:12;13309:52;13389:9;13383:16;13408:28;13430:5;13408:28;:::i;14083:306::-;14171:6;14179;14187;14240:2;14228:9;14219:7;14215:23;14211:32;14208:52;;;14256:1;14253;14246:12;14208:52;14285:9;14279:16;14269:26;;14335:2;14324:9;14320:18;14314:25;14304:35;;14379:2;14368:9;14364:18;14358:25;14348:35;;14083:306;;;;;:::o;14805:346::-;15007:2;14989:21;;;15046:2;15026:18;;;15019:30;-1:-1:-1;;;15080:2:1;15065:18;;15058:52;15142:2;15127:18;;14805:346::o;15511:184::-;15581:6;15634:2;15622:9;15613:7;15609:23;15605:32;15602:52;;;15650:1;15647;15640:12;15602:52;-1:-1:-1;15673:16:1;;15511:184;-1:-1:-1;15511:184:1:o;20137:287::-;20266:3;20304:6;20298:13;20320:66;20379:6;20374:3;20367:4;20359:6;20355:17;20320:66;:::i;:::-;20402:16;;;;;20137:287;-1:-1:-1;;20137:287:1:o;20838:980::-;21100:4;21148:3;21137:9;21133:19;21179:6;21168:9;21161:25;21205:2;21243:6;21238:2;21227:9;21223:18;21216:34;21286:3;21281:2;21270:9;21266:18;21259:31;21310:6;21345;21339:13;21376:6;21368;21361:22;21414:3;21403:9;21399:19;21392:26;;21453:2;21445:6;21441:15;21427:29;;21474:1;21484:195;21498:6;21495:1;21492:13;21484:195;;;21563:13;;-1:-1:-1;;;;;21559:39:1;21547:52;;21654:15;;;;21619:12;;;;21595:1;21513:9;21484:195;;;-1:-1:-1;;;;;;;21735:32:1;;;;21730:2;21715:18;;21708:60;-1:-1:-1;;;21799:3:1;21784:19;21777:35;21696:3;20838:980;-1:-1:-1;;;20838:980:1:o

Swarm Source

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