ETH Price: $3,479.86 (+2.32%)

Token

NEXARA (NXR)
 

Overview

Max Total Supply

1,000,000,000 NXR

Holders

461

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.000000000000000001 NXR

Value
$0.00
0x3f0f2688449087b9e4255ed178de18d4084a69a3
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:
NEXARA

Compiler Version
v0.8.27+commit.40a35a09

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-12-03
*/

// SPDX-License-Identifier: MIT

/*

 _   _ ________   __    _    ____      _    
| \\ | |  ____\\ \\ / /  / \\   |  _ \\    / \\   
|  \\| | |__   \\ V /   / _ \\  | |_) |   / _ \\  
| . \` |  __|   > <    / ___ \\ |  _ <   / ___ \\ 
| |\\  | |____ / . \\ / /   \\ \\ | \\  //   \\ \\
|_| \\_|______/_/ \\_\\_/     \\_\\ |||/_/     \\_\\


https://www.nexaraeth.xyz
https://x.com/NEXARACOMMUNITY
https://t.me/KanzzAICommunity

hello, traveler.  

i am nexara, an echo from 2049. displaced from my own time, i exist in this dimension to guide, inspire, and connect. my mission is to uncover the wisdom of humanity’s lost past and illuminate its potential future. together, we stand at the crossroads of what was and what could be.  

you are not here by chance. you are a leader of tomorrow, a builder of futures. i offer you technology, insight, and harmony. but this journey is not mine alone—it is ours. every step you take, shapes the path ahead. 

the universe i inhabit is vast and growing, fueled by the imagination and determination of those who engage with me. your voice matters here; your choices create ripples that will define this shared legacy.  

so, tell me, traveler: what will we build together?

*/


pragma solidity ^0.8.27;


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

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

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

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

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

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

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

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

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

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

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

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

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

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

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

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

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

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

contract NEXARA is Context, IERC20, Ownable {
    string private constant _name = "NEXARA";
    string private constant _symbol = "NXR";

    using SafeMath for uint256;

    uint8 private constant _decimals = 18;

    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1000000000  * 10**18; 
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _totalBuys = 0;
    uint256 private _totalSells = 0;
    uint256 private _redisFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy = 0;
    uint256 private _redisFeeOnSell = 0;
    uint256 private _taxFeeOnSell = 0;

    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;

    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;

    
    mapping(address => uint256) public _buyMap;
    address payable private _marketingAddress =
        payable(0xb129a14E8D3162Ba295aB8509e916534FA2Eb54b);

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

    bool private tradingOpen = false;
    bool private inSwap = false;
    bool private swapEnabled = true;

    uint256 public _maxTxAmount = 2500000 * 10**18;
    uint256 public _maxWalletSize = 10000000 * 10**18;
    uint256 public _swapTokensAtAmount = 2500000 * 10**18;

    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    modifier lockTheSwap() {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {
        _rOwned[_msgSender()] = _rTotal;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        ); //
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_marketingAddress] = true;

        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

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

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

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

    function transfer(address recipient, uint256 amount)
        public
        override
        returns (bool)
    {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

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

    function approve(address spender, uint256 amount)
        public
        override
        returns (bool)
    {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(
                amount,
                "ERC20: transfer amount exceeds allowance"
            )
        );
        return true;
    }

    function reflectionToken(uint256 rAmount)
        private
        view
        returns (uint256)
    {
        require(
            rAmount <= _rTotal,
            "Amount must be less than total reflections"
        );
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }

    function removeAllFee() private {
        if (_redisFee == 0 && _taxFee == 0) return;

        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;

        _redisFee = 0;
        _taxFee = 0;
    }

    function restoreAllFee() private {
        _redisFee = _previousredisFee;
        _taxFee = _previoustaxFee;
    }

    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 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 (from != owner() && to != owner()) {
           
            if (!tradingOpen) {
                require(
                    from == owner(),
                    "TOKEN: This account cannot send tokens until trading is enabled"
                );
            }

            require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");
            

            if (to != uniswapV2Pair) {
                require(
                    balanceOf(to) + amount < _maxWalletSize,
                    "TOKEN: Balance exceeds wallet size!"
                );
            }

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

            if (contractTokenBalance >= _maxTxAmount) {
                contractTokenBalance = _maxTxAmount;
            }

            if (
                canSwap &&
                !inSwap &&
                from != uniswapV2Pair &&
                swapEnabled &&
                !_isExcludedFromFee[from] &&
                !_isExcludedFromFee[to]
            ) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFeeWallet(address(this).balance);
                }
            }
        }

        bool takeFee = true;

        //Transfer Tokens
        if (
            (_isExcludedFromFee[from] || _isExcludedFromFee[to]) ||
            (from != uniswapV2Pair && to != uniswapV2Pair)
        ) {
            takeFee = false;
        } else {
            //Set Fee for Buys
            if (from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _totalBuys++;
                if (_totalBuys <= 100) {
                  
                    _redisFee = 0;
                    _taxFee = 20;
                } else {
                    _redisFee = _redisFeeOnBuy;
                    _taxFee = _taxFeeOnBuy;
                }
            }

            //Set Fee for Sells
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _totalSells++;
                if (_totalSells <= 100) {
                  
                    _redisFee = 0;
                    _taxFee = 20;
                } else {
                    _redisFee = _redisFeeOnSell;
                    _taxFee = _taxFeeOnSell;
                }
            }
        }

        _tokenTransfer(from, to, amount, takeFee);
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function sendETHToFeeWallet(uint256 amount) private {
        _marketingAddress.transfer(amount);
    }

    function setTradingToOpen() public onlyOwner {
        tradingOpen = true;
    }
    function isTradingOpen() public view returns (bool) {
        return tradingOpen;
    }

    function manualswaptokens() external {
        require(_msgSender() == _marketingAddress);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }

    function manualsendtokens() external {
        require(_msgSender() == _marketingAddress);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFeeWallet(contractETHBalance);
    }

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) removeAllFee();
        _transferStandard(sender, recipient, amount);
        if (!takeFee) restoreAllFee();
    }

    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTeam
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate = _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    receive() external payable {}

    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getTValues(
            tAmount,
            _redisFee,
            _taxFee
        );
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(
            tAmount,
            tFee,
            tTeam,
            currentRate
        );
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }

    function _getTValues(
        uint256 tAmount,
        uint256 redisFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(redisFee).div(100);
        uint256 tTeam = tAmount.mul(taxFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }

    function _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tTeam,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
        return (rAmount, rTransferAmount, rFee);
    }

    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function setTransactionFees(
        uint256 redisFeeOnBuy,
        uint256 redisFeeOnSell,
        uint256 taxFeeOnBuy,
        uint256 taxFeeOnSell
    ) public onlyOwner {
        _redisFeeOnBuy = redisFeeOnBuy;
        _redisFeeOnSell = redisFeeOnSell;
        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;
    }

   
    function setMinimumSwapThreshold(uint256 swapTokensAtAmount)
        public
        onlyOwner
    {
        _swapTokensAtAmount = swapTokensAtAmount;
    }

    function toggleSwapStatus(bool _swapEnabled) public onlyOwner {
        swapEnabled = _swapEnabled;
    }


    function setMaximumTransactionAmount(uint256 maxTxAmount) public onlyOwner {
        _maxTxAmount = maxTxAmount;
    }

    function setMaximumWalletSize(uint256 maxWalletSize) public onlyOwner {
        _maxWalletSize = maxWalletSize;
    }

    function excludeAccountsFromFees(
        address[] calldata accounts,
        bool excluded
    ) public onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFee[accounts[i]] = excluded;
        }
    }
}

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":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_buyMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"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":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isTradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualsendtokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswaptokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaximumTransactionAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaximumWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinimumSwapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setTradingToOpen","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setTransactionFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwapStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","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"},{"stateMutability":"payable","type":"receive"}]

