ETH Price: $3,117.70 (+1.61%)
Gas: 8 Gwei

Token

DigiFund Capital (DFUND)
 

Overview

Max Total Supply

97,102,824.31 DFUND

Holders

219

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
64,034 DFUND

Value
$0.00
0xd1b75d0d52b7983272040f09bfc0afa3652edd01
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
DFUND

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-11-27
*/

/**
    DigiFund Capital
    Website: digifund.capital
    Twitter: twitter.com/digifundcapital
    Telegram: https://t.me/DigiFundCapital
**/

// SPDX-License-Identifier: MIT
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;
}

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 DFUND is Ownable {
    string private constant _name = unicode"DigiFund Capital";
    string private constant _symbol = unicode"DFUND";
    uint256 private _totalSupply = 100_000_000 * 1e18;

    uint256 public maxTransactionAmount = 2_000_000 * 1e18;
    uint256 public maxWallet = 2_000_000 * 1e18;
    uint256 public swapTokensAtAmount = (_totalSupply * 2) / 10000;

    address private liqWallet = 0x7342d9A4F7cC68106A9B10E8771172710145157f;
    address private treasuryWallet = 0xdF487A2DAfB8c3116d4dc2299365933FbF9b27ED;
    address private teamWallet = 0x9cBf9283F288F01722E6E7e1Fa66fC9b27E79f4f;
    
    address private constant WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;
    
    uint8 public buyTotalFees = 40;
    uint8 public sellTotalFees = 40;

    uint8 public liqFee = 25;
    uint8 public treasuryFee = 50;
    uint8 public teamFee = 25;

    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 liqETH, 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 immutable uniswapV2Pair;

    constructor() {
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), WETH);
        automatedMarketMakerPairs[uniswapV2Pair] = true;

        setExcludedFromFees(owner(), true);
        setExcludedFromFees(address(this), true);
        setExcludedFromFees(address(0xdead), true);
        setExcludedFromFees(teamWallet, true);
        setExcludedFromFees(liqWallet, 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(liqWallet, true);
        setExcludedFromMaxTransaction(treasuryWallet, true);

        _balances[msg.sender] = 100_000_000 * 1e18;
        emit Transfer(address(0), msg.sender, _balances[msg.sender]);

        _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 view 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 burn(uint256 value) external {
        _burn(msg.sender, value);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);
    }

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

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

    function setFees(uint8 _buyTotalFees, uint8 _sellTotalFees) external onlyOwner {
        require(_buyTotalFees <= 100, "Buy fees must be less than or equal to 10%");
        require(_sellTotalFees <= 100, "Sell fees must be less than or equal to 10%");
        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 airdropWallets(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 openTrade(bool status) external onlyOwner {
        launched = status;
    }

    function beginTrading() external payable onlyOwner {
        require(!launched, "Already launched");
        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 updateLiqWallet(address newAddress) external onlyOwner {
        require(newAddress != address(0), "Address cannot be zero");
        liqWallet = 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 ethForLiq = (ethBalance * liqFee) / 100;
            uint256 ethForTeam = (ethBalance * teamFee) / 100;
            uint256 ethForTreasury = ethBalance - ethForLiq - ethForTeam;

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

            emit SwapAndLiquify(swapThreshold, ethForTeam, ethForLiq, 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":"liqETH","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":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"airdropWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"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":[],"name":"beginTrading","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"burn","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":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liqFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"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":[{"internalType":"bool","name":"status","type":"bool"}],"name":"openTrade","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":"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":"_LiqFee","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":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasuryFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"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":"updateLiqWallet","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"}]

60a06040526a52b7d2dcc80cd2e40000006001556a01a784379d99db420000006002556a01a784379d99db420000006003556127106001546002620000459190620005f0565b6200005191906200061a565b600455600580546001600160a01b0319908116737342d9a4f7cc68106a9b10e8771172710145157f179091556006805490911673df487a2dafb8c3116d4dc2299365933fbf9b27ed179055600780547a010019321928289cbf9283f288f01722e6e7e1fa66fc9b27e79f4f600161ff0160c81b0319909116179055348015620000d8575f80fd5b505f80546001600160a01b031916331790556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9163c45a01559160048083019260209291908290030181865afa15801562000139573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200015f91906200063a565b6040516364e329cb60e11b815230600482015273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc260248201526001600160a01b03919091169063c9c65396906044016020604051808303815f875af1158015620001bf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001e591906200063a565b6001600160a01b031660808190525f908152600c60205260409020805460ff1916600117905562000229620002215f546001600160a01b031690565b6001620003bf565b62000236306001620003bf565b6200024561dead6001620003bf565b6007546200025e906001600160a01b03166001620003bf565b60055462000277906001600160a01b03166001620003bf565b60065462000290906001600160a01b03166001620003bf565b620002ae620002a65f546001600160a01b031690565b600162000446565b620002cf737a250d5630b4cf539739df2c5dacb4c659f2488d600162000446565b620002dc30600162000446565b620002eb61dead600162000446565b608051620002fb90600162000446565b60075462000314906001600160a01b0316600162000446565b6005546200032d906001600160a01b0316600162000446565b60065462000346906001600160a01b0316600162000446565b335f8181526008602090815260408083206a52b7d2dcc80cd2e40000009081905590519081527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3620003b930737a250d5630b4cf539739df2c5dacb4c659f2488d5f19620004c9565b62000669565b33620003d25f546001600160a01b031690565b6001600160a01b0316146200041c5760405162461bcd60e51b815260206004820181905260248201525f80516020620031bb83398151915260448201526064015b60405180910390fd5b6001600160a01b03919091165f908152600a60205260409020805460ff1916911515919091179055565b33620004595f546001600160a01b031690565b6001600160a01b0316146200049f5760405162461bcd60e51b815260206004820181905260248201525f80516020620031bb833981519152604482015260640162000413565b6001600160a01b03919091165f908152600b60205260409020805460ff1916911515919091179055565b6001600160a01b0383166200052d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840162000413565b6001600160a01b038216620005905760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840162000413565b6001600160a01b038381165f8181526009602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b80820281158282048414176200061457634e487b7160e01b5f52601160045260245ffd5b92915050565b5f826200063557634e487b7160e01b5f52601260045260245ffd5b500490565b5f602082840312156200064b575f80fd5b81516001600160a01b038116811462000662575f80fd5b9392505050565b608051612b32620006895f395f8181610411015261116b0152612b325ff3fe608060405260043610610241575f3560e01c806373dd858c11610134578063bc205ad3116100b3578063d7c94efd11610078578063d7c94efd14610700578063d85ba06314610720578063dd62ed3e14610740578063e2f4560514610784578063e710794714610799578063f8b45b05146107b8575f80fd5b8063bc205ad314610685578063c408c245146106a4578063c8c8ebe4146106ac578063cc32d176146106c1578063d201b01e146106e1575f80fd5b806385ecafd7116100f957806385ecafd7146105c75780638da5cb5b146105fe57806395d89b411461061a5780639a7a23d614610647578063a9059cbb14610666575f80fd5b806373dd858c1461053757806374010ece14610556578063751039fc146105755780637cb332bb14610589578063809d458d146105a8575f80fd5b806342966c68116101c05780636402511e116101855780636402511e1461049157806366650dae146104b05780636a486a8e146104cf57806370a08231146104ef578063715018a614610523575f80fd5b806342966c68146103e157806349bd5a5e146104005780634a62bb65146104335780634fcd244614610453578063590ffdce14610472575f80fd5b806327a14fc21161020657806327a14fc21461034157806330d35dee14610362578063313ce567146103815780633c090c46146103a25780633fb0da64146103c1575f80fd5b806306fdde031461024c578063095ea7b3146102965780631694505e146102c557806318160ddd1461030457806323b872dd14610322575f80fd5b3661024857005b5f80fd5b348015610257575f80fd5b5060408051808201909152601081526f111a59da519d5b990810d85c1a5d185b60821b60208201525b60405161028d9190612520565b60405180910390f35b3480156102a1575f80fd5b506102b56102b036600461256d565b6107cd565b604051901515815260200161028d565b3480156102d0575f80fd5b506102ec737a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b03909116815260200161028d565b34801561030f575f80fd5b506001545b60405190815260200161028d565b34801561032d575f80fd5b506102b561033c366004612595565b6107e3565b34801561034c575f80fd5b5061036061035b3660046125ce565b610897565b005b34801561036d575f80fd5b5061036061037c3660046125f2565b610978565b34801561038c575f80fd5b5060125b60405160ff909116815260200161028d565b3480156103ad575f80fd5b506103606103bc366004612624565b6109ce565b3480156103cc575f80fd5b5060075461039090600160b01b900460ff1681565b3480156103ec575f80fd5b506103606103fb3660046125ce565b610ad6565b34801561040b575f80fd5b506102ec7f000000000000000000000000000000000000000000000000000000000000000081565b34801561043e575f80fd5b506007546102b590600160d01b900460ff1681565b34801561045e575f80fd5b5061036061046d366004612664565b610ae3565b34801561047d575f80fd5b5061036061048c366004612695565b610c1e565b34801561049c575f80fd5b506103606104ab3660046125ce565b610c80565b3480156104bb575f80fd5b506103606104ca366004612695565b610dd9565b3480156104da575f80fd5b5060075461039090600160a81b900460ff1681565b3480156104fa575f80fd5b506103146105093660046126ca565b6001600160a01b03165f9081526008602052604090205490565b34801561052e575f80fd5b50610360610e3b565b348015610542575f80fd5b506103606105513660046126ca565b610e84565b348015610561575f80fd5b506103606105703660046125ce565b610f04565b348015610580575f80fd5b50610360610fea565b348015610594575f80fd5b506103606105a33660046126ca565b611031565b3480156105b3575f80fd5b506103606105c23660046126ca565b6110b1565b3480156105d2575f80fd5b506102b56105e13660046126ca565b6001600160a01b03165f908152600a602052604090205460ff1690565b348015610609575f80fd5b505f546001600160a01b03166102ec565b348015610625575f80fd5b50604080518082019091526005815264111195539160da1b6020820152610280565b348015610652575f80fd5b50610360610661366004612695565b611131565b348015610671575f80fd5b506102b561068036600461256d565b611214565b348015610690575f80fd5b5061036061069f3660046126e3565b611220565b6103606112cd565b3480156106b7575f80fd5b5061031460025481565b3480156106cc575f80fd5b5060075461039090600160b81b900460ff1681565b3480156106ec575f80fd5b506103606106fb3660046126ca565b611403565b34801561070b575f80fd5b5060075461039090600160c01b900460ff1681565b34801561072b575f80fd5b5060075461039090600160a01b900460ff1681565b34801561074b575f80fd5b5061031461075a3660046126e3565b6001600160a01b039182165f90815260096020908152604080832093909416825291909152205490565b34801561078f575f80fd5b5061031460045481565b3480156107a4575f80fd5b506103606107b33660046127db565b61151a565b3480156107c3575f80fd5b5061031460035481565b5f6107d9338484611741565b5060015b92915050565b6001600160a01b0383165f9081526009602090815260408083203384529091528120545f19811461088157828110156108745760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6108818533858403611741565b61088c858585611865565b506001949350505050565b336108a95f546001600160a01b031690565b6001600160a01b0316146108cf5760405162461bcd60e51b815260040161086b90612895565b670de0b6b3a76400006103e86108e460015490565b6108ef9060016128de565b6108f991906128f5565b61090391906128f5565b8110156109605760405162461bcd60e51b815260206004820152602560248201527f43616e6e6f7420736574206d61782077616c6c6574206c6f776572207468616e60448201526420302e312560d81b606482015260840161086b565b61097281670de0b6b3a76400006128de565b60035550565b3361098a5f546001600160a01b031690565b6001600160a01b0316146109b05760405162461bcd60e51b815260040161086b90612895565b60078054911515600160d81b0260ff60d81b19909216919091179055565b336109e05f546001600160a01b031690565b6001600160a01b031614610a065760405162461bcd60e51b815260040161086b90612895565b6007805461ffff60b01b1916600160b01b60ff868116820260ff60b81b191692909217600160b81b86841681029190911760ff60c01b1916600160c01b868516810291909117948590558404831693610a6793918104821692900416612914565b610a719190612914565b60ff16606414610ad15760405162461bcd60e51b815260206004820152602560248201527f446973747269627574696f6e206861766520746f20626520657175616c20746f604482015264203130302560d81b606482015260840161086b565b505050565b610ae03382611fb8565b50565b33610af55f546001600160a01b031690565b6001600160a01b031614610b1b5760405162461bcd60e51b815260040161086b90612895565b60648260ff161115610b825760405162461bcd60e51b815260206004820152602a60248201527f4275792066656573206d757374206265206c657373207468616e206f7220657160448201526975616c20746f2031302560b01b606482015260840161086b565b60648160ff161115610bea5760405162461bcd60e51b815260206004820152602b60248201527f53656c6c2066656573206d757374206265206c657373207468616e206f72206560448201526a7175616c20746f2031302560a81b606482015260840161086b565b6007805461ffff60a01b1916600160a01b60ff9485160260ff60a81b191617600160a81b9290931691909102919091179055565b33610c305f546001600160a01b031690565b6001600160a01b031614610c565760405162461bcd60e51b815260040161086b90612895565b6001600160a01b03919091165f908152600a60205260409020805460ff1916911515919091179055565b33610c925f546001600160a01b031690565b6001600160a01b031614610cb85760405162461bcd60e51b815260040161086b90612895565b620186a0610cc560015490565b610cd09060016128de565b610cda91906128f5565b811015610d475760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527420302e30303125206f662074686520737570706c7960581b606482015260840161086b565b6103e8610d5360015490565b610d5e9060056128de565b610d6891906128f5565b811115610dd45760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f7420626520686967686572207468616044820152736e20302e3525206f662074686520737570706c7960601b606482015260840161086b565b600455565b33610deb5f546001600160a01b031690565b6001600160a01b031614610e115760405162461bcd60e51b815260040161086b90612895565b6001600160a01b03919091165f908152600b60205260409020805460ff1916911515919091179055565b33610e4d5f546001600160a01b031690565b6001600160a01b031614610e735760405162461bcd60e51b815260040161086b90612895565b5f80546001600160a01b0319169055565b33610e965f546001600160a01b031690565b6001600160a01b031614610ebc5760405162461bcd60e51b815260040161086b90612895565b6001600160a01b038116610ee25760405162461bcd60e51b815260040161086b9061292d565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b33610f165f546001600160a01b031690565b6001600160a01b031614610f3c5760405162461bcd60e51b815260040161086b90612895565b670de0b6b3a76400006103e8610f5160015490565b610f5c9060016128de565b610f6691906128f5565b610f7091906128f5565b811015610fd25760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d6178207472616e73616374696f6e206c6f776572604482015269207468616e20302e312560b01b606482015260840161086b565b610fe481670de0b6b3a76400006128de565b60025550565b33610ffc5f546001600160a01b031690565b6001600160a01b0316146110225760405162461bcd60e51b815260040161086b90612895565b6007805460ff60d01b19169055565b336110435f546001600160a01b031690565b6001600160a01b0316146110695760405162461bcd60e51b815260040161086b90612895565b6001600160a01b03811661108f5760405162461bcd60e51b815260040161086b9061292d565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b336110c35f546001600160a01b031690565b6001600160a01b0316146110e95760405162461bcd60e51b815260040161086b90612895565b6001600160a01b03811661110f5760405162461bcd60e51b815260040161086b9061292d565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b336111435f546001600160a01b031690565b6001600160a01b0316146111695760405162461bcd60e51b815260040161086b90612895565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316036111ea5760405162461bcd60e51b815260206004820152601a60248201527f54686520706169722063616e6e6f742062652072656d6f766564000000000000604482015260640161086b565b6001600160a01b03919091165f908152600c60205260409020805460ff1916911515919091179055565b5f6107d9338484611865565b336112325f546001600160a01b031690565b6001600160a01b0316146112585760405162461bcd60e51b815260040161086b90612895565b6040516370a0823160e01b81523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa15801561129c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112c0919061295d565b9050610ad18383836120e8565b336112df5f546001600160a01b031690565b6001600160a01b0316146113055760405162461bcd60e51b815260040161086b90612895565b600754600160d81b900460ff16156113525760405162461bcd60e51b815260206004820152601060248201526f105b1c9958591e481b185d5b98da195960821b604482015260640161086b565b305f8181526008602052604080822054600754915163f305d71960e01b8152600481019490945260248401526044830182905260648301919091526001600160a01b031660848201524260a4820152737a250d5630b4cf539739df2c5dacb4c659f2488d9063f305d71990349060c40160606040518083038185885af11580156113de573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610ad19190612974565b336114155f546001600160a01b031690565b6001600160a01b03161461143b5760405162461bcd60e51b815260040161086b90612895565b6001600160a01b0381166114835760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b604482015260640161086b565b5f816001600160a01b0316476040515f6040518083038185875af1925050503d805f81146114cc576040519150601f19603f3d011682016040523d82523d5f602084013e6114d1565b606091505b50509050806115165760405162461bcd60e51b815260206004820152601160248201527015da5d1a191c985dd85b0819985a5b1959607a1b604482015260640161086b565b5050565b3361152c5f546001600160a01b031690565b6001600160a01b0316146115525760405162461bcd60e51b815260040161086b90612895565b600754600160d81b900460ff161561159f5760405162461bcd60e51b815260206004820152601060248201526f105b1c9958591e481b185d5b98da195960821b604482015260640161086b565b5f5b8251811015610ad1578181815181106115bc576115bc61299f565b602002602001015160085f336001600160a01b03166001600160a01b031681526020019081526020015f205410156116065760405162461bcd60e51b815260040161086b906129b3565b8181815181106116185761161861299f565b602002602001015160085f8584815181106116355761163561299f565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f205f82825461166a91906129f9565b925050819055508181815181106116835761168361299f565b602002602001015160085f336001600160a01b03166001600160a01b031681526020019081526020015f205f8282546116bc9190612a0c565b925050819055508281815181106116d5576116d561299f565b60200260200101516001600160a01b0316336001600160a01b03165f80516020612add8339815191528484815181106117105761171061299f565b602002602001015160405161172791815260200190565b60405180910390a38061173981612a1f565b9150506115a1565b6001600160a01b0383166117a35760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161086b565b6001600160a01b0382166118045760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161086b565b6001600160a01b038381165f8181526009602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166118c95760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161086b565b6001600160a01b03821661192b5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161086b565b5f811161198c5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161086b565b600754600160d81b900460ff161580156119e057505f546001600160a01b038481169116148015906119c757506001600160a01b0383163014155b80156119e057505f546001600160a01b03838116911614155b15611a235760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b604482015260640161086b565b600754600160d01b900460ff1615611ce4575f546001600160a01b03848116911614801590611a5f57505f546001600160a01b03838116911614155b8015611a7357506001600160a01b03821615155b8015611a8a57506001600160a01b03821661dead14155b8015611aa05750600754600160c81b900460ff16155b15611ce4576001600160a01b0383165f908152600c602052604090205460ff168015611ae457506001600160a01b0382165f908152600b602052604090205460ff16155b15611bb757600254811115611b495760405162461bcd60e51b815260206004820152602560248201527f427579207472616e7366657220616d6f756e74206578636565647320746865206044820152640dac2f0a8f60db1b606482015260840161086b565b6003546001600160a01b0383165f90815260086020526040902054611b6e90836129f9565b1115611bb25760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b604482015260640161086b565b611ce4565b6001600160a01b0382165f908152600c602052604090205460ff168015611bf657506001600160a01b0383165f908152600b602052604090205460ff16155b15611c5c57600254811115611bb25760405162461bcd60e51b815260206004820152602660248201527f53656c6c207472616e7366657220616d6f756e74206578636565647320746865604482015265040dac2f0a8f60d31b606482015260840161086b565b6001600160a01b0382165f908152600b602052604090205460ff16611ce4576003546001600160a01b0383165f90815260086020526040902054611ca090836129f9565b1115611ce45760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b604482015260640161086b565b600454305f90815260086020526040902054108015908190611d105750600754600160c81b900460ff16155b8015611d3457506001600160a01b0384165f908152600c602052604090205460ff16155b8015611d5857506001600160a01b0384165f908152600a602052604090205460ff16155b8015611d7c57506001600160a01b0383165f908152600a602052604090205460ff16155b15611daa576007805460ff60c81b1916600160c81b179055611d9c61220f565b6007805460ff60c81b191690555b6007546001600160a01b0385165f908152600a602052604090205460ff600160c81b909204821615911680611df657506001600160a01b0384165f908152600a602052604090205460ff165b15611dfe57505f5b6001600160a01b0385165f9081526008602052604090205483811015611e365760405162461bcd60e51b815260040161086b906129b3565b5f8215611f59576001600160a01b0386165f908152600c602052604090205460ff168015611e6f5750600754600160a81b900460ff1615155b15611ea0576007546103e890611e8f90600160a81b900460ff16876128de565b611e9991906128f5565b9050611eff565b6001600160a01b0387165f908152600c602052604090205460ff168015611ed25750600754600160a01b900460ff1615155b15611eff576007546103e890611ef290600160a01b900460ff16876128de565b611efc91906128f5565b90505b8015611f59576001600160a01b0387165f8181526008602090815260408083208054869003905530808452928190208054860190555184815297849003979192915f80516020612add833981519152910160405180910390a35b6001600160a01b038088165f8181526008602052604080822080548a900390559289168082529083902080548901905591515f80516020612add83398151915290611fa79089815260200190565b60405180910390a350505050505050565b6001600160a01b0382166120185760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161086b565b6001600160a01b0382165f908152600860205260409020548181101561208b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161086b565b6001600160a01b0383165f9081526008602052604081208383039055600180548492906120b9908490612a0c565b90915550506040518281525f906001600160a01b038516905f80516020612add83398151915290602001611858565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b17905291515f928392908716916121439190612a37565b5f604051808303815f865af19150503d805f811461217c576040519150601f19603f3d011682016040523d82523d5f602084013e612181565b606091505b50915091508180156121ab5750805115806121ab5750808060200190518101906121ab9190612a52565b6122085760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657248656c7065723a20494e5445524e414c205452414e5346456044820152671497d1905253115160c21b606482015260840161086b565b5050505050565b6004545f61221e8260146128de565b305f908152600860205260409020541115612244576004546122419060146128de565b91505b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106122775761227761299f565b60200260200101906001600160a01b031690816001600160a01b03168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2816001815181106122bf576122bf61299f565b6001600160a01b039092166020928302919091019091015260405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac947906123169086905f90869030904290600401612a6d565b5f604051808303815f87803b15801561232d575f80fd5b505af115801561233f573d5f803e3d5ffd5b5047925050811590506124f8576007545f9060649061236890600160b01b900460ff16846128de565b61237291906128f5565b6007549091505f9060649061239190600160c01b900460ff16856128de565b61239b91906128f5565b90505f816123a98486612a0c565b6123b39190612a0c565b6007546040519192506001600160a01b03169083905f81818185875af1925050503d805f81146123fe576040519150601f19603f3d011682016040523d82523d5f602084013e612403565b606091505b50506006546040519197506001600160a01b03169082905f81818185875af1925050503d805f8114612450576040519150601f19603f3d011682016040523d82523d5f602084013e612455565b606091505b50506005546040519197506001600160a01b03169084905f81818185875af1925050503d805f81146124a2576040519150601f19603f3d011682016040523d82523d5f602084013e6124a7565b606091505b50506040805189815260208101859052908101859052606081018390529096507f93efcf28fbf701a930e0ad258987a2e4f08eb3aa99f9c02029e7ba049f69405f9060800160405180910390a15050505b50505050565b5f5b83811015612518578181015183820152602001612500565b50505f910152565b602081525f825180602084015261253e8160408501602087016124fe565b601f01601f19169190910160400192915050565b80356001600160a01b0381168114612568575f80fd5b919050565b5f806040838503121561257e575f80fd5b61258783612552565b946020939093013593505050565b5f805f606084860312156125a7575f80fd5b6125b084612552565b92506125be60208501612552565b9150604084013590509250925092565b5f602082840312156125de575f80fd5b5035919050565b8015158114610ae0575f80fd5b5f60208284031215612602575f80fd5b813561260d816125e5565b9392505050565b803560ff81168114612568575f80fd5b5f805f60608486031215612636575f80fd5b61263f84612614565b925061264d60208501612614565b915061265b60408501612614565b90509250925092565b5f8060408385031215612675575f80fd5b61267e83612614565b915061268c60208401612614565b90509250929050565b5f80604083850312156126a6575f80fd5b6126af83612552565b915060208301356126bf816125e5565b809150509250929050565b5f602082840312156126da575f80fd5b61260d82612552565b5f80604083850312156126f4575f80fd5b6126fd83612552565b915061268c60208401612552565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff811182821017156127485761274861270b565b604052919050565b5f67ffffffffffffffff8211156127695761276961270b565b5060051b60200190565b5f82601f830112612782575f80fd5b8135602061279761279283612750565b61271f565b82815260059290921b840181019181810190868411156127b5575f80fd5b8286015b848110156127d057803583529183019183016127b9565b509695505050505050565b5f80604083850312156127ec575f80fd5b823567ffffffffffffffff80821115612803575f80fd5b818501915085601f830112612816575f80fd5b8135602061282661279283612750565b82815260059290921b84018101918181019089841115612844575f80fd5b948201945b838610156128695761285a86612552565b82529482019490820190612849565b9650508601359250508082111561287e575f80fd5b5061288b85828601612773565b9150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176107dd576107dd6128ca565b5f8261290f57634e487b7160e01b5f52601260045260245ffd5b500490565b60ff81811683821601908111156107dd576107dd6128ca565b602080825260169082015275416464726573732063616e6e6f74206265207a65726f60501b604082015260600190565b5f6020828403121561296d575f80fd5b5051919050565b5f805f60608486031215612986575f80fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b5f52603260045260245ffd5b60208082526026908201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604082015265616c616e636560d01b606082015260800190565b808201808211156107dd576107dd6128ca565b818103818111156107dd576107dd6128ca565b5f60018201612a3057612a306128ca565b5060010190565b5f8251612a488184602087016124fe565b9190910192915050565b5f60208284031215612a62575f80fd5b815161260d816125e5565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015612abb5784516001600160a01b031683529383019391830191600101612a96565b50506001600160a01b0396909616606085015250505060800152939250505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220c461ac6530f6b42dd4b075620de1b37982a436c2a2bd35daa1b448b6f08e803f64736f6c634300081500334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572

Deployed Bytecode

0x608060405260043610610241575f3560e01c806373dd858c11610134578063bc205ad3116100b3578063d7c94efd11610078578063d7c94efd14610700578063d85ba06314610720578063dd62ed3e14610740578063e2f4560514610784578063e710794714610799578063f8b45b05146107b8575f80fd5b8063bc205ad314610685578063c408c245146106a4578063c8c8ebe4146106ac578063cc32d176146106c1578063d201b01e146106e1575f80fd5b806385ecafd7116100f957806385ecafd7146105c75780638da5cb5b146105fe57806395d89b411461061a5780639a7a23d614610647578063a9059cbb14610666575f80fd5b806373dd858c1461053757806374010ece14610556578063751039fc146105755780637cb332bb14610589578063809d458d146105a8575f80fd5b806342966c68116101c05780636402511e116101855780636402511e1461049157806366650dae146104b05780636a486a8e146104cf57806370a08231146104ef578063715018a614610523575f80fd5b806342966c68146103e157806349bd5a5e146104005780634a62bb65146104335780634fcd244614610453578063590ffdce14610472575f80fd5b806327a14fc21161020657806327a14fc21461034157806330d35dee14610362578063313ce567146103815780633c090c46146103a25780633fb0da64146103c1575f80fd5b806306fdde031461024c578063095ea7b3146102965780631694505e146102c557806318160ddd1461030457806323b872dd14610322575f80fd5b3661024857005b5f80fd5b348015610257575f80fd5b5060408051808201909152601081526f111a59da519d5b990810d85c1a5d185b60821b60208201525b60405161028d9190612520565b60405180910390f35b3480156102a1575f80fd5b506102b56102b036600461256d565b6107cd565b604051901515815260200161028d565b3480156102d0575f80fd5b506102ec737a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b03909116815260200161028d565b34801561030f575f80fd5b506001545b60405190815260200161028d565b34801561032d575f80fd5b506102b561033c366004612595565b6107e3565b34801561034c575f80fd5b5061036061035b3660046125ce565b610897565b005b34801561036d575f80fd5b5061036061037c3660046125f2565b610978565b34801561038c575f80fd5b5060125b60405160ff909116815260200161028d565b3480156103ad575f80fd5b506103606103bc366004612624565b6109ce565b3480156103cc575f80fd5b5060075461039090600160b01b900460ff1681565b3480156103ec575f80fd5b506103606103fb3660046125ce565b610ad6565b34801561040b575f80fd5b506102ec7f0000000000000000000000006324d3b19f457785e006f94e8c6b61cee471d02481565b34801561043e575f80fd5b506007546102b590600160d01b900460ff1681565b34801561045e575f80fd5b5061036061046d366004612664565b610ae3565b34801561047d575f80fd5b5061036061048c366004612695565b610c1e565b34801561049c575f80fd5b506103606104ab3660046125ce565b610c80565b3480156104bb575f80fd5b506103606104ca366004612695565b610dd9565b3480156104da575f80fd5b5060075461039090600160a81b900460ff1681565b3480156104fa575f80fd5b506103146105093660046126ca565b6001600160a01b03165f9081526008602052604090205490565b34801561052e575f80fd5b50610360610e3b565b348015610542575f80fd5b506103606105513660046126ca565b610e84565b348015610561575f80fd5b506103606105703660046125ce565b610f04565b348015610580575f80fd5b50610360610fea565b348015610594575f80fd5b506103606105a33660046126ca565b611031565b3480156105b3575f80fd5b506103606105c23660046126ca565b6110b1565b3480156105d2575f80fd5b506102b56105e13660046126ca565b6001600160a01b03165f908152600a602052604090205460ff1690565b348015610609575f80fd5b505f546001600160a01b03166102ec565b348015610625575f80fd5b50604080518082019091526005815264111195539160da1b6020820152610280565b348015610652575f80fd5b50610360610661366004612695565b611131565b348015610671575f80fd5b506102b561068036600461256d565b611214565b348015610690575f80fd5b5061036061069f3660046126e3565b611220565b6103606112cd565b3480156106b7575f80fd5b5061031460025481565b3480156106cc575f80fd5b5060075461039090600160b81b900460ff1681565b3480156106ec575f80fd5b506103606106fb3660046126ca565b611403565b34801561070b575f80fd5b5060075461039090600160c01b900460ff1681565b34801561072b575f80fd5b5060075461039090600160a01b900460ff1681565b34801561074b575f80fd5b5061031461075a3660046126e3565b6001600160a01b039182165f90815260096020908152604080832093909416825291909152205490565b34801561078f575f80fd5b5061031460045481565b3480156107a4575f80fd5b506103606107b33660046127db565b61151a565b3480156107c3575f80fd5b5061031460035481565b5f6107d9338484611741565b5060015b92915050565b6001600160a01b0383165f9081526009602090815260408083203384529091528120545f19811461088157828110156108745760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6108818533858403611741565b61088c858585611865565b506001949350505050565b336108a95f546001600160a01b031690565b6001600160a01b0316146108cf5760405162461bcd60e51b815260040161086b90612895565b670de0b6b3a76400006103e86108e460015490565b6108ef9060016128de565b6108f991906128f5565b61090391906128f5565b8110156109605760405162461bcd60e51b815260206004820152602560248201527f43616e6e6f7420736574206d61782077616c6c6574206c6f776572207468616e60448201526420302e312560d81b606482015260840161086b565b61097281670de0b6b3a76400006128de565b60035550565b3361098a5f546001600160a01b031690565b6001600160a01b0316146109b05760405162461bcd60e51b815260040161086b90612895565b60078054911515600160d81b0260ff60d81b19909216919091179055565b336109e05f546001600160a01b031690565b6001600160a01b031614610a065760405162461bcd60e51b815260040161086b90612895565b6007805461ffff60b01b1916600160b01b60ff868116820260ff60b81b191692909217600160b81b86841681029190911760ff60c01b1916600160c01b868516810291909117948590558404831693610a6793918104821692900416612914565b610a719190612914565b60ff16606414610ad15760405162461bcd60e51b815260206004820152602560248201527f446973747269627574696f6e206861766520746f20626520657175616c20746f604482015264203130302560d81b606482015260840161086b565b505050565b610ae03382611fb8565b50565b33610af55f546001600160a01b031690565b6001600160a01b031614610b1b5760405162461bcd60e51b815260040161086b90612895565b60648260ff161115610b825760405162461bcd60e51b815260206004820152602a60248201527f4275792066656573206d757374206265206c657373207468616e206f7220657160448201526975616c20746f2031302560b01b606482015260840161086b565b60648160ff161115610bea5760405162461bcd60e51b815260206004820152602b60248201527f53656c6c2066656573206d757374206265206c657373207468616e206f72206560448201526a7175616c20746f2031302560a81b606482015260840161086b565b6007805461ffff60a01b1916600160a01b60ff9485160260ff60a81b191617600160a81b9290931691909102919091179055565b33610c305f546001600160a01b031690565b6001600160a01b031614610c565760405162461bcd60e51b815260040161086b90612895565b6001600160a01b03919091165f908152600a60205260409020805460ff1916911515919091179055565b33610c925f546001600160a01b031690565b6001600160a01b031614610cb85760405162461bcd60e51b815260040161086b90612895565b620186a0610cc560015490565b610cd09060016128de565b610cda91906128f5565b811015610d475760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527420302e30303125206f662074686520737570706c7960581b606482015260840161086b565b6103e8610d5360015490565b610d5e9060056128de565b610d6891906128f5565b811115610dd45760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f7420626520686967686572207468616044820152736e20302e3525206f662074686520737570706c7960601b606482015260840161086b565b600455565b33610deb5f546001600160a01b031690565b6001600160a01b031614610e115760405162461bcd60e51b815260040161086b90612895565b6001600160a01b03919091165f908152600b60205260409020805460ff1916911515919091179055565b33610e4d5f546001600160a01b031690565b6001600160a01b031614610e735760405162461bcd60e51b815260040161086b90612895565b5f80546001600160a01b0319169055565b33610e965f546001600160a01b031690565b6001600160a01b031614610ebc5760405162461bcd60e51b815260040161086b90612895565b6001600160a01b038116610ee25760405162461bcd60e51b815260040161086b9061292d565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b33610f165f546001600160a01b031690565b6001600160a01b031614610f3c5760405162461bcd60e51b815260040161086b90612895565b670de0b6b3a76400006103e8610f5160015490565b610f5c9060016128de565b610f6691906128f5565b610f7091906128f5565b811015610fd25760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d6178207472616e73616374696f6e206c6f776572604482015269207468616e20302e312560b01b606482015260840161086b565b610fe481670de0b6b3a76400006128de565b60025550565b33610ffc5f546001600160a01b031690565b6001600160a01b0316146110225760405162461bcd60e51b815260040161086b90612895565b6007805460ff60d01b19169055565b336110435f546001600160a01b031690565b6001600160a01b0316146110695760405162461bcd60e51b815260040161086b90612895565b6001600160a01b03811661108f5760405162461bcd60e51b815260040161086b9061292d565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b336110c35f546001600160a01b031690565b6001600160a01b0316146110e95760405162461bcd60e51b815260040161086b90612895565b6001600160a01b03811661110f5760405162461bcd60e51b815260040161086b9061292d565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b336111435f546001600160a01b031690565b6001600160a01b0316146111695760405162461bcd60e51b815260040161086b90612895565b7f0000000000000000000000006324d3b19f457785e006f94e8c6b61cee471d0246001600160a01b0316826001600160a01b0316036111ea5760405162461bcd60e51b815260206004820152601a60248201527f54686520706169722063616e6e6f742062652072656d6f766564000000000000604482015260640161086b565b6001600160a01b03919091165f908152600c60205260409020805460ff1916911515919091179055565b5f6107d9338484611865565b336112325f546001600160a01b031690565b6001600160a01b0316146112585760405162461bcd60e51b815260040161086b90612895565b6040516370a0823160e01b81523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa15801561129c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112c0919061295d565b9050610ad18383836120e8565b336112df5f546001600160a01b031690565b6001600160a01b0316146113055760405162461bcd60e51b815260040161086b90612895565b600754600160d81b900460ff16156113525760405162461bcd60e51b815260206004820152601060248201526f105b1c9958591e481b185d5b98da195960821b604482015260640161086b565b305f8181526008602052604080822054600754915163f305d71960e01b8152600481019490945260248401526044830182905260648301919091526001600160a01b031660848201524260a4820152737a250d5630b4cf539739df2c5dacb4c659f2488d9063f305d71990349060c40160606040518083038185885af11580156113de573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610ad19190612974565b336114155f546001600160a01b031690565b6001600160a01b03161461143b5760405162461bcd60e51b815260040161086b90612895565b6001600160a01b0381166114835760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b604482015260640161086b565b5f816001600160a01b0316476040515f6040518083038185875af1925050503d805f81146114cc576040519150601f19603f3d011682016040523d82523d5f602084013e6114d1565b606091505b50509050806115165760405162461bcd60e51b815260206004820152601160248201527015da5d1a191c985dd85b0819985a5b1959607a1b604482015260640161086b565b5050565b3361152c5f546001600160a01b031690565b6001600160a01b0316146115525760405162461bcd60e51b815260040161086b90612895565b600754600160d81b900460ff161561159f5760405162461bcd60e51b815260206004820152601060248201526f105b1c9958591e481b185d5b98da195960821b604482015260640161086b565b5f5b8251811015610ad1578181815181106115bc576115bc61299f565b602002602001015160085f336001600160a01b03166001600160a01b031681526020019081526020015f205410156116065760405162461bcd60e51b815260040161086b906129b3565b8181815181106116185761161861299f565b602002602001015160085f8584815181106116355761163561299f565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f205f82825461166a91906129f9565b925050819055508181815181106116835761168361299f565b602002602001015160085f336001600160a01b03166001600160a01b031681526020019081526020015f205f8282546116bc9190612a0c565b925050819055508281815181106116d5576116d561299f565b60200260200101516001600160a01b0316336001600160a01b03165f80516020612add8339815191528484815181106117105761171061299f565b602002602001015160405161172791815260200190565b60405180910390a38061173981612a1f565b9150506115a1565b6001600160a01b0383166117a35760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161086b565b6001600160a01b0382166118045760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161086b565b6001600160a01b038381165f8181526009602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166118c95760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161086b565b6001600160a01b03821661192b5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161086b565b5f811161198c5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161086b565b600754600160d81b900460ff161580156119e057505f546001600160a01b038481169116148015906119c757506001600160a01b0383163014155b80156119e057505f546001600160a01b03838116911614155b15611a235760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b604482015260640161086b565b600754600160d01b900460ff1615611ce4575f546001600160a01b03848116911614801590611a5f57505f546001600160a01b03838116911614155b8015611a7357506001600160a01b03821615155b8015611a8a57506001600160a01b03821661dead14155b8015611aa05750600754600160c81b900460ff16155b15611ce4576001600160a01b0383165f908152600c602052604090205460ff168015611ae457506001600160a01b0382165f908152600b602052604090205460ff16155b15611bb757600254811115611b495760405162461bcd60e51b815260206004820152602560248201527f427579207472616e7366657220616d6f756e74206578636565647320746865206044820152640dac2f0a8f60db1b606482015260840161086b565b6003546001600160a01b0383165f90815260086020526040902054611b6e90836129f9565b1115611bb25760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b604482015260640161086b565b611ce4565b6001600160a01b0382165f908152600c602052604090205460ff168015611bf657506001600160a01b0383165f908152600b602052604090205460ff16155b15611c5c57600254811115611bb25760405162461bcd60e51b815260206004820152602660248201527f53656c6c207472616e7366657220616d6f756e74206578636565647320746865604482015265040dac2f0a8f60d31b606482015260840161086b565b6001600160a01b0382165f908152600b602052604090205460ff16611ce4576003546001600160a01b0383165f90815260086020526040902054611ca090836129f9565b1115611ce45760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b604482015260640161086b565b600454305f90815260086020526040902054108015908190611d105750600754600160c81b900460ff16155b8015611d3457506001600160a01b0384165f908152600c602052604090205460ff16155b8015611d5857506001600160a01b0384165f908152600a602052604090205460ff16155b8015611d7c57506001600160a01b0383165f908152600a602052604090205460ff16155b15611daa576007805460ff60c81b1916600160c81b179055611d9c61220f565b6007805460ff60c81b191690555b6007546001600160a01b0385165f908152600a602052604090205460ff600160c81b909204821615911680611df657506001600160a01b0384165f908152600a602052604090205460ff165b15611dfe57505f5b6001600160a01b0385165f9081526008602052604090205483811015611e365760405162461bcd60e51b815260040161086b906129b3565b5f8215611f59576001600160a01b0386165f908152600c602052604090205460ff168015611e6f5750600754600160a81b900460ff1615155b15611ea0576007546103e890611e8f90600160a81b900460ff16876128de565b611e9991906128f5565b9050611eff565b6001600160a01b0387165f908152600c602052604090205460ff168015611ed25750600754600160a01b900460ff1615155b15611eff576007546103e890611ef290600160a01b900460ff16876128de565b611efc91906128f5565b90505b8015611f59576001600160a01b0387165f8181526008602090815260408083208054869003905530808452928190208054860190555184815297849003979192915f80516020612add833981519152910160405180910390a35b6001600160a01b038088165f8181526008602052604080822080548a900390559289168082529083902080548901905591515f80516020612add83398151915290611fa79089815260200190565b60405180910390a350505050505050565b6001600160a01b0382166120185760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161086b565b6001600160a01b0382165f908152600860205260409020548181101561208b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161086b565b6001600160a01b0383165f9081526008602052604081208383039055600180548492906120b9908490612a0c565b90915550506040518281525f906001600160a01b038516905f80516020612add83398151915290602001611858565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b17905291515f928392908716916121439190612a37565b5f604051808303815f865af19150503d805f811461217c576040519150601f19603f3d011682016040523d82523d5f602084013e612181565b606091505b50915091508180156121ab5750805115806121ab5750808060200190518101906121ab9190612a52565b6122085760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657248656c7065723a20494e5445524e414c205452414e5346456044820152671497d1905253115160c21b606482015260840161086b565b5050505050565b6004545f61221e8260146128de565b305f908152600860205260409020541115612244576004546122419060146128de565b91505b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106122775761227761299f565b60200260200101906001600160a01b031690816001600160a01b03168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2816001815181106122bf576122bf61299f565b6001600160a01b039092166020928302919091019091015260405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac947906123169086905f90869030904290600401612a6d565b5f604051808303815f87803b15801561232d575f80fd5b505af115801561233f573d5f803e3d5ffd5b5047925050811590506124f8576007545f9060649061236890600160b01b900460ff16846128de565b61237291906128f5565b6007549091505f9060649061239190600160c01b900460ff16856128de565b61239b91906128f5565b90505f816123a98486612a0c565b6123b39190612a0c565b6007546040519192506001600160a01b03169083905f81818185875af1925050503d805f81146123fe576040519150601f19603f3d011682016040523d82523d5f602084013e612403565b606091505b50506006546040519197506001600160a01b03169082905f81818185875af1925050503d805f8114612450576040519150601f19603f3d011682016040523d82523d5f602084013e612455565b606091505b50506005546040519197506001600160a01b03169084905f81818185875af1925050503d805f81146124a2576040519150601f19603f3d011682016040523d82523d5f602084013e6124a7565b606091505b50506040805189815260208101859052908101859052606081018390529096507f93efcf28fbf701a930e0ad258987a2e4f08eb3aa99f9c02029e7ba049f69405f9060800160405180910390a15050505b50505050565b5f5b83811015612518578181015183820152602001612500565b50505f910152565b602081525f825180602084015261253e8160408501602087016124fe565b601f01601f19169190910160400192915050565b80356001600160a01b0381168114612568575f80fd5b919050565b5f806040838503121561257e575f80fd5b61258783612552565b946020939093013593505050565b5f805f606084860312156125a7575f80fd5b6125b084612552565b92506125be60208501612552565b9150604084013590509250925092565b5f602082840312156125de575f80fd5b5035919050565b8015158114610ae0575f80fd5b5f60208284031215612602575f80fd5b813561260d816125e5565b9392505050565b803560ff81168114612568575f80fd5b5f805f60608486031215612636575f80fd5b61263f84612614565b925061264d60208501612614565b915061265b60408501612614565b90509250925092565b5f8060408385031215612675575f80fd5b61267e83612614565b915061268c60208401612614565b90509250929050565b5f80604083850312156126a6575f80fd5b6126af83612552565b915060208301356126bf816125e5565b809150509250929050565b5f602082840312156126da575f80fd5b61260d82612552565b5f80604083850312156126f4575f80fd5b6126fd83612552565b915061268c60208401612552565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff811182821017156127485761274861270b565b604052919050565b5f67ffffffffffffffff8211156127695761276961270b565b5060051b60200190565b5f82601f830112612782575f80fd5b8135602061279761279283612750565b61271f565b82815260059290921b840181019181810190868411156127b5575f80fd5b8286015b848110156127d057803583529183019183016127b9565b509695505050505050565b5f80604083850312156127ec575f80fd5b823567ffffffffffffffff80821115612803575f80fd5b818501915085601f830112612816575f80fd5b8135602061282661279283612750565b82815260059290921b84018101918181019089841115612844575f80fd5b948201945b838610156128695761285a86612552565b82529482019490820190612849565b9650508601359250508082111561287e575f80fd5b5061288b85828601612773565b9150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176107dd576107dd6128ca565b5f8261290f57634e487b7160e01b5f52601260045260245ffd5b500490565b60ff81811683821601908111156107dd576107dd6128ca565b602080825260169082015275416464726573732063616e6e6f74206265207a65726f60501b604082015260600190565b5f6020828403121561296d575f80fd5b5051919050565b5f805f60608486031215612986575f80fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b5f52603260045260245ffd5b60208082526026908201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604082015265616c616e636560d01b606082015260800190565b808201808211156107dd576107dd6128ca565b818103818111156107dd576107dd6128ca565b5f60018201612a3057612a306128ca565b5060010190565b5f8251612a488184602087016124fe565b9190910192915050565b5f60208284031215612a62575f80fd5b815161260d816125e5565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015612abb5784516001600160a01b031683529383019391830191600101612a96565b50506001600160a01b0396909616606085015250505060800152939250505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220c461ac6530f6b42dd4b075620de1b37982a436c2a2bd35daa1b448b6f08e803f64736f6c63430008150033

Deployed Bytecode Sourcemap

1894:13454:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4885:83;;;;;;;;;;-1:-1:-1;4955:5:0;;;;;;;;;;;;-1:-1:-1;;;4955:5:0;;;;4885:83;;;;;;;:::i;:::-;;;;;;;;5514:152;;;;;;;;;;-1:-1:-1;5514:152:0;;;;;:::i;:::-;;:::i;:::-;;;1272:14:1;;1265:22;1247:41;;1235:2;1220:18;5514:152:0;1107:187:1;3483:115:0;;;;;;;;;;;;3555:42;3483:115;;;;;-1:-1:-1;;;;;1489:32:1;;;1471:51;;1459:2;1444:18;3483:115:0;1299:229:1;5155:91:0;;;;;;;;;;-1:-1:-1;5226:12:0;;5155:91;;;1679:25:1;;;1667:2;1652:18;5155:91:0;1533:177:1;6185:520:0;;;;;;;;;;-1:-1:-1;6185:520:0;;;;;:::i;:::-;;:::i;12790:235::-;;;;;;;;;;-1:-1:-1;12790:235:0;;;;;:::i;:::-;;:::i;:::-;;11522:87;;;;;;;;;;-1:-1:-1;11522:87:0;;;;;:::i;:::-;;:::i;5071:76::-;;;;;;;;;;-1:-1:-1;5137:2:0;5071:76;;;2774:4:1;2762:17;;;2744:36;;2732:2;2717:18;5071:76:0;2602:184:1;10055:300:0;;;;;;;;;;-1:-1:-1;10055:300:0;;;;;:::i;:::-;;:::i;2693:24::-;;;;;;;;;;-1:-1:-1;2693:24:0;;;;-1:-1:-1;;;2693:24:0;;;;;;9398:81;;;;;;;;;;-1:-1:-1;9398:81:0;;;;;:::i;:::-;;:::i;3605:38::-;;;;;;;;;;;;;;;2822:33;;;;;;;;;;-1:-1:-1;2822:33:0;;;;-1:-1:-1;;;2822:33:0;;;;;;10363:341;;;;;;;;;;-1:-1:-1;10363:341:0;;;;;:::i;:::-;;:::i;10712:136::-;;;;;;;;;;-1:-1:-1;10712:136:0;;;;;:::i;:::-;;:::i;12177:361::-;;;;;;;;;;-1:-1:-1;12177:361:0;;;;;:::i;:::-;;:::i;10856:158::-;;;;;;;;;;-1:-1:-1;10856:158:0;;;;;:::i;:::-;;:::i;2653:31::-;;;;;;;;;;-1:-1:-1;2653:31:0;;;;-1:-1:-1;;;2653:31:0;;;;;;5254:110;;;;;;;;;;-1:-1:-1;5254:110:0;;;;;:::i;:::-;-1:-1:-1;;;;;5338:18:0;5311:7;5338:18;;;:9;:18;;;;;;;5254:110;591:92;;;;;;;;;;;;;:::i;13033:175::-;;;;;;;;;;-1:-1:-1;13033:175:0;;;;;:::i;:::-;;:::i;12546:236::-;;;;;;;;;;-1:-1:-1;12546:236:0;;;;;:::i;:::-;;:::i;9963:84::-;;;;;;;;;;;;;:::i;13409:177::-;;;;;;;;;;-1:-1:-1;13409:177:0;;;;;:::i;:::-;;:::i;13216:185::-;;;;;;;;;;-1:-1:-1;13216:185:0;;;;;:::i;:::-;;:::i;13594:123::-;;;;;;;;;;-1:-1:-1;13594:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;13681:28:0;13657:4;13681:28;;;:19;:28;;;;;;;;;13594:123;370:87;;;;;;;;;;-1:-1:-1;416:7:0;443:6;-1:-1:-1;;;;;443:6:0;370:87;;4976;;;;;;;;;;-1:-1:-1;5048:7:0;;;;;;;;;;;;-1:-1:-1;;;5048:7:0;;;;4976:87;;11958:211;;;;;;;;;;-1:-1:-1;11958:211:0;;;;;:::i;:::-;;:::i;6019:158::-;;;;;;;;;;-1:-1:-1;6019:158:0;;;;;:::i;:::-;;:::i;13725:240::-;;;;;;;;;;-1:-1:-1;13725:240:0;;;;;:::i;:::-;;:::i;11617:333::-;;;:::i;2104:54::-;;;;;;;;;;;;;;;;2724:29;;;;;;;;;;-1:-1:-1;2724:29:0;;;;-1:-1:-1;;;2724:29:0;;;;;;13973:247;;;;;;;;;;-1:-1:-1;13973:247:0;;;;;:::i;:::-;;:::i;2760:25::-;;;;;;;;;;-1:-1:-1;2760:25:0;;;;-1:-1:-1;;;2760:25:0;;;;;;2616:30;;;;;;;;;;-1:-1:-1;2616:30:0;;;;-1:-1:-1;;;2616:30:0;;;;;;5372:134;;;;;;;;;;-1:-1:-1;5372:134:0;;;;;:::i;:::-;-1:-1:-1;;;;;5471:18:0;;;5444:7;5471:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;5372:134;2215:62;;;;;;;;;;;;;;;;11022:492;;;;;;;;;;-1:-1:-1;11022:492:0;;;;;:::i;:::-;;:::i;2165:43::-;;;;;;;;;;;;;;;;5514:152;5582:4;5599:37;5608:10;5620:7;5629:6;5599:8;:37::i;:::-;-1:-1:-1;5654:4:0;5514:152;;;;;:::o;6185:520::-;-1:-1:-1;;;;;6320:19:0;;6276:4;6320:19;;;:11;:19;;;;;;;;6340:10;6320:31;;;;;;;;-1:-1:-1;;6366:37:0;;6362:263;;6448:6;6428:16;:26;;6420:79;;;;-1:-1:-1;;;6420:79:0;;7140:2:1;6420:79:0;;;7122:21:1;7179:2;7159:18;;;7152:30;7218:34;7198:18;;;7191:62;-1:-1:-1;;;7269:18:1;;;7262:38;7317:19;;6420:79:0;;;;;;;;;6543:55;6552:6;6560:10;6591:6;6572:16;:25;6543:8;:55::i;:::-;6637:36;6647:6;6655:9;6666:6;6637:9;:36::i;:::-;-1:-1:-1;6693:4:0;;6185:520;-1:-1:-1;;;;6185:520:0:o;12790:235::-;516:10;505:7;416;443:6;-1:-1:-1;;;;;443:6:0;;370:87;505:7;-1:-1:-1;;;;;505:21:0;;497:66;;;;-1:-1:-1;;;497:66:0;;;;;;;:::i;:::-;12925:4:::1;12917;12896:13;5226:12:::0;;;5155:91;12896:13:::1;:17;::::0;12912:1:::1;12896:17;:::i;:::-;12895:26;;;;:::i;:::-;12894:35;;;;:::i;:::-;12878:12;:51;;12870:101;;;::::0;-1:-1:-1;;;12870:101:0;;8437:2:1;12870:101:0::1;::::0;::::1;8419:21:1::0;8476:2;8456:18;;;8449:30;8515:34;8495:18;;;8488:62;-1:-1:-1;;;8566:18:1;;;8559:35;8611:19;;12870:101:0::1;8235:401:1::0;12870:101:0::1;12994:23;:12:::0;13010:6:::1;12994:23;:::i;:::-;12982:9;:35:::0;-1:-1:-1;12790:235:0:o;11522:87::-;516:10;505:7;416;443:6;-1:-1:-1;;;;;443:6:0;;370:87;505:7;-1:-1:-1;;;;;505:21:0;;497:66;;;;-1:-1:-1;;;497:66:0;;;;;;;:::i;:::-;11584:8:::1;:17:::0;;;::::1;;-1:-1:-1::0;;;11584:17:0::1;-1:-1:-1::0;;;;11584:17:0;;::::1;::::0;;;::::1;::::0;;11522:87::o;10055:300::-;516:10;505:7;416;443:6;-1:-1:-1;;;;;443:6:0;;370:87;505:7;-1:-1:-1;;;;;505:21:0;;497:66;;;;-1:-1:-1;;;497:66:0;;;;;;;:::i;:::-;10165:6:::1;:16:::0;;-1:-1:-1;;;;10192:26:0;-1:-1:-1;;;10165:16:0::1;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;;;10192:26:0;;;;;-1:-1:-1;;;10192:26:0;;::::1;::::0;::::1;::::0;;;::::1;-1:-1:-1::0;;;;10229:18:0::1;-1:-1:-1::0;;;10229:18:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;;10290:7;::::1;::::0;::::1;::::0;10267:20:::1;::::0;10276:11;;::::1;::::0;::::1;::::0;10267:6;::::1;;:20;:::i;:::-;:30;;;;:::i;:::-;10266:39;;10302:3;10266:39;10258:89;;;::::0;-1:-1:-1;;;10258:89:0;;8996:2:1;10258:89:0::1;::::0;::::1;8978:21:1::0;9035:2;9015:18;;;9008:30;9074:34;9054:18;;;9047:62;-1:-1:-1;;;9125:18:1;;;9118:35;9170:19;;10258:89:0::1;8794:401:1::0;10258:89:0::1;10055:300:::0;;;:::o;9398:81::-;9447:24;9453:10;9465:5;9447;:24::i;:::-;9398:81;:::o;10363:341::-;516:10;505:7;416;443:6;-1:-1:-1;;;;;443:6:0;;370:87;505:7;-1:-1:-1;;;;;505:21:0;;497:66;;;;-1:-1:-1;;;497:66:0;;;;;;;:::i;:::-;10478:3:::1;10461:13;:20;;;;10453:75;;;::::0;-1:-1:-1;;;10453:75:0;;9402:2:1;10453:75:0::1;::::0;::::1;9384:21:1::0;9441:2;9421:18;;;9414:30;9480:34;9460:18;;;9453:62;-1:-1:-1;;;9531:18:1;;;9524:40;9581:19;;10453:75:0::1;9200:406:1::0;10453:75:0::1;10565:3;10547:14;:21;;;;10539:77;;;::::0;-1:-1:-1;;;10539:77:0;;9813:2:1;10539:77:0::1;::::0;::::1;9795:21:1::0;9852:2;9832:18;;;9825:30;9891:34;9871:18;;;9864:62;-1:-1:-1;;;9942:18:1;;;9935:41;9993:19;;10539:77:0::1;9611:407:1::0;10539:77:0::1;10627:12;:28:::0;;-1:-1:-1;;;;10666:30:0;-1:-1:-1;;;10627:28:0::1;::::0;;::::1;;-1:-1:-1::0;;;;10666:30:0;;-1:-1:-1;;;10666:30:0;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;10363:341::o;10712:136::-;516:10;505:7;416;443:6;-1:-1:-1;;;;;443:6:0;;370:87;505:7;-1:-1:-1;;;;;505:21:0;;497:66;;;;-1:-1:-1;;;497:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10801:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:39;;-1:-1:-1;;10801:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;10712:136::o;12177:361::-;516:10;505:7;416;443:6;-1:-1:-1;;;;;443:6:0;;370:87;505:7;-1:-1:-1;;;;;505:21:0;;497:66;;;;-1:-1:-1;;;497:66:0;;;;;;;:::i;:::-;12302:6:::1;12281:13;5226:12:::0;;;5155:91;12281:13:::1;:17;::::0;12297:1:::1;12281:17;:::i;:::-;12280:28;;;;:::i;:::-;12263:13;:45;;12255:111;;;::::0;-1:-1:-1;;;12255:111:0;;10225:2:1;12255:111:0::1;::::0;::::1;10207:21:1::0;10264:2;10244:18;;;10237:30;10303:34;10283:18;;;10276:62;-1:-1:-1;;;10354:18:1;;;10347:51;10415:19;;12255:111:0::1;10023:417:1::0;12255:111:0::1;12424:4;12403:13;5226:12:::0;;;5155:91;12403:13:::1;:17;::::0;12419:1:::1;12403:17;:::i;:::-;12402:26;;;;:::i;:::-;12385:13;:43;;12377:108;;;::::0;-1:-1:-1;;;12377:108:0;;10647:2:1;12377:108:0::1;::::0;::::1;10629:21:1::0;10686:2;10666:18;;;10659:30;10725:34;10705:18;;;10698:62;-1:-1:-1;;;10776:18:1;;;10769:50;10836:19;;12377:108:0::1;10445:416:1::0;12377:108:0::1;12496:18;:34:::0;12177:361::o;10856:158::-;516:10;505:7;416;443:6;-1:-1:-1;;;;;443:6:0;;370:87;505:7;-1:-1:-1;;;;;505:21:0;;497:66;;;;-1:-1:-1;;;497:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10955:40:0;;;::::1;;::::0;;;:31:::1;:40;::::0;;;;:51;;-1:-1:-1;;10955:51:0::1;::::0;::::1;;::::0;;;::::1;::::0;;10856:158::o;591:92::-;516:10;505:7;416;443:6;-1:-1:-1;;;;;443:6:0;;370:87;505:7;-1:-1:-1;;;;;505:21:0;;497:66;;;;-1:-1:-1;;;497:66:0;;;;;;;:::i;:::-;673:1:::1;656:19:::0;;-1:-1:-1;;;;;;656:19:0::1;::::0;;591:92::o;13033:175::-;516:10;505:7;416;443:6;-1:-1:-1;;;;;443:6:0;;370:87;505:7;-1:-1:-1;;;;;505:21:0;;497:66;;;;-1:-1:-1;;;497:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13116:24:0;::::1;13108:59;;;;-1:-1:-1::0;;;13108:59:0::1;;;;;;;:::i;:::-;13178:9;:22:::0;;-1:-1:-1;;;;;;13178:22:0::1;-1:-1:-1::0;;;;;13178:22:0;;;::::1;::::0;;;::::1;::::0;;13033:175::o;12546:236::-;516:10;505:7;416;443:6;-1:-1:-1;;;;;443:6:0;;370:87;505:7;-1:-1:-1;;;;;505:21:0;;497:66;;;;-1:-1:-1;;;497:66:0;;;;;;;:::i;:::-;12670:4:::1;12662;12641:13;5226:12:::0;;;5155:91;12641:13:::1;:17;::::0;12657:1:::1;12641:17;:::i;:::-;12640:26;;;;:::i;:::-;12639:35;;;;:::i;:::-;12627:8;:47;;12619:102;;;::::0;-1:-1:-1;;;12619:102:0;;11419:2:1;12619:102:0::1;::::0;::::1;11401:21:1::0;11458:2;11438:18;;;11431:30;11497:34;11477:18;;;11470:62;-1:-1:-1;;;11548:18:1;;;11541:40;11598:19;;12619:102:0::1;11217:406:1::0;12619:102:0::1;12755:19;:8:::0;12767:6:::1;12755:19;:::i;:::-;12732:20;:42:::0;-1:-1:-1;12546:236:0:o;9963:84::-;516:10;505:7;416;443:6;-1:-1:-1;;;;;443:6:0;;370:87;505:7;-1:-1:-1;;;;;505:21:0;;497:66;;;;-1:-1:-1;;;497:66:0;;;;;;;:::i;:::-;10017:14:::1;:22:::0;;-1:-1:-1;;;;10017:22:0::1;::::0;;9963:84::o;13409:177::-;516:10;505:7;416;443:6;-1:-1:-1;;;;;443:6:0;;370:87;505:7;-1:-1:-1;;;;;505:21:0;;497:66;;;;-1:-1:-1;;;497:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13493:24:0;::::1;13485:59;;;;-1:-1:-1::0;;;13485:59:0::1;;;;;;;:::i;:::-;13555:10;:23:::0;;-1:-1:-1;;;;;;13555:23:0::1;-1:-1:-1::0;;;;;13555:23:0;;;::::1;::::0;;;::::1;::::0;;13409:177::o;13216:185::-;516:10;505:7;416;443:6;-1:-1:-1;;;;;443:6:0;;370:87;505:7;-1:-1:-1;;;;;505:21:0;;497:66;;;;-1:-1:-1;;;497:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13304:24:0;::::1;13296:59;;;;-1:-1:-1::0;;;13296:59:0::1;;;;;;;:::i;:::-;13366:14;:27:::0;;-1:-1:-1;;;;;;13366:27:0::1;-1:-1:-1::0;;;;;13366:27:0;;;::::1;::::0;;;::::1;::::0;;13216:185::o;11958:211::-;516:10;505:7;416;443:6;-1:-1:-1;;;;;443:6:0;;370:87;505:7;-1:-1:-1;;;;;505:21:0;;497:66;;;;-1:-1:-1;;;497:66:0;;;;;;;:::i;:::-;12067:13:::1;-1:-1:-1::0;;;;;12059:21:0::1;:4;-1:-1:-1::0;;;;;12059:21:0::1;::::0;12051:60:::1;;;::::0;-1:-1:-1;;;12051:60:0;;11830:2:1;12051:60:0::1;::::0;::::1;11812:21:1::0;11869:2;11849:18;;;11842:30;11908:28;11888:18;;;11881:56;11954:18;;12051:60:0::1;11628:350:1::0;12051:60:0::1;-1:-1:-1::0;;;;;12122:31:0;;;::::1;;::::0;;;:25:::1;:31;::::0;;;;:39;;-1:-1:-1;;12122:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;11958:211::o;6019:158::-;6090:4;6107:40;6117:10;6129:9;6140:6;6107:9;:40::i;13725:240::-;516:10;505:7;416;443:6;-1:-1:-1;;;;;443:6:0;;370:87;505:7;-1:-1:-1;;;;;505:21:0;;497:66;;;;-1:-1:-1;;;497:66:0;;;;;;;:::i;:::-;13837:38:::1;::::0;-1:-1:-1;;;13837:38:0;;13869:4:::1;13837:38;::::0;::::1;1471:51:1::0;13810:24:0::1;::::0;-1:-1:-1;;;;;13837:23:0;::::1;::::0;::::1;::::0;1444:18:1;;13837:38:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13810:65;;13886:51;13909:5;13916:2;13920:16;13886:22;:51::i;11617:333::-:0;516:10;505:7;416;443:6;-1:-1:-1;;;;;443:6:0;;370:87;505:7;-1:-1:-1;;;;;505:21:0;;497:66;;;;-1:-1:-1;;;497:66:0;;;;;;;:::i;:::-;11688:8:::1;::::0;-1:-1:-1;;;11688:8:0;::::1;;;11687:9;11679:38;;;::::0;-1:-1:-1;;;11679:38:0;;12374:2:1;11679:38:0::1;::::0;::::1;12356:21:1::0;12413:2;12393:18;;;12386:30;-1:-1:-1;;;12432:18:1;;;12425:46;12488:18;;11679:38:0::1;12172:340:1::0;11679:38:0::1;11800:4;11820:24;::::0;;;:9:::1;:24;::::0;;;;;;11891:10:::1;::::0;11728:214;;-1:-1:-1;;;11728:214:0;;::::1;::::0;::::1;12858:34:1::0;;;;12908:18;;;12901:34;12951:18;;;12944:34;;;12994:18;;;12987:34;;;;-1:-1:-1;;;;;11891:10:0::1;13037:19:1::0;;;13030:44;11916:15:0::1;13090:19:1::0;;;13083:35;3555:42:0::1;::::0;11728:31:::1;::::0;11767:9:::1;::::0;12792:19:1;;11728:214:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;13973:247::-:0;516:10;505:7;416;443:6;-1:-1:-1;;;;;443:6:0;;370:87;505:7;-1:-1:-1;;;;;505:21:0;;497:66;;;;-1:-1:-1;;;497:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14051:18:0;::::1;14043:46;;;::::0;-1:-1:-1;;;14043:46:0;;13642:2:1;14043:46:0::1;::::0;::::1;13624:21:1::0;13681:2;13661:18;;;13654:30;-1:-1:-1;;;13700:18:1;;;13693:45;13755:18;;14043:46:0::1;13440:339:1::0;14043:46:0::1;14103:12;14121:4;-1:-1:-1::0;;;;;14121:9:0::1;14138:21;14121:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14102:62;;;14183:7;14175:37;;;::::0;-1:-1:-1;;;14175:37:0;;14196:2:1;14175:37:0::1;::::0;::::1;14178:21:1::0;14235:2;14215:18;;;14208:30;-1:-1:-1;;;14254:18:1;;;14247:47;14311:18;;14175:37:0::1;13994:341:1::0;14175:37:0::1;14032:188;13973:247:::0;:::o;11022:492::-;516:10;505:7;416;443:6;-1:-1:-1;;;;;443:6:0;;370:87;505:7;-1:-1:-1;;;;;505:21:0;;497:66;;;;-1:-1:-1;;;497:66:0;;;;;;;:::i;:::-;11139:8:::1;::::0;-1:-1:-1;;;11139:8:0;::::1;;;11138:9;11130:38;;;::::0;-1:-1:-1;;;11130:38:0;;12374:2:1;11130:38:0::1;::::0;::::1;12356:21:1::0;12413:2;12393:18;;;12386:30;-1:-1:-1;;;12432:18:1;;;12425:46;12488:18;;11130:38:0::1;12172:340:1::0;11130:38:0::1;11184:9;11179:328;11203:9;:16;11199:1;:20;11179:328;;;11274:7;11282:1;11274:10;;;;;;;;:::i;:::-;;;;;;;11249:9;:21;11259:10;-1:-1:-1::0;;;;;11249:21:0::1;-1:-1:-1::0;;;;;11249:21:0::1;;;;;;;;;;;;;:35;;11241:86;;;;-1:-1:-1::0;;;11241:86:0::1;;;;;;;:::i;:::-;11369:7;11377:1;11369:10;;;;;;;;:::i;:::-;;;;;;;11342:9;:23;11352:9;11362:1;11352:12;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;11342:23:0::1;-1:-1:-1::0;;;;;11342:23:0::1;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;;;;;;;11419:7;11427:1;11419:10;;;;;;;;:::i;:::-;;;;;;;11394:9;:21;11404:10;-1:-1:-1::0;;;;;11394:21:0::1;-1:-1:-1::0;;;;;11394:21:0::1;;;;;;;;;;;;;:35;;;;;;;:::i;:::-;;;;;;;;11470:9;11480:1;11470:12;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;11449:46:0::1;11458:10;-1:-1:-1::0;;;;;11449:46:0::1;-1:-1:-1::0;;;;;;;;;;;11484:7:0::1;11492:1;11484:10;;;;;;;;:::i;:::-;;;;;;;11449:46;;;;1679:25:1::0;;1667:2;1652:18;;1533:177;11449:46:0::1;;;;;;;;11221:3:::0;::::1;::::0;::::1;:::i;:::-;;;;11179:328;;5674:337:::0;-1:-1:-1;;;;;5767:19:0;;5759:68;;;;-1:-1:-1;;;5759:68:0;;15484:2:1;5759:68:0;;;15466:21:1;15523:2;15503:18;;;15496:30;15562:34;15542:18;;;15535:62;-1:-1:-1;;;15613:18:1;;;15606:34;15657:19;;5759:68:0;15282:400:1;5759:68:0;-1:-1:-1;;;;;5846:21:0;;5838:68;;;;-1:-1:-1;;;5838:68:0;;15889:2:1;5838:68:0;;;15871:21:1;15928:2;15908:18;;;15901:30;15967:34;15947:18;;;15940:62;-1:-1:-1;;;16018:18:1;;;16011:32;16060:19;;5838:68:0;15687:398:1;5838:68:0;-1:-1:-1;;;;;5919:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;5971:32;;1679:25:1;;;5971:32:0;;1652:18:1;5971:32:0;;;;;;;;5674:337;;;:::o;6713:2677::-;-1:-1:-1;;;;;6801:18:0;;6793:68;;;;-1:-1:-1;;;6793:68:0;;16292:2:1;6793:68:0;;;16274:21:1;16331:2;16311:18;;;16304:30;16370:34;16350:18;;;16343:62;-1:-1:-1;;;16421:18:1;;;16414:35;16466:19;;6793:68:0;16090:401:1;6793:68:0;-1:-1:-1;;;;;6880:16:0;;6872:64;;;;-1:-1:-1;;;6872:64:0;;16698:2:1;6872:64:0;;;16680:21:1;16737:2;16717:18;;;16710:30;16776:34;16756:18;;;16749:62;-1:-1:-1;;;16827:18:1;;;16820:33;16870:19;;6872:64:0;16496:399:1;6872:64:0;6964:1;6955:6;:10;6947:64;;;;-1:-1:-1;;;6947:64:0;;17102:2:1;6947:64:0;;;17084:21:1;17141:2;17121:18;;;17114:30;17180:34;17160:18;;;17153:62;-1:-1:-1;;;17231:18:1;;;17224:39;17280:19;;6947:64:0;16900:405:1;6947:64:0;7029:8;;-1:-1:-1;;;7029:8:0;;;;7028:9;:72;;;;-1:-1:-1;416:7:0;443:6;-1:-1:-1;;;;;7042:15:0;;;443:6;;7042:15;;;;:40;;-1:-1:-1;;;;;;7061:21:0;;7077:4;7061:21;;7042:40;:57;;;;-1:-1:-1;416:7:0;443:6;-1:-1:-1;;;;;7086:13:0;;;443:6;;7086:13;;7042:57;7024:134;;;7117:29;;-1:-1:-1;;;7117:29:0;;17512:2:1;7117:29:0;;;17494:21:1;17551:2;17531:18;;;17524:30;-1:-1:-1;;;17570:18:1;;;17563:49;17629:18;;7117:29:0;17310:343:1;7024:134:0;7174:14;;-1:-1:-1;;;7174:14:0;;;;7170:830;;;416:7;443:6;-1:-1:-1;;;;;7209:15:0;;;443:6;;7209:15;;;;:32;;-1:-1:-1;416:7:0;443:6;-1:-1:-1;;;;;7228:13:0;;;443:6;;7228:13;;7209:32;:52;;;;-1:-1:-1;;;;;;7245:16:0;;;;7209:52;:77;;;;-1:-1:-1;;;;;;7265:21:0;;7279:6;7265:21;;7209:77;:90;;;;-1:-1:-1;7291:8:0;;-1:-1:-1;;;7291:8:0;;;;7290:9;7209:90;7205:784;;;-1:-1:-1;;;;;7324:31:0;;;;;;:25;:31;;;;;;;;:71;;;;-1:-1:-1;;;;;;7360:35:0;;;;;;:31;:35;;;;;;;;7359:36;7324:71;7320:654;;;7438:20;;7428:6;:30;;7420:80;;;;-1:-1:-1;;;7420:80:0;;17860:2:1;7420:80:0;;;17842:21:1;17899:2;17879:18;;;17872:30;17938:34;17918:18;;;17911:62;-1:-1:-1;;;17989:18:1;;;17982:35;18034:19;;7420:80:0;17658:401:1;7420:80:0;7557:9;;-1:-1:-1;;;;;5338:18:0;;5311:7;5338:18;;;:9;:18;;;;;;7531:22;;:6;:22;:::i;:::-;:35;;7523:67;;;;-1:-1:-1;;;7523:67:0;;18266:2:1;7523:67:0;;;18248:21:1;18305:2;18285:18;;;18278:30;-1:-1:-1;;;18324:18:1;;;18317:49;18383:18;;7523:67:0;18064:343:1;7523:67:0;7320:654;;;-1:-1:-1;;;;;7620:29:0;;;;;;:25;:29;;;;;;;;:71;;;;-1:-1:-1;;;;;;7654:37:0;;;;;;:31;:37;;;;;;;;7653:38;7620:71;7616:358;;;7734:20;;7724:6;:30;;7716:80;;;;-1:-1:-1;;;7716:80:0;;18614:2:1;7716:80:0;;;18596:21:1;18653:2;18633:18;;;18626:30;18692:34;18672:18;;;18665:62;-1:-1:-1;;;18743:18:1;;;18736:36;18789:19;;7716:80:0;18412:402:1;7616:358:0;-1:-1:-1;;;;;7827:35:0;;;;;;:31;:35;;;;;;;;7822:152;;7921:9;;-1:-1:-1;;;;;5338:18:0;;5311:7;5338:18;;;:9;:18;;;;;;7895:22;;:6;:22;:::i;:::-;:35;;7887:67;;;;-1:-1:-1;;;7887:67:0;;18266:2:1;7887:67:0;;;18248:21:1;18305:2;18285:18;;;18278:30;-1:-1:-1;;;18324:18:1;;;18317:49;18383:18;;7887:67:0;18064:343:1;7887:67:0;8055:18;;8045:4;8012:12;5338:18;;;:9;:18;;;;;;-1:-1:-1;8027:46:0;;;;;8090:20;;-1:-1:-1;8102:8:0;;-1:-1:-1;;;8102:8:0;;;;8101:9;8090:20;:56;;;;-1:-1:-1;;;;;;8115:31:0;;;;;;:25;:31;;;;;;;;8114:32;8090:56;:86;;;;-1:-1:-1;;;;;;8151:25:0;;;;;;:19;:25;;;;;;;;8150:26;8090:86;:114;;;;-1:-1:-1;;;;;;8181:23:0;;;;;;:19;:23;;;;;;;;8180:24;8090:114;8086:218;;;8221:8;:15;;-1:-1:-1;;;;8221:15:0;-1:-1:-1;;;8221:15:0;;;8251:10;:8;:10::i;:::-;8276:8;:16;;-1:-1:-1;;;;8276:16:0;;;8086:218;8332:8;;-1:-1:-1;;;;;8357:25:0;;8316:12;8357:25;;;:19;:25;;;;;;8332:8;-1:-1:-1;;;8332:8:0;;;;;8331:9;;8357:25;;:52;;-1:-1:-1;;;;;;8386:23:0;;;;;;:19;:23;;;;;;;;8357:52;8353:100;;;-1:-1:-1;8436:5:0;8353:100;-1:-1:-1;;;;;8489:15:0;;8465:21;8489:15;;;:9;:15;;;;;;8523:23;;;;8515:74;;;;-1:-1:-1;;;8515:74:0;;;;;;;:::i;:::-;8602:12;8633:7;8629:602;;;-1:-1:-1;;;;;8661:29:0;;;;;;:25;:29;;;;;;;;:50;;;;-1:-1:-1;8694:13:0;;-1:-1:-1;;;8694:13:0;;;;:17;;8661:50;8657:264;;;8749:13;;8766:4;;8740:22;;-1:-1:-1;;;8749:13:0;;;;8740:6;:22;:::i;:::-;8739:31;;;;:::i;:::-;8732:38;;8657:264;;;-1:-1:-1;;;;;8796:31:0;;;;;;:25;:31;;;;;;;;:51;;;;-1:-1:-1;8831:12:0;;-1:-1:-1;;;8831:12:0;;;;:16;;8796:51;8792:129;;;8885:12;;8901:4;;8876:21;;-1:-1:-1;;;8885:12:0;;;;8876:6;:21;:::i;:::-;8875:30;;;;:::i;:::-;8868:37;;8792:129;8941:8;;8937:283;;-1:-1:-1;;;;;9048:15:0;;;;;;:9;:15;;;;;;;;:23;;;;;;;9112:4;9094:24;;;;;;;:32;;;;;;9169:35;1679:25:1;;;9012:13:0;;;;;9112:4;;9048:15;-1:-1:-1;;;;;;;;;;;9169:35:0;1652:18:1;9169:35:0;;;;;;;8937:283;-1:-1:-1;;;;;9266:15:0;;;;;;;:9;:15;;;;;;:25;;;;;;;9306:13;;;;;;;;;;:23;;;;;;9356:26;;-1:-1:-1;;;;;;;;;;;9356:26:0;;;9285:6;1679:25:1;;1667:2;1652:18;;1533:177;9356:26:0;;;;;;;;6782:2608;;;;6713:2677;;;:::o;9487:468::-;-1:-1:-1;;;;;9571:21:0;;9563:67;;;;-1:-1:-1;;;9563:67:0;;19021:2:1;9563:67:0;;;19003:21:1;19060:2;19040:18;;;19033:30;19099:34;19079:18;;;19072:62;-1:-1:-1;;;19150:18:1;;;19143:31;19191:19;;9563:67:0;18819:397:1;9563:67:0;-1:-1:-1;;;;;9668:18:0;;9643:22;9668:18;;;:9;:18;;;;;;9705:24;;;;9697:71;;;;-1:-1:-1;;;9697:71:0;;19423:2:1;9697:71:0;;;19405:21:1;19462:2;19442:18;;;19435:30;19501:34;19481:18;;;19474:62;-1:-1:-1;;;19552:18:1;;;19545:32;19594:19;;9697:71:0;19221:398:1;9697:71:0;-1:-1:-1;;;;;9804:18:0;;;;;;:9;:18;;;;;9825:23;;;9804:44;;9870:12;:22;;9842:6;;9804:18;9870:22;;9842:6;;9870:22;:::i;:::-;;;;-1:-1:-1;;9910:37:0;;1679:25:1;;;9936:1:0;;-1:-1:-1;;;;;9910:37:0;;;-1:-1:-1;;;;;;;;;;;9910:37:0;1667:2:1;1652:18;9910:37:0;1533:177:1;715:320:0;846:59;;;-1:-1:-1;;;;;19816:32:1;;;846:59:0;;;19798:51:1;19865:18;;;;19858:34;;;846:59:0;;;;;;;;;;19771:18:1;;;;846:59:0;;;;;;;-1:-1:-1;;;;;846:59:0;-1:-1:-1;;;846:59:0;;;835:71;;-1:-1:-1;;;;835:10:0;;;;:71;;846:59;835:71;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;799:107;;;;925:7;:57;;;;-1:-1:-1;937:11:0;;:16;;:44;;;968:4;957:24;;;;;;;;;;;;:::i;:::-;917:110;;;;-1:-1:-1;;;917:110:0;;20647:2:1;917:110:0;;;20629:21:1;20686:2;20666:18;;;20659:30;20725:34;20705:18;;;20698:62;-1:-1:-1;;;20776:18:1;;;20769:38;20824:19;;917:110:0;20445:404:1;917:110:0;788:247;;715:320;;;:::o;14228:1117::-;14291:18;;14267:21;14376:23;14291:18;14397:2;14376:23;:::i;:::-;14367:4;5311:7;5338:18;;;:9;:18;;;;;;14349:50;14345:122;;;14432:18;;:23;;14453:2;14432:23;:::i;:::-;14416:39;;14345:122;14503:16;;;14517:1;14503:16;;;;;;;;14479:21;;14503:16;;;;;;;;;;-1:-1:-1;14503:16:0;14479:40;;14548:4;14530;14535:1;14530:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;14530:23:0;;;-1:-1:-1;;;;;14530:23:0;;;;;2561:42;14564:4;14569:1;14564:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14564:14:0;;;:7;;;;;;;;;;;:14;14591:122;;-1:-1:-1;;;14591:122:0;;3555:42;;14591:66;;:122;;14658:13;;14673:1;;14676:4;;14690;;14697:15;;14591:122;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14747:21:0;;-1:-1:-1;;14783:14:0;;;-1:-1:-1;14779:559:0;;14848:6;;14814:17;;14858:3;;14835:19;;-1:-1:-1;;;14848:6:0;;;;14835:10;:19;:::i;:::-;14834:27;;;;:::i;:::-;14911:7;;14814:47;;-1:-1:-1;14876:18:0;;14922:3;;14898:20;;-1:-1:-1;;;14911:7:0;;;;14898:10;:20;:::i;:::-;14897:28;;;;:::i;:::-;14876:49;-1:-1:-1;14940:22:0;14876:49;14965:22;14978:9;14965:10;:22;:::i;:::-;:35;;;;:::i;:::-;15039:10;;15031:47;;14940:60;;-1:-1:-1;;;;;;15039:10:0;;15063;;15031:47;;;;15063:10;15039;15031:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15115:14:0;;15107:55;;15017:61;;-1:-1:-1;;;;;;15115:14:0;;15143;;15107:55;;;;15143:14;15115;15107:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15199:9:0;;15191:45;;15093:69;;-1:-1:-1;;;;;;15199:9:0;;15222;;15191:45;;;;15222:9;15199;15191:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15258:68:0;;;22070:25:1;;;22126:2;22111:18;;22104:34;;;22154:18;;;22147:34;;;22212:2;22197:18;;22190:34;;;15177:59:0;;-1:-1:-1;15258:68:0;;22057:3:1;22042:19;15258:68:0;;;;;;;14799:539;;;14779:559;14256:1089;;;;14228: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:173::-;738:20;;-1:-1:-1;;;;;787:31:1;;777:42;;767:70;;833:1;830;823:12;767:70;670:173;;;:::o;848:254::-;916:6;924;977:2;965:9;956:7;952:23;948:32;945:52;;;993:1;990;983:12;945:52;1016:29;1035:9;1016:29;:::i;:::-;1006:39;1092:2;1077:18;;;;1064:32;;-1:-1:-1;;;848:254:1:o;1715:328::-;1792:6;1800;1808;1861:2;1849:9;1840:7;1836:23;1832:32;1829:52;;;1877:1;1874;1867:12;1829:52;1900:29;1919:9;1900:29;:::i;:::-;1890:39;;1948:38;1982:2;1971:9;1967:18;1948:38;:::i;:::-;1938:48;;2033:2;2022:9;2018:18;2005:32;1995:42;;1715:328;;;;;:::o;2048:180::-;2107:6;2160:2;2148:9;2139:7;2135:23;2131:32;2128:52;;;2176:1;2173;2166:12;2128:52;-1:-1:-1;2199:23:1;;2048:180;-1:-1:-1;2048:180:1:o;2233:118::-;2319:5;2312:13;2305:21;2298:5;2295:32;2285:60;;2341:1;2338;2331:12;2356:241;2412:6;2465:2;2453:9;2444:7;2440:23;2436:32;2433:52;;;2481:1;2478;2471:12;2433:52;2520:9;2507:23;2539:28;2561:5;2539:28;:::i;:::-;2586:5;2356:241;-1:-1:-1;;;2356:241:1:o;2791:156::-;2857:20;;2917:4;2906:16;;2896:27;;2886:55;;2937:1;2934;2927:12;2952:322;3023:6;3031;3039;3092:2;3080:9;3071:7;3067:23;3063:32;3060:52;;;3108:1;3105;3098:12;3060:52;3131:27;3148:9;3131:27;:::i;:::-;3121:37;;3177:36;3209:2;3198:9;3194:18;3177:36;:::i;:::-;3167:46;;3232:36;3264:2;3253:9;3249:18;3232:36;:::i;:::-;3222:46;;2952:322;;;;;:::o;3487:252::-;3551:6;3559;3612:2;3600:9;3591:7;3587:23;3583:32;3580:52;;;3628:1;3625;3618:12;3580:52;3651:27;3668:9;3651:27;:::i;:::-;3641:37;;3697:36;3729:2;3718:9;3714:18;3697:36;:::i;:::-;3687:46;;3487:252;;;;;:::o;3744:315::-;3809:6;3817;3870:2;3858:9;3849:7;3845:23;3841:32;3838:52;;;3886:1;3883;3876:12;3838:52;3909:29;3928:9;3909:29;:::i;:::-;3899:39;;3988:2;3977:9;3973:18;3960:32;4001:28;4023:5;4001:28;:::i;:::-;4048:5;4038:15;;;3744:315;;;;;:::o;4064:186::-;4123:6;4176:2;4164:9;4155:7;4151:23;4147:32;4144:52;;;4192:1;4189;4182:12;4144:52;4215:29;4234:9;4215:29;:::i;4255:260::-;4323:6;4331;4384:2;4372:9;4363:7;4359:23;4355:32;4352:52;;;4400:1;4397;4390:12;4352:52;4423:29;4442:9;4423:29;:::i;:::-;4413:39;;4471:38;4505:2;4494:9;4490:18;4471:38;:::i;4520:127::-;4581:10;4576:3;4572:20;4569:1;4562:31;4612:4;4609:1;4602:15;4636:4;4633:1;4626:15;4652:275;4723:2;4717:9;4788:2;4769:13;;-1:-1:-1;;4765:27:1;4753:40;;4823:18;4808:34;;4844:22;;;4805:62;4802:88;;;4870:18;;:::i;:::-;4906:2;4899:22;4652:275;;-1:-1:-1;4652:275:1:o;4932:183::-;4992:4;5025:18;5017:6;5014:30;5011:56;;;5047:18;;:::i;:::-;-1:-1:-1;5092:1:1;5088:14;5104:4;5084:25;;4932:183::o;5120:662::-;5174:5;5227:3;5220:4;5212:6;5208:17;5204:27;5194:55;;5245:1;5242;5235:12;5194:55;5281:6;5268:20;5307:4;5331:60;5347:43;5387:2;5347:43;:::i;:::-;5331:60;:::i;:::-;5425:15;;;5511:1;5507:10;;;;5495:23;;5491:32;;;5456:12;;;;5535:15;;;5532:35;;;5563:1;5560;5553:12;5532:35;5599:2;5591:6;5587:15;5611:142;5627:6;5622:3;5619:15;5611:142;;;5693:17;;5681:30;;5731:12;;;;5644;;5611:142;;;-1:-1:-1;5771:5:1;5120:662;-1:-1:-1;;;;;;5120:662:1:o;5787:1146::-;5905:6;5913;5966:2;5954:9;5945:7;5941:23;5937:32;5934:52;;;5982:1;5979;5972:12;5934:52;6022:9;6009:23;6051:18;6092:2;6084:6;6081:14;6078:34;;;6108:1;6105;6098:12;6078:34;6146:6;6135:9;6131:22;6121:32;;6191:7;6184:4;6180:2;6176:13;6172:27;6162:55;;6213:1;6210;6203:12;6162:55;6249:2;6236:16;6271:4;6295:60;6311:43;6351:2;6311:43;:::i;6295:60::-;6389:15;;;6471:1;6467:10;;;;6459:19;;6455:28;;;6420:12;;;;6495:19;;;6492:39;;;6527:1;6524;6517:12;6492:39;6551:11;;;;6571:148;6587:6;6582:3;6579:15;6571:148;;;6653:23;6672:3;6653:23;:::i;:::-;6641:36;;6604:12;;;;6697;;;;6571:148;;;6738:5;-1:-1:-1;;6781:18:1;;6768:32;;-1:-1:-1;;6812:16:1;;;6809:36;;;6841:1;6838;6831:12;6809:36;;6864:63;6919:7;6908:8;6897:9;6893:24;6864:63;:::i;:::-;6854:73;;;5787:1146;;;;;:::o;7347:356::-;7549:2;7531:21;;;7568:18;;;7561:30;7627:34;7622:2;7607:18;;7600:62;7694:2;7679:18;;7347:356::o;7708:127::-;7769:10;7764:3;7760:20;7757:1;7750:31;7800:4;7797:1;7790:15;7824:4;7821:1;7814:15;7840:168;7913:9;;;7944;;7961:15;;;7955:22;;7941:37;7931:71;;7982:18;;:::i;8013:217::-;8053:1;8079;8069:132;;8123:10;8118:3;8114:20;8111:1;8104:31;8158:4;8155:1;8148:15;8186:4;8183:1;8176:15;8069:132;-1:-1:-1;8215:9:1;;8013:217::o;8641:148::-;8729:4;8708:12;;;8722;;;8704:31;;8747:13;;8744:39;;;8763:18;;:::i;10866:346::-;11068:2;11050:21;;;11107:2;11087:18;;;11080:30;-1:-1:-1;;;11141:2:1;11126:18;;11119:52;11203:2;11188:18;;10866:346::o;11983:184::-;12053:6;12106:2;12094:9;12085:7;12081:23;12077:32;12074:52;;;12122:1;12119;12112:12;12074:52;-1:-1:-1;12145:16:1;;11983:184;-1:-1:-1;11983:184:1:o;13129:306::-;13217:6;13225;13233;13286:2;13274:9;13265:7;13261:23;13257:32;13254:52;;;13302:1;13299;13292:12;13254:52;13331:9;13325:16;13315:26;;13381:2;13370:9;13366:18;13360:25;13350:35;;13425:2;13414:9;13410:18;13404:25;13394:35;;13129:306;;;;;:::o;14340:127::-;14401:10;14396:3;14392:20;14389:1;14382:31;14432:4;14429:1;14422:15;14456:4;14453:1;14446:15;14472:402;14674:2;14656:21;;;14713:2;14693:18;;;14686:30;14752:34;14747:2;14732:18;;14725:62;-1:-1:-1;;;14818:2:1;14803:18;;14796:36;14864:3;14849:19;;14472:402::o;14879:125::-;14944:9;;;14965:10;;;14962:36;;;14978:18;;:::i;15009:128::-;15076:9;;;15097:11;;;15094:37;;;15111:18;;:::i;15142:135::-;15181:3;15202:17;;;15199:43;;15222:18;;:::i;:::-;-1:-1:-1;15269:1:1;15258:13;;15142:135::o;19903:287::-;20032:3;20070:6;20064:13;20086:66;20145:6;20140:3;20133:4;20125:6;20121:17;20086:66;:::i;:::-;20168:16;;;;;19903:287;-1:-1:-1;;19903:287:1:o;20195:245::-;20262:6;20315:2;20303:9;20294:7;20290:23;20286:32;20283:52;;;20331:1;20328;20321:12;20283:52;20363:9;20357:16;20382:28;20404:5;20382:28;:::i;20854:980::-;21116:4;21164:3;21153:9;21149:19;21195:6;21184:9;21177:25;21221:2;21259:6;21254:2;21243:9;21239:18;21232:34;21302:3;21297:2;21286:9;21282:18;21275:31;21326:6;21361;21355:13;21392:6;21384;21377:22;21430:3;21419:9;21415:19;21408:26;;21469:2;21461:6;21457:15;21443:29;;21490:1;21500:195;21514:6;21511:1;21508:13;21500:195;;;21579:13;;-1:-1:-1;;;;;21575:39:1;21563:52;;21670:15;;;;21635:12;;;;21611:1;21529:9;21500:195;;;-1:-1:-1;;;;;;;21751:32:1;;;;21746:2;21731:18;;21724:60;-1:-1:-1;;;21815:3:1;21800:19;21793:35;21712:3;20854:980;-1:-1:-1;;;20854:980:1:o

Swarm Source

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