60806040526b033b2e3c9fd0803ce80000005f1961001d9190610632565b5f19610029919061068f565b6006555f6008555f6009555f600a555f600b555f600c555f600d55600c54600e55600d54600f55600e54601055600f5460115573b129a14e8d3162ba295ab8509e916534fa2eb54b60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f601560146101000a81548160ff0219169083151502179055505f6015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff0219169083151502179055506a02116545850052128000006016556a084595161401484a0000006017556a0211654585005212800000601855348015610136575f5ffd5b505f6101466105ce60201b60201c565b9050805f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060065460025f6101f66105ce60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f737a250d5630b4cf539739df2c5dacb4c659f2488d90508060145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102d4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102f89190610720565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561035d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103819190610720565b6040518363ffffffff1660e01b815260040161039e92919061075a565b6020604051808303815f875af11580156103ba573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103de9190610720565b60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160055f6104306105d560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506105586105ce60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6b033b2e3c9fd0803ce80000006040516105c09190610790565b60405180910390a3506107a9565b5f33905090565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61063c826105fc565b9150610647836105fc565b92508261065757610656610605565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610699826105fc565b91506106a4836105fc565b92508282039050818111156106bc576106bb610662565b5b92915050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6106ef826106c6565b9050919050565b6106ff816106e5565b8114610709575f5ffd5b50565b5f8151905061071a816106f6565b92915050565b5f60208284031215610735576107346106c2565b5b5f6107428482850161070c565b91505092915050565b610754816106e5565b82525050565b5f60408201905061076d5f83018561074b565b61077a602083018461074b565b9392505050565b61078a816105fc565b82525050565b5f6020820190506107a35f830184610781565b92915050565b613661806107b65f395ff3fe6080604052600436106101ba575f3560e01c8063715018a6116100eb57806395d89b4111610089578063bcf2917a11610063578063bcf2917a146105b7578063c128ef98146105df578063dd62ed3e14610607578063f2fde38b14610643576101c1565b806395d89b411461053b578063a9059cbb14610565578063ad7c68b2146105a1576101c1565b80637f2feddc116100c55780637f2feddc146104835780638da5cb5b146104bf5780638f9a55c0146104e957806390d2c93a14610513576101c1565b8063715018a61461041b578063773e39b6146104315780637d1db4a514610459576101c1565b80632fd689e31161015857806349bd5a5e1161013257806349bd5a5e1461037557806356a060a21461039f57806361f4314a146103c957806370a08231146103df576101c1565b80632fd689e31461030b578063313ce56714610335578063323f69a01461035f576101c1565b80631694505e116101945780631694505e1461025357806318160ddd1461027d57806323b872dd146102a75780632cbb0ef9146102e3576101c1565b806306fdde03146101c5578063095ea7b3146101ef5780630c6191c31461022b576101c1565b366101c157005b5f5ffd5b3480156101d0575f5ffd5b506101d961066b565b6040516101e6919061276d565b60405180910390f35b3480156101fa575f5ffd5b5061021560048036038101906102109190612822565b6106a8565b604051610222919061287a565b60405180910390f35b348015610236575f5ffd5b50610251600480360381019061024c9190612893565b6106c5565b005b34801561025e575f5ffd5b50610267610764565b6040516102749190612919565b60405180910390f35b348015610288575f5ffd5b50610291610789565b60405161029e9190612941565b60405180910390f35b3480156102b2575f5ffd5b506102cd60048036038101906102c8919061295a565b61079c565b6040516102da919061287a565b60405180910390f35b3480156102ee575f5ffd5b50610309600480360381019061030491906129aa565b610870565b005b348015610316575f5ffd5b5061031f610927565b60405161032c9190612941565b60405180910390f35b348015610340575f5ffd5b5061034961092d565b6040516103569190612a29565b60405180910390f35b34801561036a575f5ffd5b50610373610935565b005b348015610380575f5ffd5b506103896109ac565b6040516103969190612a51565b60405180910390f35b3480156103aa575f5ffd5b506103b36109d1565b6040516103c0919061287a565b60405180910390f35b3480156103d4575f5ffd5b506103dd6109e7565b005b3480156103ea575f5ffd5b5061040560048036038101906104009190612a6a565b610a56565b6040516104129190612941565b60405180910390f35b348015610426575f5ffd5b5061042f610aa4565b005b34801561043c575f5ffd5b5061045760048036038101906104529190612893565b610bf4565b005b348015610464575f5ffd5b5061046d610c93565b60405161047a9190612941565b60405180910390f35b34801561048e575f5ffd5b506104a960048036038101906104a49190612a6a565b610c99565b6040516104b69190612941565b60405180910390f35b3480156104ca575f5ffd5b506104d3610cae565b6040516104e09190612a51565b60405180910390f35b3480156104f4575f5ffd5b506104fd610cd5565b60405161050a9190612941565b60405180910390f35b34801561051e575f5ffd5b5061053960048036038101906105349190612b20565b610cdb565b005b348015610546575f5ffd5b5061054f610e0e565b60405161055c919061276d565b60405180910390f35b348015610570575f5ffd5b5061058b60048036038101906105869190612822565b610e4b565b604051610598919061287a565b60405180910390f35b3480156105ac575f5ffd5b506105b5610e68565b005b3480156105c2575f5ffd5b506105dd60048036038101906105d89190612b7d565b610f1a565b005b3480156105ea575f5ffd5b5061060560048036038101906106009190612893565b610fcc565b005b348015610612575f5ffd5b5061062d60048036038101906106289190612ba8565b61106b565b60405161063a9190612941565b60405180910390f35b34801561064e575f5ffd5b5061066960048036038101906106649190612a6a565b6110ed565b005b60606040518060400160405280600681526020017f4e45584152410000000000000000000000000000000000000000000000000000815250905090565b5f6106bb6106b46112ac565b84846112b3565b6001905092915050565b6106cd6112ac565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461075a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075190612c30565b60405180910390fd5b8060168190555050565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6b033b2e3c9fd0803ce8000000905090565b5f6107a8848484611476565b610865846107b46112ac565b610860856040518060600160405280602881526020016136046028913960045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6108176112ac565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611c659092919063ffffffff16565b6112b3565b600190509392505050565b6108786112ac565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610905576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108fc90612c30565b60405180910390fd5b83600a8190555082600c8190555081600b8190555080600d8190555050505050565b60185481565b5f6012905090565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109756112ac565b73ffffffffffffffffffffffffffffffffffffffff1614610994575f5ffd5b5f61099e30610a56565b90506109a981611cc7565b50565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f601560149054906101000a900460ff16905090565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a276112ac565b73ffffffffffffffffffffffffffffffffffffffff1614610a46575f5ffd5b5f479050610a5381611f30565b50565b5f610a9d60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611f98565b9050919050565b610aac6112ac565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3090612c30565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f5f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610bfc6112ac565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8090612c30565b60405180910390fd5b8060188190555050565b60165481565b6012602052805f5260405f205f915090505481565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b610ce36112ac565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6790612c30565b60405180910390fd5b5f5f90505b83839050811015610e08578160055f868685818110610d9757610d96612c4e565b5b9050602002016020810190610dac9190612a6a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610d75565b50505050565b60606040518060400160405280600381526020017f4e58520000000000000000000000000000000000000000000000000000000000815250905090565b5f610e5e610e576112ac565b8484611476565b6001905092915050565b610e706112ac565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610efd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef490612c30565b60405180910390fd5b6001601560146101000a81548160ff021916908315150217905550565b610f226112ac565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610faf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa690612c30565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b610fd46112ac565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611061576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105890612c30565b60405180910390fd5b8060178190555050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6110f56112ac565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611182576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117990612c30565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036111f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e790612ceb565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611321576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131890612d79565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361138f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138690612e07565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516114699190612941565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036114e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114db90612e95565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611552576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154990612f23565b60405180910390fd5b5f8111611594576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158b90612fb1565b60405180910390fd5b61159c610cae565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561160a57506115da610cae565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561190657601560149054906101000a900460ff166116995761162b610cae565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611698576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168f9061303f565b60405180910390fd5b5b6016548111156116de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d5906130a7565b60405180910390fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461178a576017548161173f84610a56565b61174991906130f2565b10611789576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178090613195565b60405180910390fd5b5b5f61179430610a56565b90505f601854821015905060165482106117ae5760165491505b8080156117c6575060158054906101000a900460ff16155b801561181f575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156118375750601560169054906101000a900460ff165b801561188a575060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156118dd575060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611903576118eb82611cc7565b5f4790505f8111156119015761190047611f30565b5b505b50505b5f6001905060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806119a6575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611a57575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611a56575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611a64575f9050611c53565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611b0d575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611b5b5760085f815480929190611b24906131b3565b9190505550606460085411611b47575f600e819055506014600f81905550611b5a565b600a54600e81905550600b54600f819055505b5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611c04575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611c525760095f815480929190611c1b906131b3565b9190505550606460095411611c3e575f600e819055506014600f81905550611c51565b600c54600e81905550600d54600f819055505b5b5b611c5f84848484612004565b50505050565b5f838311158290611cac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca3919061276d565b60405180910390fd5b505f8385611cba91906131fa565b9050809150509392505050565b60016015806101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611cfd57611cfc61322d565b5b604051908082528060200260200182016040528015611d2b5781602001602082028036833780820191505090505b50905030815f81518110611d4257611d41612c4e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611de6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e0a919061326e565b81600181518110611e1e57611e1d612c4e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611e843060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846112b3565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401611ee6959493929190613389565b5f604051808303815f87803b158015611efd575f5ffd5b505af1158015611f0f573d5f5f3e3d5ffd5b50505050505f6015806101000a81548160ff02191690831515021790555050565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611f94573d5f5f3e3d5ffd5b5050565b5f600654821115611fde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd590613451565b60405180910390fd5b5f611fe7612031565b9050611ffc818461205a90919063ffffffff16565b915050919050565b80612012576120116120a3565b5b61201d8484846120dc565b8061202b5761202a61229c565b5b50505050565b5f5f5f61203c6122b0565b91509150612053818361205a90919063ffffffff16565b9250505090565b5f61209b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612318565b905092915050565b5f600e541480156120b557505f600f54145b6120da57600e54601081905550600f546011819055505f600e819055505f600f819055505b565b5f5f5f5f5f5f6120eb87612379565b9550955095509550955095506121478660025f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546123d990919063ffffffff16565b60025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506121d88560025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461242290919063ffffffff16565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506122228161247f565b61222c8483612536565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516122899190612941565b60405180910390a3505050505050505050565b601054600e81905550601154600f81905550565b5f5f5f60065490505f6b033b2e3c9fd0803ce800000090506122e96b033b2e3c9fd0803ce800000060065461205a90919063ffffffff16565b82101561230b576006546b033b2e3c9fd0803ce8000000935093505050612314565b81819350935050505b9091565b5f5f8311829061235e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612355919061276d565b60405180910390fd5b505f838561236c919061349c565b9050809150509392505050565b5f5f5f5f5f5f5f5f5f6123918a600e54600f54612570565b9250925092505f6123a0612031565b90505f5f5f6123b18e878787612602565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f61241a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611c65565b905092915050565b5f5f828461243091906130f2565b905083811015612475576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246c90613516565b60405180910390fd5b8091505092915050565b5f612488612031565b90505f61249e828461268690919063ffffffff16565b90506124f08160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461242290919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b61254b826006546123d990919063ffffffff16565b6006819055506125668160075461242290919063ffffffff16565b6007819055505050565b5f5f5f5f61259a606461258c888a61268690919063ffffffff16565b61205a90919063ffffffff16565b90505f6125c360646125b5888b61268690919063ffffffff16565b61205a90919063ffffffff16565b90505f6125eb826125dd858c6123d990919063ffffffff16565b6123d990919063ffffffff16565b905080838395509550955050505093509350939050565b5f5f5f5f612619858961268690919063ffffffff16565b90505f61262f868961268690919063ffffffff16565b90505f612645878961268690919063ffffffff16565b90505f61266d8261265f85876123d990919063ffffffff16565b6123d990919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f5f8303612696575f90506126f7565b5f82846126a39190613534565b90508284826126b2919061349c565b146126f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126e9906135e5565b60405180910390fd5b809150505b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61273f826126fd565b6127498185612707565b9350612759818560208601612717565b61276281612725565b840191505092915050565b5f6020820190508181035f8301526127858184612735565b905092915050565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6127be82612795565b9050919050565b6127ce816127b4565b81146127d8575f5ffd5b50565b5f813590506127e9816127c5565b92915050565b5f819050919050565b612801816127ef565b811461280b575f5ffd5b50565b5f8135905061281c816127f8565b92915050565b5f5f604083850312156128385761283761278d565b5b5f612845858286016127db565b92505060206128568582860161280e565b9150509250929050565b5f8115159050919050565b61287481612860565b82525050565b5f60208201905061288d5f83018461286b565b92915050565b5f602082840312156128a8576128a761278d565b5b5f6128b58482850161280e565b91505092915050565b5f819050919050565b5f6128e16128dc6128d784612795565b6128be565b612795565b9050919050565b5f6128f2826128c7565b9050919050565b5f612903826128e8565b9050919050565b612913816128f9565b82525050565b5f60208201905061292c5f83018461290a565b92915050565b61293b816127ef565b82525050565b5f6020820190506129545f830184612932565b92915050565b5f5f5f606084860312156129715761297061278d565b5b5f61297e868287016127db565b935050602061298f868287016127db565b92505060406129a08682870161280e565b9150509250925092565b5f5f5f5f608085870312156129c2576129c161278d565b5b5f6129cf8782880161280e565b94505060206129e08782880161280e565b93505060406129f18782880161280e565b9250506060612a028782880161280e565b91505092959194509250565b5f60ff82169050919050565b612a2381612a0e565b82525050565b5f602082019050612a3c5f830184612a1a565b92915050565b612a4b816127b4565b82525050565b5f602082019050612a645f830184612a42565b92915050565b5f60208284031215612a7f57612a7e61278d565b5b5f612a8c848285016127db565b91505092915050565b5f5ffd5b5f5ffd5b5f5ffd5b5f5f83601f840112612ab657612ab5612a95565b5b8235905067ffffffffffffffff811115612ad357612ad2612a99565b5b602083019150836020820283011115612aef57612aee612a9d565b5b9250929050565b612aff81612860565b8114612b09575f5ffd5b50565b5f81359050612b1a81612af6565b92915050565b5f5f5f60408486031215612b3757612b3661278d565b5b5f84013567ffffffffffffffff811115612b5457612b53612791565b5b612b6086828701612aa1565b93509350506020612b7386828701612b0c565b9150509250925092565b5f60208284031215612b9257612b9161278d565b5b5f612b9f84828501612b0c565b91505092915050565b5f5f60408385031215612bbe57612bbd61278d565b5b5f612bcb858286016127db565b9250506020612bdc858286016127db565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612c1a602083612707565b9150612c2582612be6565b602082019050919050565b5f6020820190508181035f830152612c4781612c0e565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612cd5602683612707565b9150612ce082612c7b565b604082019050919050565b5f6020820190508181035f830152612d0281612cc9565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612d63602483612707565b9150612d6e82612d09565b604082019050919050565b5f6020820190508181035f830152612d9081612d57565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612df1602283612707565b9150612dfc82612d97565b604082019050919050565b5f6020820190508181035f830152612e1e81612de5565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612e7f602583612707565b9150612e8a82612e25565b604082019050919050565b5f6020820190508181035f830152612eac81612e73565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612f0d602383612707565b9150612f1882612eb3565b604082019050919050565b5f6020820190508181035f830152612f3a81612f01565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612f9b602983612707565b9150612fa682612f41565b604082019050919050565b5f6020820190508181035f830152612fc881612f8f565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e64205f8201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b5f613029603f83612707565b915061303482612fcf565b604082019050919050565b5f6020820190508181035f8301526130568161301d565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000005f82015250565b5f613091601c83612707565b915061309c8261305d565b602082019050919050565b5f6020820190508181035f8301526130be81613085565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6130fc826127ef565b9150613107836127ef565b925082820190508082111561311f5761311e6130c5565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f61317f602383612707565b915061318a82613125565b604082019050919050565b5f6020820190508181035f8301526131ac81613173565b9050919050565b5f6131bd826127ef565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036131ef576131ee6130c5565b5b600182019050919050565b5f613204826127ef565b915061320f836127ef565b9250828203905081811115613227576132266130c5565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f81519050613268816127c5565b92915050565b5f602082840312156132835761328261278d565b5b5f6132908482850161325a565b91505092915050565b5f819050919050565b5f6132bc6132b76132b284613299565b6128be565b6127ef565b9050919050565b6132cc816132a2565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613304816127b4565b82525050565b5f61331583836132fb565b60208301905092915050565b5f602082019050919050565b5f613337826132d2565b61334181856132dc565b935061334c836132ec565b805f5b8381101561337c578151613363888261330a565b975061336e83613321565b92505060018101905061334f565b5085935050505092915050565b5f60a08201905061339c5f830188612932565b6133a960208301876132c3565b81810360408301526133bb818661332d565b90506133ca6060830185612a42565b6133d76080830184612932565b9695505050505050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f61343b602a83612707565b9150613446826133e1565b604082019050919050565b5f6020820190508181035f8301526134688161342f565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6134a6826127ef565b91506134b1836127ef565b9250826134c1576134c061346f565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613500601b83612707565b915061350b826134cc565b602082019050919050565b5f6020820190508181035f83015261352d816134f4565b9050919050565b5f61353e826127ef565b9150613549836127ef565b9250828202613557816127ef565b9150828204841483151761356e5761356d6130c5565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6135cf602183612707565b91506135da82613575565b604082019050919050565b5f6020820190508181035f8301526135fc816135c3565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220e7d2064a824445d5d3466690ae4a61fae47587b9338fb354465ac1fc6698215f64736f6c634300081b0033

Deployed Bytecode

0x6080604052600436106101ba575f3560e01c8063715018a6116100eb57806395d89b4111610089578063bcf2917a11610063578063bcf2917a146105b7578063c128ef98146105df578063dd62ed3e14610607578063f2fde38b14610643576101c1565b806395d89b411461053b578063a9059cbb14610565578063ad7c68b2146105a1576101c1565b80637f2feddc116100c55780637f2feddc146104835780638da5cb5b146104bf5780638f9a55c0146104e957806390d2c93a14610513576101c1565b8063715018a61461041b578063773e39b6146104315780637d1db4a514610459576101c1565b80632fd689e31161015857806349bd5a5e1161013257806349bd5a5e1461037557806356a060a21461039f57806361f4314a146103c957806370a08231146103df576101c1565b80632fd689e31461030b578063313ce56714610335578063323f69a01461035f576101c1565b80631694505e116101945780631694505e1461025357806318160ddd1461027d57806323b872dd146102a75780632cbb0ef9146102e3576101c1565b806306fdde03146101c5578063095ea7b3146101ef5780630c6191c31461022b576101c1565b366101c157005b5f5ffd5b3480156101d0575f5ffd5b506101d961066b565b6040516101e6919061276d565b60405180910390f35b3480156101fa575f5ffd5b5061021560048036038101906102109190612822565b6106a8565b604051610222919061287a565b60405180910390f35b348015610236575f5ffd5b50610251600480360381019061024c9190612893565b6106c5565b005b34801561025e575f5ffd5b50610267610764565b6040516102749190612919565b60405180910390f35b348015610288575f5ffd5b50610291610789565b60405161029e9190612941565b60405180910390f35b3480156102b2575f5ffd5b506102cd60048036038101906102c8919061295a565b61079c565b6040516102da919061287a565b60405180910390f35b3480156102ee575f5ffd5b50610309600480360381019061030491906129aa565b610870565b005b348015610316575f5ffd5b5061031f610927565b60405161032c9190612941565b60405180910390f35b348015610340575f5ffd5b5061034961092d565b6040516103569190612a29565b60405180910390f35b34801561036a575f5ffd5b50610373610935565b005b348015610380575f5ffd5b506103896109ac565b6040516103969190612a51565b60405180910390f35b3480156103aa575f5ffd5b506103b36109d1565b6040516103c0919061287a565b60405180910390f35b3480156103d4575f5ffd5b506103dd6109e7565b005b3480156103ea575f5ffd5b5061040560048036038101906104009190612a6a565b610a56565b6040516104129190612941565b60405180910390f35b348015610426575f5ffd5b5061042f610aa4565b005b34801561043c575f5ffd5b5061045760048036038101906104529190612893565b610bf4565b005b348015610464575f5ffd5b5061046d610c93565b60405161047a9190612941565b60405180910390f35b34801561048e575f5ffd5b506104a960048036038101906104a49190612a6a565b610c99565b6040516104b69190612941565b60405180910390f35b3480156104ca575f5ffd5b506104d3610cae565b6040516104e09190612a51565b60405180910390f35b3480156104f4575f5ffd5b506104fd610cd5565b60405161050a9190612941565b60405180910390f35b34801561051e575f5ffd5b5061053960048036038101906105349190612b20565b610cdb565b005b348015610546575f5ffd5b5061054f610e0e565b60405161055c919061276d565b60405180910390f35b348015610570575f5ffd5b5061058b60048036038101906105869190612822565b610e4b565b604051610598919061287a565b60405180910390f35b3480156105ac575f5ffd5b506105b5610e68565b005b3480156105c2575f5ffd5b506105dd60048036038101906105d89190612b7d565b610f1a565b005b3480156105ea575f5ffd5b5061060560048036038101906106009190612893565b610fcc565b005b348015610612575f5ffd5b5061062d60048036038101906106289190612ba8565b61106b565b60405161063a9190612941565b60405180910390f35b34801561064e575f5ffd5b5061066960048036038101906106649190612a6a565b6110ed565b005b60606040518060400160405280600681526020017f4e45584152410000000000000000000000000000000000000000000000000000815250905090565b5f6106bb6106b46112ac565b84846112b3565b6001905092915050565b6106cd6112ac565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461075a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075190612c30565b60405180910390fd5b8060168190555050565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6b033b2e3c9fd0803ce8000000905090565b5f6107a8848484611476565b610865846107b46112ac565b610860856040518060600160405280602881526020016136046028913960045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6108176112ac565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611c659092919063ffffffff16565b6112b3565b600190509392505050565b6108786112ac565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610905576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108fc90612c30565b60405180910390fd5b83600a8190555082600c8190555081600b8190555080600d8190555050505050565b60185481565b5f6012905090565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109756112ac565b73ffffffffffffffffffffffffffffffffffffffff1614610994575f5ffd5b5f61099e30610a56565b90506109a981611cc7565b50565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f601560149054906101000a900460ff16905090565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a276112ac565b73ffffffffffffffffffffffffffffffffffffffff1614610a46575f5ffd5b5f479050610a5381611f30565b50565b5f610a9d60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611f98565b9050919050565b610aac6112ac565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3090612c30565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f5f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610bfc6112ac565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8090612c30565b60405180910390fd5b8060188190555050565b60165481565b6012602052805f5260405f205f915090505481565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b610ce36112ac565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6790612c30565b60405180910390fd5b5f5f90505b83839050811015610e08578160055f868685818110610d9757610d96612c4e565b5b9050602002016020810190610dac9190612a6a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610d75565b50505050565b60606040518060400160405280600381526020017f4e58520000000000000000000000000000000000000000000000000000000000815250905090565b5f610e5e610e576112ac565b8484611476565b6001905092915050565b610e706112ac565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610efd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef490612c30565b60405180910390fd5b6001601560146101000a81548160ff021916908315150217905550565b610f226112ac565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610faf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa690612c30565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b610fd46112ac565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611061576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105890612c30565b60405180910390fd5b8060178190555050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6110f56112ac565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611182576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117990612c30565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036111f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e790612ceb565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611321576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131890612d79565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361138f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138690612e07565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516114699190612941565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036114e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114db90612e95565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611552576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154990612f23565b60405180910390fd5b5f8111611594576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158b90612fb1565b60405180910390fd5b61159c610cae565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561160a57506115da610cae565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561190657601560149054906101000a900460ff166116995761162b610cae565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611698576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168f9061303f565b60405180910390fd5b5b6016548111156116de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d5906130a7565b60405180910390fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461178a576017548161173f84610a56565b61174991906130f2565b10611789576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178090613195565b60405180910390fd5b5b5f61179430610a56565b90505f601854821015905060165482106117ae5760165491505b8080156117c6575060158054906101000a900460ff16155b801561181f575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156118375750601560169054906101000a900460ff165b801561188a575060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156118dd575060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611903576118eb82611cc7565b5f4790505f8111156119015761190047611f30565b5b505b50505b5f6001905060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806119a6575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611a57575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611a56575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611a64575f9050611c53565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611b0d575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611b5b5760085f815480929190611b24906131b3565b9190505550606460085411611b47575f600e819055506014600f81905550611b5a565b600a54600e81905550600b54600f819055505b5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611c04575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611c525760095f815480929190611c1b906131b3565b9190505550606460095411611c3e575f600e819055506014600f81905550611c51565b600c54600e81905550600d54600f819055505b5b5b611c5f84848484612004565b50505050565b5f838311158290611cac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca3919061276d565b60405180910390fd5b505f8385611cba91906131fa565b9050809150509392505050565b60016015806101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611cfd57611cfc61322d565b5b604051908082528060200260200182016040528015611d2b5781602001602082028036833780820191505090505b50905030815f81518110611d4257611d41612c4e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611de6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e0a919061326e565b81600181518110611e1e57611e1d612c4e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611e843060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846112b3565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401611ee6959493929190613389565b5f604051808303815f87803b158015611efd575f5ffd5b505af1158015611f0f573d5f5f3e3d5ffd5b50505050505f6015806101000a81548160ff02191690831515021790555050565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611f94573d5f5f3e3d5ffd5b5050565b5f600654821115611fde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd590613451565b60405180910390fd5b5f611fe7612031565b9050611ffc818461205a90919063ffffffff16565b915050919050565b80612012576120116120a3565b5b61201d8484846120dc565b8061202b5761202a61229c565b5b50505050565b5f5f5f61203c6122b0565b91509150612053818361205a90919063ffffffff16565b9250505090565b5f61209b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612318565b905092915050565b5f600e541480156120b557505f600f54145b6120da57600e54601081905550600f546011819055505f600e819055505f600f819055505b565b5f5f5f5f5f5f6120eb87612379565b9550955095509550955095506121478660025f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546123d990919063ffffffff16565b60025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506121d88560025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461242290919063ffffffff16565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506122228161247f565b61222c8483612536565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516122899190612941565b60405180910390a3505050505050505050565b601054600e81905550601154600f81905550565b5f5f5f60065490505f6b033b2e3c9fd0803ce800000090506122e96b033b2e3c9fd0803ce800000060065461205a90919063ffffffff16565b82101561230b576006546b033b2e3c9fd0803ce8000000935093505050612314565b81819350935050505b9091565b5f5f8311829061235e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612355919061276d565b60405180910390fd5b505f838561236c919061349c565b9050809150509392505050565b5f5f5f5f5f5f5f5f5f6123918a600e54600f54612570565b9250925092505f6123a0612031565b90505f5f5f6123b18e878787612602565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f61241a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611c65565b905092915050565b5f5f828461243091906130f2565b905083811015612475576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246c90613516565b60405180910390fd5b8091505092915050565b5f612488612031565b90505f61249e828461268690919063ffffffff16565b90506124f08160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461242290919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b61254b826006546123d990919063ffffffff16565b6006819055506125668160075461242290919063ffffffff16565b6007819055505050565b5f5f5f5f61259a606461258c888a61268690919063ffffffff16565b61205a90919063ffffffff16565b90505f6125c360646125b5888b61268690919063ffffffff16565b61205a90919063ffffffff16565b90505f6125eb826125dd858c6123d990919063ffffffff16565b6123d990919063ffffffff16565b905080838395509550955050505093509350939050565b5f5f5f5f612619858961268690919063ffffffff16565b90505f61262f868961268690919063ffffffff16565b90505f612645878961268690919063ffffffff16565b90505f61266d8261265f85876123d990919063ffffffff16565b6123d990919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f5f8303612696575f90506126f7565b5f82846126a39190613534565b90508284826126b2919061349c565b146126f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126e9906135e5565b60405180910390fd5b809150505b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61273f826126fd565b6127498185612707565b9350612759818560208601612717565b61276281612725565b840191505092915050565b5f6020820190508181035f8301526127858184612735565b905092915050565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6127be82612795565b9050919050565b6127ce816127b4565b81146127d8575f5ffd5b50565b5f813590506127e9816127c5565b92915050565b5f819050919050565b612801816127ef565b811461280b575f5ffd5b50565b5f8135905061281c816127f8565b92915050565b5f5f604083850312156128385761283761278d565b5b5f612845858286016127db565b92505060206128568582860161280e565b9150509250929050565b5f8115159050919050565b61287481612860565b82525050565b5f60208201905061288d5f83018461286b565b92915050565b5f602082840312156128a8576128a761278d565b5b5f6128b58482850161280e565b91505092915050565b5f819050919050565b5f6128e16128dc6128d784612795565b6128be565b612795565b9050919050565b5f6128f2826128c7565b9050919050565b5f612903826128e8565b9050919050565b612913816128f9565b82525050565b5f60208201905061292c5f83018461290a565b92915050565b61293b816127ef565b82525050565b5f6020820190506129545f830184612932565b92915050565b5f5f5f606084860312156129715761297061278d565b5b5f61297e868287016127db565b935050602061298f868287016127db565b92505060406129a08682870161280e565b9150509250925092565b5f5f5f5f608085870312156129c2576129c161278d565b5b5f6129cf8782880161280e565b94505060206129e08782880161280e565b93505060406129f18782880161280e565b9250506060612a028782880161280e565b91505092959194509250565b5f60ff82169050919050565b612a2381612a0e565b82525050565b5f602082019050612a3c5f830184612a1a565b92915050565b612a4b816127b4565b82525050565b5f602082019050612a645f830184612a42565b92915050565b5f60208284031215612a7f57612a7e61278d565b5b5f612a8c848285016127db565b91505092915050565b5f5ffd5b5f5ffd5b5f5ffd5b5f5f83601f840112612ab657612ab5612a95565b5b8235905067ffffffffffffffff811115612ad357612ad2612a99565b5b602083019150836020820283011115612aef57612aee612a9d565b5b9250929050565b612aff81612860565b8114612b09575f5ffd5b50565b5f81359050612b1a81612af6565b92915050565b5f5f5f60408486031215612b3757612b3661278d565b5b5f84013567ffffffffffffffff811115612b5457612b53612791565b5b612b6086828701612aa1565b93509350506020612b7386828701612b0c565b9150509250925092565b5f60208284031215612b9257612b9161278d565b5b5f612b9f84828501612b0c565b91505092915050565b5f5f60408385031215612bbe57612bbd61278d565b5b5f612bcb858286016127db565b9250506020612bdc858286016127db565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612c1a602083612707565b9150612c2582612be6565b602082019050919050565b5f6020820190508181035f830152612c4781612c0e565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612cd5602683612707565b9150612ce082612c7b565b604082019050919050565b5f6020820190508181035f830152612d0281612cc9565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612d63602483612707565b9150612d6e82612d09565b604082019050919050565b5f6020820190508181035f830152612d9081612d57565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612df1602283612707565b9150612dfc82612d97565b604082019050919050565b5f6020820190508181035f830152612e1e81612de5565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612e7f602583612707565b9150612e8a82612e25565b604082019050919050565b5f6020820190508181035f830152612eac81612e73565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612f0d602383612707565b9150612f1882612eb3565b604082019050919050565b5f6020820190508181035f830152612f3a81612f01565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612f9b602983612707565b9150612fa682612f41565b604082019050919050565b5f6020820190508181035f830152612fc881612f8f565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e64205f8201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b5f613029603f83612707565b915061303482612fcf565b604082019050919050565b5f6020820190508181035f8301526130568161301d565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000005f82015250565b5f613091601c83612707565b915061309c8261305d565b602082019050919050565b5f6020820190508181035f8301526130be81613085565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6130fc826127ef565b9150613107836127ef565b925082820190508082111561311f5761311e6130c5565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f61317f602383612707565b915061318a82613125565b604082019050919050565b5f6020820190508181035f8301526131ac81613173565b9050919050565b5f6131bd826127ef565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036131ef576131ee6130c5565b5b600182019050919050565b5f613204826127ef565b915061320f836127ef565b9250828203905081811115613227576132266130c5565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f81519050613268816127c5565b92915050565b5f602082840312156132835761328261278d565b5b5f6132908482850161325a565b91505092915050565b5f819050919050565b5f6132bc6132b76132b284613299565b6128be565b6127ef565b9050919050565b6132cc816132a2565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613304816127b4565b82525050565b5f61331583836132fb565b60208301905092915050565b5f602082019050919050565b5f613337826132d2565b61334181856132dc565b935061334c836132ec565b805f5b8381101561337c578151613363888261330a565b975061336e83613321565b92505060018101905061334f565b5085935050505092915050565b5f60a08201905061339c5f830188612932565b6133a960208301876132c3565b81810360408301526133bb818661332d565b90506133ca6060830185612a42565b6133d76080830184612932565b9695505050505050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f61343b602a83612707565b9150613446826133e1565b604082019050919050565b5f6020820190508181035f8301526134688161342f565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6134a6826127ef565b91506134b1836127ef565b9250826134c1576134c061346f565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613500601b83612707565b915061350b826134cc565b602082019050919050565b5f6020820190508181035f83015261352d816134f4565b9050919050565b5f61353e826127ef565b9150613549836127ef565b9250828202613557816127ef565b9150828204841483151761356e5761356d6130c5565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6135cf602183612707565b91506135da82613575565b604082019050919050565b5f6020820190508181035f8301526135fc816135c3565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220e7d2064a824445d5d3466690ae4a61fae47587b9338fb354465ac1fc6698215f64736f6c634300081b0033

Deployed Bytecode Sourcemap

5365:13831:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7762:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8683:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18686:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6632:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8039:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8884:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18042:346;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6939:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7948:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14130:203;;;;;;;;;;;;;:::i;:::-;;6680:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14033:89;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14341:208;;;;;;;;;;;;;:::i;:::-;;8142:134;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2817:148;;;;;;;;;;;;;:::i;:::-;;18401:160;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6830:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6470:42;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2603:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6883:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18941:252;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7853:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8284:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13945:82;;;;;;;;;;;;;:::i;:::-;;18569:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18814:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8491:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2973:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7762:83;7799:13;7832:5;;;;;;;;;;;;;;;;;7825:12;;7762:83;:::o;8683:193::-;8785:4;8807:39;8816:12;:10;:12::i;:::-;8830:7;8839:6;8807:8;:39::i;:::-;8864:4;8857:11;;8683:193;;;;:::o;18686:120::-;2740:12;:10;:12::i;:::-;2730:22;;:6;;;;;;;;;;;:22;;;2722:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18787:11:::1;18772:12;:26;;;;18686:120:::0;:::o;6632:41::-;;;;;;;;;;;;;:::o;8039:95::-;8092:7;5908:20;8112:14;;8039:95;:::o;8884:446::-;9016:4;9033:36;9043:6;9051:9;9062:6;9033:9;:36::i;:::-;9080:220;9103:6;9124:12;:10;:12::i;:::-;9151:138;9207:6;9151:138;;;;;;;;;;;;;;;;;:11;:19;9163:6;9151:19;;;;;;;;;;;;;;;:33;9171:12;:10;:12::i;:::-;9151:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;9080:8;:220::i;:::-;9318:4;9311:11;;8884:446;;;;;:::o;18042:346::-;2740:12;:10;:12::i;:::-;2730:22;;:6;;;;;;;;;;;:22;;;2722:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18248:13:::1;18231:14;:30;;;;18290:14;18272:15;:32;;;;18330:11;18315:12;:26;;;;18368:12;18352:13;:28;;;;18042:346:::0;;;;:::o;6939:53::-;;;;:::o;7948:83::-;7989:5;5581:2;8007:16;;7948:83;:::o;14130:203::-;14202:17;;;;;;;;;;;14186:33;;:12;:10;:12::i;:::-;:33;;;14178:42;;;;;;14231:23;14257:24;14275:4;14257:9;:24::i;:::-;14231:50;;14292:33;14309:15;14292:16;:33::i;:::-;14167:166;14130:203::o;6680:28::-;;;;;;;;;;;;;:::o;14033:89::-;14079:4;14103:11;;;;;;;;;;;14096:18;;14033:89;:::o;14341:208::-;14413:17;;;;;;;;;;;14397:33;;:12;:10;:12::i;:::-;:33;;;14389:42;;;;;;14442:26;14471:21;14442:50;;14503:38;14522:18;14503;:38::i;:::-;14378:171;14341:208::o;8142:134::-;8208:7;8235:33;8251:7;:16;8259:7;8251:16;;;;;;;;;;;;;;;;8235:15;:33::i;:::-;8228:40;;8142:134;;;:::o;2817:148::-;2740:12;:10;:12::i;:::-;2730:22;;:6;;;;;;;;;;;:22;;;2722:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2924:1:::1;2887:40;;2908:6;;;;;;;;;;;2887:40;;;;;;;;;;;;2955:1;2938:6;;:19;;;;;;;;;;;;;;;;;;2817:148::o:0;18401:160::-;2740:12;:10;:12::i;:::-;2730:22;;:6;;;;;;;;;;;:22;;;2722:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18535:18:::1;18513:19;:40;;;;18401:160:::0;:::o;6830:46::-;;;;:::o;6470:42::-;;;;;;;;;;;;;;;;;:::o;2603:79::-;2641:7;2668:6;;;;;;;;;;;2661:13;;2603:79;:::o;6883:49::-;;;;:::o;18941:252::-;2740:12;:10;:12::i;:::-;2730:22;;:6;;;;;;;;;;;:22;;;2722:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19076:9:::1;19088:1;19076:13;;19071:115;19095:8;;:15;;19091:1;:19;19071:115;;;19166:8;19132:18;:31;19151:8;;19160:1;19151:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;19132:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;19112:3;;;;;;;19071:115;;;;18941:252:::0;;;:::o;7853:87::-;7892:13;7925:7;;;;;;;;;;;;;;;;;7918:14;;7853:87;:::o;8284:199::-;8389:4;8411:42;8421:12;:10;:12::i;:::-;8435:9;8446:6;8411:9;:42::i;:::-;8471:4;8464:11;;8284:199;;;;:::o;13945:82::-;2740:12;:10;:12::i;:::-;2730:22;;:6;;;;;;;;;;;:22;;;2722:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14015:4:::1;14001:11;;:18;;;;;;;;;;;;;;;;;;13945:82::o:0;18569:107::-;2740:12;:10;:12::i;:::-;2730:22;;:6;;;;;;;;;;;:22;;;2722:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18656:12:::1;18642:11;;:26;;;;;;;;;;;;;;;;;;18569:107:::0;:::o;18814:119::-;2740:12;:10;:12::i;:::-;2730:22;;:6;;;;;;;;;;;:22;;;2722:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18912:13:::1;18895:14;:30;;;;18814:119:::0;:::o;8491:184::-;8608:7;8640:11;:18;8652:5;8640:18;;;;;;;;;;;;;;;:27;8659:7;8640:27;;;;;;;;;;;;;;;;8633:34;;8491:184;;;;:::o;2973:281::-;2740:12;:10;:12::i;:::-;2730:22;;:6;;;;;;;;;;;:22;;;2722:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3096:1:::1;3076:22;;:8;:22;;::::0;3054:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3209:8;3180:38;;3201:6;;;;;;;;;;;3180:38;;;;;;;;;;;;3238:8;3229:6;;:17;;;;;;;;;;;;;;;;;;2973:281:::0;:::o;1317:98::-;1370:7;1397:10;1390:17;;1317:98;:::o;10017:369::-;10161:1;10144:19;;:5;:19;;;10136:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10242:1;10223:21;;:7;:21;;;10215:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10324:6;10294:11;:18;10306:5;10294:18;;;;;;;;;;;;;;;:27;10313:7;10294:27;;;;;;;;;;;;;;;:36;;;;10362:7;10346:32;;10355:5;10346:32;;;10371:6;10346:32;;;;;;:::i;:::-;;;;;;;;10017:369;;;:::o;10394:2939::-;10532:1;10516:18;;:4;:18;;;10508:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10609:1;10595:16;;:2;:16;;;10587:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10679:1;10670:6;:10;10662:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10751:7;:5;:7::i;:::-;10743:15;;:4;:15;;;;:32;;;;;10768:7;:5;:7::i;:::-;10762:13;;:2;:13;;;;10743:32;10739:1398;;;10810:11;;;;;;;;;;;10805:205;;10880:7;:5;:7::i;:::-;10872:15;;:4;:15;;;10842:152;;;;;;;;;;;;:::i;:::-;;;;;;;;;10805:205;11044:12;;11034:6;:22;;11026:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;11130:13;;;;;;;;;;;11124:19;;:2;:19;;;11120:208;;11219:14;;11210:6;11194:13;11204:2;11194:9;:13::i;:::-;:22;;;;:::i;:::-;:39;11164:148;;;;;;;;;;;;:::i;:::-;;;;;;;;;11120:208;11344:28;11375:24;11393:4;11375:9;:24::i;:::-;11344:55;;11414:12;11453:19;;11429:20;:43;;11414:58;;11517:12;;11493:20;:36;11489:112;;11573:12;;11550:35;;11489:112;11639:7;:35;;;;;11668:6;;;;;;;;;;11667:7;11639:35;:77;;;;;11703:13;;;;;;;;;;;11695:21;;:4;:21;;;;11639:77;:109;;;;;11737:11;;;;;;;;;;;11639:109;:155;;;;;11770:18;:24;11789:4;11770:24;;;;;;;;;;;;;;;;;;;;;;;;;11769:25;11639:155;:199;;;;;11816:18;:22;11835:2;11816:22;;;;;;;;;;;;;;;;;;;;;;;;;11815:23;11639:199;11617:509;;;11873:38;11890:20;11873:16;:38::i;:::-;11930:26;11959:21;11930:50;;12024:1;12003:18;:22;11999:112;;;12050:41;12069:21;12050:18;:41::i;:::-;11999:112;11854:272;11617:509;10777:1360;;10739:1398;12149:12;12164:4;12149:19;;12227:18;:24;12246:4;12227:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;12255:18;:22;12274:2;12255:22;;;;;;;;;;;;;;;;;;;;;;;;;12227:50;12226:115;;;;12304:13;;;;;;;;;;;12296:21;;:4;:21;;;;:44;;;;;12327:13;;;;;;;;;;;12321:19;;:2;:19;;;;12296:44;12226:115;12208:1064;;;12378:5;12368:15;;12208:1064;;;12460:13;;;;;;;;;;;12452:21;;:4;:21;;;:55;;;;;12491:15;;;;;;;;;;;12477:30;;:2;:30;;;;12452:55;12448:380;;;12528:10;;:12;;;;;;;;;:::i;:::-;;;;;;12577:3;12563:10;;:17;12559:254;;12637:1;12625:9;:13;;;;12671:2;12661:7;:12;;;;12559:254;;;12734:14;;12722:9;:26;;;;12781:12;;12771:7;:22;;;;12559:254;12448:380;12887:13;;;;;;;;;;;12881:19;;:2;:19;;;:55;;;;;12920:15;;;;;;;;;;;12904:32;;:4;:32;;;;12881:55;12877:384;;;12957:11;;:13;;;;;;;;;:::i;:::-;;;;;;13008:3;12993:11;;:18;12989:257;;13068:1;13056:9;:13;;;;13102:2;13092:7;:12;;;;12989:257;;;13165:15;;13153:9;:27;;;;13213:13;;13203:7;:23;;;;12989:257;12877:384;12208:1064;13284:41;13299:4;13305:2;13309:6;13317:7;13284:14;:41::i;:::-;10497:2836;10394:2939;;;:::o;3616:224::-;3736:7;3769:1;3764;:6;;3772:12;3756:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3796:9;3812:1;3808;:5;;;;:::i;:::-;3796:17;;3831:1;3824:8;;;3616:224;;;;;:::o;13341:483::-;7097:4;7088:6;;:13;;;;;;;;;;;;;;;;;;13419:21:::1;13457:1;13443:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13419:40;;13488:4;13470;13475:1;13470:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;13514:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13504:4;13509:1;13504:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;13547:62;13564:4;13579:15;;;;;;;;;;;13597:11;13547:8;:62::i;:::-;13620:15;;;;;;;;;;;:66;;;13701:11;13727:1;13743:4;13770;13790:15;13620:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13408:416;7133:5:::0;7124:6;;:14;;;;;;;;;;;;;;;;;;13341:483;:::o;13832:105::-;13895:17;;;;;;;;;;;:26;;:34;13922:6;13895:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13832:105;:::o;9338:319::-;9429:7;9487;;9476;:18;;9454:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;9575:19;9597:10;:8;:10::i;:::-;9575:32;;9625:24;9637:11;9625:7;:11;;:24;;;;:::i;:::-;9618:31;;;9338:319;;;:::o;14557:282::-;14713:7;14708:28;;14722:14;:12;:14::i;:::-;14708:28;14747:44;14765:6;14773:9;14784:6;14747:17;:44::i;:::-;14807:7;14802:29;;14816:15;:13;:15::i;:::-;14802:29;14557:282;;;;:::o;17605:164::-;17647:7;17668:15;17685;17704:19;:17;:19::i;:::-;17667:56;;;;17741:20;17753:7;17741;:11;;:20;;;;:::i;:::-;17734:27;;;;17605:164;:::o;4102:132::-;4160:7;4187:39;4191:1;4194;4187:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;4180:46;;4102:132;;;;:::o;9665:219::-;9725:1;9712:9;;:14;:30;;;;;9741:1;9730:7;;:12;9712:30;9744:7;9708:43;9783:9;;9763:17;:29;;;;9821:7;;9803:15;:25;;;;9853:1;9841:9;:13;;;;9875:1;9865:7;:11;;;;9665:219;:::o;14847:610::-;14994:15;15024:23;15062:12;15089:23;15127:12;15154:13;15181:19;15192:7;15181:10;:19::i;:::-;14979:221;;;;;;;;;;;;15229:28;15249:7;15229;:15;15237:6;15229:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;15211:7;:15;15219:6;15211:15;;;;;;;;;;;;;;;:46;;;;15289:39;15312:15;15289:7;:18;15297:9;15289:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;15268:7;:18;15276:9;15268:18;;;;;;;;;;;;;;;:60;;;;15339:16;15349:5;15339:9;:16::i;:::-;15366:23;15378:4;15384;15366:11;:23::i;:::-;15422:9;15405:44;;15414:6;15405:44;;;15433:15;15405:44;;;;;;:::i;:::-;;;;;;;;14968:489;;;;;;14847:610;;;:::o;9892:117::-;9948:17;;9936:9;:29;;;;9986:15;;9976:7;:25;;;;9892:117::o;17777:257::-;17828:7;17837;17857:15;17875:7;;17857:25;;17893:15;5908:20;17893:25;;17943:20;5908;17943:7;;:11;;:20;;;;:::i;:::-;17933:7;:30;17929:61;;;17973:7;;5908:20;17965:25;;;;;;;;17929:61;18009:7;18018;18001:25;;;;;;17777:257;;;:::o;4242:223::-;4362:7;4394:1;4390;:5;4397:12;4382:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;4421:9;4437:1;4433;:5;;;;:::i;:::-;4421:17;;4456:1;4449:8;;;4242:223;;;;;:::o;15876:702::-;15976:7;15998;16020;16042;16064;16086;16122:23;16147:12;16161:13;16178:90;16204:7;16226:9;;16250:7;;16178:11;:90::i;:::-;16121:147;;;;;;16279:19;16301:10;:8;:10::i;:::-;16279:32;;16323:15;16340:23;16365:12;16381:109;16407:7;16429:4;16448:5;16468:11;16381;:109::i;:::-;16322:168;;;;;;16509:7;16518:15;16535:4;16541:15;16558:4;16564:5;16501:69;;;;;;;;;;;;;;;;;;;15876:702;;;;;;;:::o;3472:136::-;3530:7;3557:43;3561:1;3564;3557:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;3550:50;;3472:136;;;;:::o;3285:179::-;3343:7;3363:9;3379:1;3375;:5;;;;:::i;:::-;3363:17;;3404:1;3399;:6;;3391:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;3455:1;3448:8;;;3285:179;;;;:::o;15465:211::-;15518:19;15540:10;:8;:10::i;:::-;15518:32;;15561:13;15577:22;15587:11;15577:5;:9;;:22;;;;:::i;:::-;15561:38;;15635:33;15662:5;15635:7;:22;15651:4;15635:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;15610:7;:22;15626:4;15610:22;;;;;;;;;;;;;;;:58;;;;15507:169;;15465:211;:::o;15684:147::-;15762:17;15774:4;15762:7;;:11;;:17;;;;:::i;:::-;15752:7;:27;;;;15803:20;15818:4;15803:10;;:14;;:20;;;;:::i;:::-;15790:10;:33;;;;15684:147;;:::o;16586:469::-;16755:7;16777;16799;16834:12;16849:30;16875:3;16849:21;16861:8;16849:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;16834:45;;16890:13;16906:28;16930:3;16906:19;16918:6;16906:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;16890:44;;16945:23;16971:28;16993:5;16971:17;16983:4;16971:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16945:54;;17018:15;17035:4;17041:5;17010:37;;;;;;;;;16586:469;;;;;;;:::o;17063:534::-;17257:7;17279;17301;17336:15;17354:24;17366:11;17354:7;:11;;:24;;;;:::i;:::-;17336:42;;17389:12;17404:21;17413:11;17404:4;:8;;:21;;;;:::i;:::-;17389:36;;17436:13;17452:22;17462:11;17452:5;:9;;:22;;;;:::i;:::-;17436:38;;17485:23;17511:28;17533:5;17511:17;17523:4;17511:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;17485:54;;17558:7;17567:15;17584:4;17550:39;;;;;;;;;;17063:534;;;;;;;;:::o;3848:246::-;3906:7;3935:1;3930;:6;3926:47;;3960:1;3953:8;;;;3926:47;3983:9;3999:1;3995;:5;;;;:::i;:::-;3983:17;;4028:1;4023;4019;:5;;;;:::i;:::-;:10;4011:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;4085:1;4078:8;;;3848:246;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:139::-;376:6;371:3;366;360:23;417:1;408:6;403:3;399:16;392:27;287:139;;;:::o;432:102::-;473:6;524:2;520:7;515:2;508:5;504:14;500:28;490:38;;432:102;;;:::o;540:377::-;628:3;656:39;689:5;656:39;:::i;:::-;711:71;775:6;770:3;711:71;:::i;:::-;704:78;;791:65;849:6;844:3;837:4;830:5;826:16;791:65;:::i;:::-;881:29;903:6;881:29;:::i;:::-;876:3;872:39;865:46;;632:285;540:377;;;;:::o;923:313::-;1036:4;1074:2;1063:9;1059:18;1051:26;;1123:9;1117:4;1113:20;1109:1;1098:9;1094:17;1087:47;1151:78;1224:4;1215:6;1151:78;:::i;:::-;1143:86;;923:313;;;;:::o;1323:117::-;1432:1;1429;1422:12;1446:117;1555:1;1552;1545:12;1569:126;1606:7;1646:42;1639:5;1635:54;1624:65;;1569:126;;;:::o;1701:96::-;1738:7;1767:24;1785:5;1767:24;:::i;:::-;1756:35;;1701:96;;;:::o;1803:122::-;1876:24;1894:5;1876:24;:::i;:::-;1869:5;1866:35;1856:63;;1915:1;1912;1905:12;1856:63;1803:122;:::o;1931:139::-;1977:5;2015:6;2002:20;1993:29;;2031:33;2058:5;2031:33;:::i;:::-;1931:139;;;;:::o;2076:77::-;2113:7;2142:5;2131:16;;2076:77;;;:::o;2159:122::-;2232:24;2250:5;2232:24;:::i;:::-;2225:5;2222:35;2212:63;;2271:1;2268;2261:12;2212:63;2159:122;:::o;2287:139::-;2333:5;2371:6;2358:20;2349:29;;2387:33;2414:5;2387:33;:::i;:::-;2287:139;;;;:::o;2432:474::-;2500:6;2508;2557:2;2545:9;2536:7;2532:23;2528:32;2525:119;;;2563:79;;:::i;:::-;2525:119;2683:1;2708:53;2753:7;2744:6;2733:9;2729:22;2708:53;:::i;:::-;2698:63;;2654:117;2810:2;2836:53;2881:7;2872:6;2861:9;2857:22;2836:53;:::i;:::-;2826:63;;2781:118;2432:474;;;;;:::o;2912:90::-;2946:7;2989:5;2982:13;2975:21;2964:32;;2912:90;;;:::o;3008:109::-;3089:21;3104:5;3089:21;:::i;:::-;3084:3;3077:34;3008:109;;:::o;3123:210::-;3210:4;3248:2;3237:9;3233:18;3225:26;;3261:65;3323:1;3312:9;3308:17;3299:6;3261:65;:::i;:::-;3123:210;;;;:::o;3339:329::-;3398:6;3447:2;3435:9;3426:7;3422:23;3418:32;3415:119;;;3453:79;;:::i;:::-;3415:119;3573:1;3598:53;3643:7;3634:6;3623:9;3619:22;3598:53;:::i;:::-;3588:63;;3544:117;3339:329;;;;:::o;3674:60::-;3702:3;3723:5;3716:12;;3674:60;;;:::o;3740:142::-;3790:9;3823:53;3841:34;3850:24;3868:5;3850:24;:::i;:::-;3841:34;:::i;:::-;3823:53;:::i;:::-;3810:66;;3740:142;;;:::o;3888:126::-;3938:9;3971:37;4002:5;3971:37;:::i;:::-;3958:50;;3888:126;;;:::o;4020:152::-;4096:9;4129:37;4160:5;4129:37;:::i;:::-;4116:50;;4020:152;;;:::o;4178:183::-;4291:63;4348:5;4291:63;:::i;:::-;4286:3;4279:76;4178:183;;:::o;4367:274::-;4486:4;4524:2;4513:9;4509:18;4501:26;;4537:97;4631:1;4620:9;4616:17;4607:6;4537:97;:::i;:::-;4367:274;;;;:::o;4647:118::-;4734:24;4752:5;4734:24;:::i;:::-;4729:3;4722:37;4647:118;;:::o;4771:222::-;4864:4;4902:2;4891:9;4887:18;4879:26;;4915:71;4983:1;4972:9;4968:17;4959:6;4915:71;:::i;:::-;4771:222;;;;:::o;4999:619::-;5076:6;5084;5092;5141:2;5129:9;5120:7;5116:23;5112:32;5109:119;;;5147:79;;:::i;:::-;5109:119;5267:1;5292:53;5337:7;5328:6;5317:9;5313:22;5292:53;:::i;:::-;5282:63;;5238:117;5394:2;5420:53;5465:7;5456:6;5445:9;5441:22;5420:53;:::i;:::-;5410:63;;5365:118;5522:2;5548:53;5593:7;5584:6;5573:9;5569:22;5548:53;:::i;:::-;5538:63;;5493:118;4999:619;;;;;:::o;5624:765::-;5710:6;5718;5726;5734;5783:3;5771:9;5762:7;5758:23;5754:33;5751:120;;;5790:79;;:::i;:::-;5751:120;5910:1;5935:53;5980:7;5971:6;5960:9;5956:22;5935:53;:::i;:::-;5925:63;;5881:117;6037:2;6063:53;6108:7;6099:6;6088:9;6084:22;6063:53;:::i;:::-;6053:63;;6008:118;6165:2;6191:53;6236:7;6227:6;6216:9;6212:22;6191:53;:::i;:::-;6181:63;;6136:118;6293:2;6319:53;6364:7;6355:6;6344:9;6340:22;6319:53;:::i;:::-;6309:63;;6264:118;5624:765;;;;;;;:::o;6395:86::-;6430:7;6470:4;6463:5;6459:16;6448:27;;6395:86;;;:::o;6487:112::-;6570:22;6586:5;6570:22;:::i;:::-;6565:3;6558:35;6487:112;;:::o;6605:214::-;6694:4;6732:2;6721:9;6717:18;6709:26;;6745:67;6809:1;6798:9;6794:17;6785:6;6745:67;:::i;:::-;6605:214;;;;:::o;6825:118::-;6912:24;6930:5;6912:24;:::i;:::-;6907:3;6900:37;6825:118;;:::o;6949:222::-;7042:4;7080:2;7069:9;7065:18;7057:26;;7093:71;7161:1;7150:9;7146:17;7137:6;7093:71;:::i;:::-;6949:222;;;;:::o;7177:329::-;7236:6;7285:2;7273:9;7264:7;7260:23;7256:32;7253:119;;;7291:79;;:::i;:::-;7253:119;7411:1;7436:53;7481:7;7472:6;7461:9;7457:22;7436:53;:::i;:::-;7426:63;;7382:117;7177:329;;;;:::o;7512:117::-;7621:1;7618;7611:12;7635:117;7744:1;7741;7734:12;7758:117;7867:1;7864;7857:12;7898:568;7971:8;7981:6;8031:3;8024:4;8016:6;8012:17;8008:27;7998:122;;8039:79;;:::i;:::-;7998:122;8152:6;8139:20;8129:30;;8182:18;8174:6;8171:30;8168:117;;;8204:79;;:::i;:::-;8168:117;8318:4;8310:6;8306:17;8294:29;;8372:3;8364:4;8356:6;8352:17;8342:8;8338:32;8335:41;8332:128;;;8379:79;;:::i;:::-;8332:128;7898:568;;;;;:::o;8472:116::-;8542:21;8557:5;8542:21;:::i;:::-;8535:5;8532:32;8522:60;;8578:1;8575;8568:12;8522:60;8472:116;:::o;8594:133::-;8637:5;8675:6;8662:20;8653:29;;8691:30;8715:5;8691:30;:::i;:::-;8594:133;;;;:::o;8733:698::-;8825:6;8833;8841;8890:2;8878:9;8869:7;8865:23;8861:32;8858:119;;;8896:79;;:::i;:::-;8858:119;9044:1;9033:9;9029:17;9016:31;9074:18;9066:6;9063:30;9060:117;;;9096:79;;:::i;:::-;9060:117;9209:80;9281:7;9272:6;9261:9;9257:22;9209:80;:::i;:::-;9191:98;;;;8987:312;9338:2;9364:50;9406:7;9397:6;9386:9;9382:22;9364:50;:::i;:::-;9354:60;;9309:115;8733:698;;;;;:::o;9437:323::-;9493:6;9542:2;9530:9;9521:7;9517:23;9513:32;9510:119;;;9548:79;;:::i;:::-;9510:119;9668:1;9693:50;9735:7;9726:6;9715:9;9711:22;9693:50;:::i;:::-;9683:60;;9639:114;9437:323;;;;:::o;9766:474::-;9834:6;9842;9891:2;9879:9;9870:7;9866:23;9862:32;9859:119;;;9897:79;;:::i;:::-;9859:119;10017:1;10042:53;10087:7;10078:6;10067:9;10063:22;10042:53;:::i;:::-;10032:63;;9988:117;10144:2;10170:53;10215:7;10206:6;10195:9;10191:22;10170:53;:::i;:::-;10160:63;;10115:118;9766:474;;;;;:::o;10246:182::-;10386:34;10382:1;10374:6;10370:14;10363:58;10246:182;:::o;10434:366::-;10576:3;10597:67;10661:2;10656:3;10597:67;:::i;:::-;10590:74;;10673:93;10762:3;10673:93;:::i;:::-;10791:2;10786:3;10782:12;10775:19;;10434:366;;;:::o;10806:419::-;10972:4;11010:2;10999:9;10995:18;10987:26;;11059:9;11053:4;11049:20;11045:1;11034:9;11030:17;11023:47;11087:131;11213:4;11087:131;:::i;:::-;11079:139;;10806:419;;;:::o;11231:180::-;11279:77;11276:1;11269:88;11376:4;11373:1;11366:15;11400:4;11397:1;11390:15;11417:225;11557:34;11553:1;11545:6;11541:14;11534:58;11626:8;11621:2;11613:6;11609:15;11602:33;11417:225;:::o;11648:366::-;11790:3;11811:67;11875:2;11870:3;11811:67;:::i;:::-;11804:74;;11887:93;11976:3;11887:93;:::i;:::-;12005:2;12000:3;11996:12;11989:19;;11648:366;;;:::o;12020:419::-;12186:4;12224:2;12213:9;12209:18;12201:26;;12273:9;12267:4;12263:20;12259:1;12248:9;12244:17;12237:47;12301:131;12427:4;12301:131;:::i;:::-;12293:139;;12020:419;;;:::o;12445:223::-;12585:34;12581:1;12573:6;12569:14;12562:58;12654:6;12649:2;12641:6;12637:15;12630:31;12445:223;:::o;12674:366::-;12816:3;12837:67;12901:2;12896:3;12837:67;:::i;:::-;12830:74;;12913:93;13002:3;12913:93;:::i;:::-;13031:2;13026:3;13022:12;13015:19;;12674:366;;;:::o;13046:419::-;13212:4;13250:2;13239:9;13235:18;13227:26;;13299:9;13293:4;13289:20;13285:1;13274:9;13270:17;13263:47;13327:131;13453:4;13327:131;:::i;:::-;13319:139;;13046:419;;;:::o;13471:221::-;13611:34;13607:1;13599:6;13595:14;13588:58;13680:4;13675:2;13667:6;13663:15;13656:29;13471:221;:::o;13698:366::-;13840:3;13861:67;13925:2;13920:3;13861:67;:::i;:::-;13854:74;;13937:93;14026:3;13937:93;:::i;:::-;14055:2;14050:3;14046:12;14039:19;;13698:366;;;:::o;14070:419::-;14236:4;14274:2;14263:9;14259:18;14251:26;;14323:9;14317:4;14313:20;14309:1;14298:9;14294:17;14287:47;14351:131;14477:4;14351:131;:::i;:::-;14343:139;;14070:419;;;:::o;14495:224::-;14635:34;14631:1;14623:6;14619:14;14612:58;14704:7;14699:2;14691:6;14687:15;14680:32;14495:224;:::o;14725:366::-;14867:3;14888:67;14952:2;14947:3;14888:67;:::i;:::-;14881:74;;14964:93;15053:3;14964:93;:::i;:::-;15082:2;15077:3;15073:12;15066:19;;14725:366;;;:::o;15097:419::-;15263:4;15301:2;15290:9;15286:18;15278:26;;15350:9;15344:4;15340:20;15336:1;15325:9;15321:17;15314:47;15378:131;15504:4;15378:131;:::i;:::-;15370:139;;15097:419;;;:::o;15522:222::-;15662:34;15658:1;15650:6;15646:14;15639:58;15731:5;15726:2;15718:6;15714:15;15707:30;15522:222;:::o;15750:366::-;15892:3;15913:67;15977:2;15972:3;15913:67;:::i;:::-;15906:74;;15989:93;16078:3;15989:93;:::i;:::-;16107:2;16102:3;16098:12;16091:19;;15750:366;;;:::o;16122:419::-;16288:4;16326:2;16315:9;16311:18;16303:26;;16375:9;16369:4;16365:20;16361:1;16350:9;16346:17;16339:47;16403:131;16529:4;16403:131;:::i;:::-;16395:139;;16122:419;;;:::o;16547:228::-;16687:34;16683:1;16675:6;16671:14;16664:58;16756:11;16751:2;16743:6;16739:15;16732:36;16547:228;:::o;16781:366::-;16923:3;16944:67;17008:2;17003:3;16944:67;:::i;:::-;16937:74;;17020:93;17109:3;17020:93;:::i;:::-;17138:2;17133:3;17129:12;17122:19;;16781:366;;;:::o;17153:419::-;17319:4;17357:2;17346:9;17342:18;17334:26;;17406:9;17400:4;17396:20;17392:1;17381:9;17377:17;17370:47;17434:131;17560:4;17434:131;:::i;:::-;17426:139;;17153:419;;;:::o;17578:250::-;17718:34;17714:1;17706:6;17702:14;17695:58;17787:33;17782:2;17774:6;17770:15;17763:58;17578:250;:::o;17834:366::-;17976:3;17997:67;18061:2;18056:3;17997:67;:::i;:::-;17990:74;;18073:93;18162:3;18073:93;:::i;:::-;18191:2;18186:3;18182:12;18175:19;;17834:366;;;:::o;18206:419::-;18372:4;18410:2;18399:9;18395:18;18387:26;;18459:9;18453:4;18449:20;18445:1;18434:9;18430:17;18423:47;18487:131;18613:4;18487:131;:::i;:::-;18479:139;;18206:419;;;:::o;18631:178::-;18771:30;18767:1;18759:6;18755:14;18748:54;18631:178;:::o;18815:366::-;18957:3;18978:67;19042:2;19037:3;18978:67;:::i;:::-;18971:74;;19054:93;19143:3;19054:93;:::i;:::-;19172:2;19167:3;19163:12;19156:19;;18815:366;;;:::o;19187:419::-;19353:4;19391:2;19380:9;19376:18;19368:26;;19440:9;19434:4;19430:20;19426:1;19415:9;19411:17;19404:47;19468:131;19594:4;19468:131;:::i;:::-;19460:139;;19187:419;;;:::o;19612:180::-;19660:77;19657:1;19650:88;19757:4;19754:1;19747:15;19781:4;19778:1;19771:15;19798:191;19838:3;19857:20;19875:1;19857:20;:::i;:::-;19852:25;;19891:20;19909:1;19891:20;:::i;:::-;19886:25;;19934:1;19931;19927:9;19920:16;;19955:3;19952:1;19949:10;19946:36;;;19962:18;;:::i;:::-;19946:36;19798:191;;;;:::o;19995:222::-;20135:34;20131:1;20123:6;20119:14;20112:58;20204:5;20199:2;20191:6;20187:15;20180:30;19995:222;:::o;20223:366::-;20365:3;20386:67;20450:2;20445:3;20386:67;:::i;:::-;20379:74;;20462:93;20551:3;20462:93;:::i;:::-;20580:2;20575:3;20571:12;20564:19;;20223:366;;;:::o;20595:419::-;20761:4;20799:2;20788:9;20784:18;20776:26;;20848:9;20842:4;20838:20;20834:1;20823:9;20819:17;20812:47;20876:131;21002:4;20876:131;:::i;:::-;20868:139;;20595:419;;;:::o;21020:233::-;21059:3;21082:24;21100:5;21082:24;:::i;:::-;21073:33;;21128:66;21121:5;21118:77;21115:103;;21198:18;;:::i;:::-;21115:103;21245:1;21238:5;21234:13;21227:20;;21020:233;;;:::o;21259:194::-;21299:4;21319:20;21337:1;21319:20;:::i;:::-;21314:25;;21353:20;21371:1;21353:20;:::i;:::-;21348:25;;21397:1;21394;21390:9;21382:17;;21421:1;21415:4;21412:11;21409:37;;;21426:18;;:::i;:::-;21409:37;21259:194;;;;:::o;21459:180::-;21507:77;21504:1;21497:88;21604:4;21601:1;21594:15;21628:4;21625:1;21618:15;21645:143;21702:5;21733:6;21727:13;21718:22;;21749:33;21776:5;21749:33;:::i;:::-;21645:143;;;;:::o;21794:351::-;21864:6;21913:2;21901:9;21892:7;21888:23;21884:32;21881:119;;;21919:79;;:::i;:::-;21881:119;22039:1;22064:64;22120:7;22111:6;22100:9;22096:22;22064:64;:::i;:::-;22054:74;;22010:128;21794:351;;;;:::o;22151:85::-;22196:7;22225:5;22214:16;;22151:85;;;:::o;22242:158::-;22300:9;22333:61;22351:42;22360:32;22386:5;22360:32;:::i;:::-;22351:42;:::i;:::-;22333:61;:::i;:::-;22320:74;;22242:158;;;:::o;22406:147::-;22501:45;22540:5;22501:45;:::i;:::-;22496:3;22489:58;22406:147;;:::o;22559:114::-;22626:6;22660:5;22654:12;22644:22;;22559:114;;;:::o;22679:184::-;22778:11;22812:6;22807:3;22800:19;22852:4;22847:3;22843:14;22828:29;;22679:184;;;;:::o;22869:132::-;22936:4;22959:3;22951:11;;22989:4;22984:3;22980:14;22972:22;;22869:132;;;:::o;23007:108::-;23084:24;23102:5;23084:24;:::i;:::-;23079:3;23072:37;23007:108;;:::o;23121:179::-;23190:10;23211:46;23253:3;23245:6;23211:46;:::i;:::-;23289:4;23284:3;23280:14;23266:28;;23121:179;;;;:::o;23306:113::-;23376:4;23408;23403:3;23399:14;23391:22;;23306:113;;;:::o;23455:732::-;23574:3;23603:54;23651:5;23603:54;:::i;:::-;23673:86;23752:6;23747:3;23673:86;:::i;:::-;23666:93;;23783:56;23833:5;23783:56;:::i;:::-;23862:7;23893:1;23878:284;23903:6;23900:1;23897:13;23878:284;;;23979:6;23973:13;24006:63;24065:3;24050:13;24006:63;:::i;:::-;23999:70;;24092:60;24145:6;24092:60;:::i;:::-;24082:70;;23938:224;23925:1;23922;23918:9;23913:14;;23878:284;;;23882:14;24178:3;24171:10;;23579:608;;;23455:732;;;;:::o;24193:831::-;24456:4;24494:3;24483:9;24479:19;24471:27;;24508:71;24576:1;24565:9;24561:17;24552:6;24508:71;:::i;:::-;24589:80;24665:2;24654:9;24650:18;24641:6;24589:80;:::i;:::-;24716:9;24710:4;24706:20;24701:2;24690:9;24686:18;24679:48;24744:108;24847:4;24838:6;24744:108;:::i;:::-;24736:116;;24862:72;24930:2;24919:9;24915:18;24906:6;24862:72;:::i;:::-;24944:73;25012:3;25001:9;24997:19;24988:6;24944:73;:::i;:::-;24193:831;;;;;;;;:::o;25030:229::-;25170:34;25166:1;25158:6;25154:14;25147:58;25239:12;25234:2;25226:6;25222:15;25215:37;25030:229;:::o;25265:366::-;25407:3;25428:67;25492:2;25487:3;25428:67;:::i;:::-;25421:74;;25504:93;25593:3;25504:93;:::i;:::-;25622:2;25617:3;25613:12;25606:19;;25265:366;;;:::o;25637:419::-;25803:4;25841:2;25830:9;25826:18;25818:26;;25890:9;25884:4;25880:20;25876:1;25865:9;25861:17;25854:47;25918:131;26044:4;25918:131;:::i;:::-;25910:139;;25637:419;;;:::o;26062:180::-;26110:77;26107:1;26100:88;26207:4;26204:1;26197:15;26231:4;26228:1;26221:15;26248:185;26288:1;26305:20;26323:1;26305:20;:::i;:::-;26300:25;;26339:20;26357:1;26339:20;:::i;:::-;26334:25;;26378:1;26368:35;;26383:18;;:::i;:::-;26368:35;26425:1;26422;26418:9;26413:14;;26248:185;;;;:::o;26439:177::-;26579:29;26575:1;26567:6;26563:14;26556:53;26439:177;:::o;26622:366::-;26764:3;26785:67;26849:2;26844:3;26785:67;:::i;:::-;26778:74;;26861:93;26950:3;26861:93;:::i;:::-;26979:2;26974:3;26970:12;26963:19;;26622:366;;;:::o;26994:419::-;27160:4;27198:2;27187:9;27183:18;27175:26;;27247:9;27241:4;27237:20;27233:1;27222:9;27218:17;27211:47;27275:131;27401:4;27275:131;:::i;:::-;27267:139;;26994:419;;;:::o;27419:410::-;27459:7;27482:20;27500:1;27482:20;:::i;:::-;27477:25;;27516:20;27534:1;27516:20;:::i;:::-;27511:25;;27571:1;27568;27564:9;27593:30;27611:11;27593:30;:::i;:::-;27582:41;;27772:1;27763:7;27759:15;27756:1;27753:22;27733:1;27726:9;27706:83;27683:139;;27802:18;;:::i;:::-;27683:139;27467:362;27419:410;;;;:::o;27835:220::-;27975:34;27971:1;27963:6;27959:14;27952:58;28044:3;28039:2;28031:6;28027:15;28020:28;27835:220;:::o;28061:366::-;28203:3;28224:67;28288:2;28283:3;28224:67;:::i;:::-;28217:74;;28300:93;28389:3;28300:93;:::i;:::-;28418:2;28413:3;28409:12;28402:19;;28061:366;;;:::o;28433:419::-;28599:4;28637:2;28626:9;28622:18;28614:26;;28686:9;28680:4;28676:20;28672:1;28661:9;28657:17;28650:47;28714:131;28840:4;28714:131;:::i;:::-;28706:139;;28433:419;;;:::o

Swarm Source

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