ETH Price: $3,465.38 (-1.18%)
Gas: 5 Gwei

Token

CortexLoop (CRTX)
 

Overview

Max Total Supply

100,000,000 CRTX

Holders

425

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.000000001 CRTX

Value
$0.00
0xaf8d5409a0fb7bd353f75354d025eceac930024f
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:
CortexLoop

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

/*
Website: https://cortexloop.ai
Docs: https://docs.cortexloop.ai
Twitter: https://twitter.com/cortexloop
Telegram : https://t.me/cortexloop
*/

// SPDX-License-Identifier: Unlicensed

pragma solidity ^0.8.18;

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

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

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

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

contract CortexLoop is Context, IERC20, Ownable {
    using SafeMath for uint256;

    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => uint256) public _buyMap;

    uint8 private constant _decimals = 9;
    string private constant _name = "CortexLoop";
    string private constant _symbol = "CRTX";

    uint256 private constant MAX = ~uint256(0);

    uint256 private constant _tTotal = 100_000_000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));

    uint256 private _taxFeeOnBuy = 5;
    uint256 private _taxFeeOnSell = 5;

    uint256 private _redisFeeOnBuy = 0;
    uint256 private _redisFeeOnSell = 0;

    uint256 private _tFeeTotal;

    //Original Fee
    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;

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

    address payable private _developerAddress =
        payable(0x1D8E70ED32E53d0a24f5F985c648F9d97F49c38d);

    bool private _maxTxnCan = false;
    bool private _maxWalletCan = false;
    bool private _maxTxn = false;
    bool private _maxWallet = false;

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

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

    uint256 public _maxTxAmount = 1_000_000 * 10**9;
    uint256 public _maxWalletSize = 2_000_000 * 10**9;
    uint256 public _swapTokensAtAmount = 1000 * 10**9;

    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[address(this)] = true;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[_developerAddress] = true;

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

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

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

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

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

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

    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 transfer(address recipient, uint256 amount)
        public
        override
        returns (bool)
    {
        _transfer(_msgSender(), recipient, 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,
                "the transfer amount exceeds allowance"
            )
        );
        return true;
    }

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

        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;

        _redisFee = 0;
        _taxFee = 0;
    }

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

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

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) private {
        require(owner != address(0), "Can't approve from zero address");
        require(spender != address(0), "Can't approve to zero address");

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

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "Cant transfer from address zero");
        require(to != address(0), "Cant transfer to address zero");
        require(amount > 0, "Amount should be above zero");

        if (from != owner() && to != owner()) {
            //Trade start check
            if (!tradingOpen) {
                require(
                    from == owner(),
                    "Only owner can trade before trading activation"
                );
            }

            require(amount <= _maxTxAmount, "Exceeded max transaction limit");

            if (to != uniswapV2Pair) {
                require(
                    balanceOf(to) + amount < _maxWalletSize,
                    "Exceeds max wallet balance"
                );
            }

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

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

            if (
                canSwap &&
                !inSwap &&
                from != uniswapV2Pair &&
                allowSwap &&
                !_isExcludedFromFee[from] &&
                !_isExcludedFromFee[to]
            ) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    transferEthToDev(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)) {
                _redisFee = _redisFeeOnBuy;
                _taxFee = _taxFeeOnBuy;
            }

            //Set Fee for Sells
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _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 transferEthToDev(uint256 amount) private {
        _developerAddress.transfer(amount);
    }

    function setTrading(bool _tradingOpen) public onlyOwner {
        tradingOpen = _tradingOpen;
    }

    function manualsend() external {
        require(
            _msgSender() == _developerAddress
        );
        uint256 contractETHBalance = address(this).balance;
        transferEthToDev(contractETHBalance);
    }

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

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) disableFee();
        _transferApplyingFees(sender, recipient, amount);
        if (!takeFee) enableFee();
    }

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

    function _transferApplyingFees(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTeam
        ) = _getFeeValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _transferFeeDev(tTeam);
        _updateReflectedFees(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

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

    function _getFeeValues(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);
    }

    //Set maximum transaction
    function setMaxTxnAmount(
        uint256 maxTxAmount
    ) public onlyOwner {
        _maxTxAmount = maxTxAmount;
    }

    receive() external payable {}

    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 excludeMultipleAccountsFromFees(
        address[] calldata accounts,
        bool excluded
    ) public onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFee[accounts[i]] = excluded;
        }
    }

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

    //Set minimum tokens required to swap.
    function toggleAllowSwap(bool _allowSwap) public onlyOwner {
        allowSwap = _allowSwap;
    }

    function setFee(
        uint256 redisFeeOnBuy,
        uint256 redisFeeOnSell,
        uint256 taxFeeOnBuy,
        uint256 taxFeeOnSell
    ) public onlyOwner {
        require(
            redisFeeOnBuy >= 0 && redisFeeOnBuy <= 4,
            "Buy rewards must be between 0% and 4%"
        );
        require(
            taxFeeOnBuy >= 0 && taxFeeOnBuy <= 95,
            "Buy tax must be between 0% and 95%"
        );
        require(
            redisFeeOnSell >= 0 && redisFeeOnSell <= 4,
            "Sell rewards must be between 0% and 4%"
        );
        require(
            taxFeeOnSell >= 0 && taxFeeOnSell <= 95,
            "Sell tax must be between 0% and 95%"
        );

        _redisFeeOnBuy = redisFeeOnBuy;
        _redisFeeOnSell = redisFeeOnSell;
        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;
    }

    //Set minimum tokens required to swap.
    function setMinSwapTokensThreshold(uint256 swapTokensAtAmount)
        public
        onlyOwner
    {
        _swapTokensAtAmount = swapTokensAtAmount;
    }

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

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":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","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":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"setTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_allowSwap","type":"bool"}],"name":"toggleAllowSwap","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"}]

608060405267016345785d8a00006000196200001c9190620006ab565b6000196200002b919062000712565b600755600560085560056009556000600a556000600b55600f54600d55601054600e55600b54600f55600954601055731d8e70ed32e53d0a24f5f985c648f9d97f49c38d601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601160146101000a81548160ff0219169083151502179055506000601160156101000a81548160ff0219169083151502179055506000601160166101000a81548160ff0219169083151502179055506000601160176101000a81548160ff0219169083151502179055506001601360156101000a81548160ff0219169083151502179055506000601360166101000a81548160ff02191690831515021790555066038d7ea4c6800060145566071afd498d000060155564e8d4a510006016553480156200017d57600080fd5b506000620001906200064160201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060075460046000620002456200064160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000329573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034f9190620007b7565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003b7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003dd9190620007b7565b6040518363ffffffff1660e01b8152600401620003fc929190620007fa565b6020604051808303816000875af11580156200041c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004429190620007b7565b601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000620004f06200064960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620005cb6200064160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef67016345785d8a000060405162000632919062000838565b60405180910390a35062000855565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620006b88262000672565b9150620006c58362000672565b925082620006d857620006d76200067c565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200071f8262000672565b91506200072c8362000672565b9250828203905081811115620007475762000746620006e3565b5b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200077f8262000752565b9050919050565b620007918162000772565b81146200079d57600080fd5b50565b600081519050620007b18162000786565b92915050565b600060208284031215620007d057620007cf6200074d565b5b6000620007e084828501620007a0565b91505092915050565b620007f48162000772565b82525050565b6000604082019050620008116000830185620007e9565b620008206020830184620007e9565b9392505050565b620008328162000672565b82525050565b60006020820190506200084f600083018462000827565b92915050565b61399c80620008656000396000f3fe6080604052600436106101a05760003560e01c80637d1db4a5116100ec578063a2a957bb1161008a578063c492f04611610064578063c492f0461461059d578063dd62ed3e146105c6578063ea1644d514610603578063f2fde38b1461062c576101a7565b8063a2a957bb14610520578063a9059cbb14610549578063c3c8cd8014610586576101a7565b80638f70ccf7116100c65780638f70ccf7146104785780638f9a55c0146104a157806395d89b41146104cc57806398a5c315146104f7576101a7565b80637d1db4a5146103e55780637f2feddc146104105780638da5cb5b1461044d576101a7565b8063313ce567116101595780636fc3eaec116101335780636fc3eaec1461035157806370a0823114610368578063715018a6146103a557806374010ece146103bc576101a7565b8063313ce567146102d257806345af0281146102fd57806349bd5a5e14610326576101a7565b806306fdde03146101ac578063095ea7b3146101d75780631694505e1461021457806318160ddd1461023f57806323b872dd1461026a5780632fd689e3146102a7576101a7565b366101a757005b600080fd5b3480156101b857600080fd5b506101c1610655565b6040516101ce91906128c4565b60405180910390f35b3480156101e357600080fd5b506101fe60048036038101906101f99190612984565b610692565b60405161020b91906129df565b60405180910390f35b34801561022057600080fd5b506102296106b0565b6040516102369190612a59565b60405180910390f35b34801561024b57600080fd5b506102546106d6565b6040516102619190612a83565b60405180910390f35b34801561027657600080fd5b50610291600480360381019061028c9190612a9e565b6106e6565b60405161029e91906129df565b60405180910390f35b3480156102b357600080fd5b506102bc6107bf565b6040516102c99190612a83565b60405180910390f35b3480156102de57600080fd5b506102e76107c5565b6040516102f49190612b0d565b60405180910390f35b34801561030957600080fd5b50610324600480360381019061031f9190612b54565b6107ce565b005b34801561033257600080fd5b5061033b610880565b6040516103489190612b90565b60405180910390f35b34801561035d57600080fd5b506103666108a6565b005b34801561037457600080fd5b5061038f600480360381019061038a9190612bab565b610918565b60405161039c9190612a83565b60405180910390f35b3480156103b157600080fd5b506103ba610969565b005b3480156103c857600080fd5b506103e360048036038101906103de9190612bd8565b610abc565b005b3480156103f157600080fd5b506103fa610b5b565b6040516104079190612a83565b60405180910390f35b34801561041c57600080fd5b5061043760048036038101906104329190612bab565b610b61565b6040516104449190612a83565b60405180910390f35b34801561045957600080fd5b50610462610b79565b60405161046f9190612b90565b60405180910390f35b34801561048457600080fd5b5061049f600480360381019061049a9190612b54565b610ba2565b005b3480156104ad57600080fd5b506104b6610c54565b6040516104c39190612a83565b60405180910390f35b3480156104d857600080fd5b506104e1610c5a565b6040516104ee91906128c4565b60405180910390f35b34801561050357600080fd5b5061051e60048036038101906105199190612bd8565b610c97565b005b34801561052c57600080fd5b5061054760048036038101906105429190612c05565b610d36565b005b34801561055557600080fd5b50610570600480360381019061056b9190612984565b610f31565b60405161057d91906129df565b60405180910390f35b34801561059257600080fd5b5061059b610f4f565b005b3480156105a957600080fd5b506105c460048036038101906105bf9190612cd1565b610fc9565b005b3480156105d257600080fd5b506105ed60048036038101906105e89190612d31565b611103565b6040516105fa9190612a83565b60405180910390f35b34801561060f57600080fd5b5061062a60048036038101906106259190612bd8565b61118a565b005b34801561063857600080fd5b50610653600480360381019061064e9190612bab565b611229565b005b60606040518060400160405280600a81526020017f436f727465784c6f6f7000000000000000000000000000000000000000000000815250905090565b60006106a661069f6113ea565b84846113f2565b6001905092915050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600067016345785d8a0000905090565b60006106f38484846115bb565b6107b4846106ff6113ea565b6107af8560405180606001604052806025815260200161394260259139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006107656113ea565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d5d9092919063ffffffff16565b6113f2565b600190509392505050565b60165481565b60006009905090565b6107d66113ea565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610863576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085a90612dbd565b60405180910390fd5b80601360156101000a81548160ff02191690831515021790555050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108e76113ea565b73ffffffffffffffffffffffffffffffffffffffff161461090757600080fd5b600047905061091581611dc1565b50565b6000610962600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e2d565b9050919050565b6109716113ea565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f590612dbd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610ac46113ea565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4890612dbd565b60405180910390fd5b8060148190555050565b60145481565b60066020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610baa6113ea565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2e90612dbd565b60405180910390fd5b80601360146101000a81548160ff02191690831515021790555050565b60155481565b60606040518060400160405280600481526020017f4352545800000000000000000000000000000000000000000000000000000000815250905090565b610c9f6113ea565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2390612dbd565b60405180910390fd5b8060168190555050565b610d3e6113ea565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc290612dbd565b60405180910390fd5b60008410158015610ddd575060048411155b610e1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1390612e4f565b60405180910390fd5b60008210158015610e2e5750605f8211155b610e6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6490612ee1565b60405180910390fd5b60008310158015610e7f575060048311155b610ebe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb590612f73565b60405180910390fd5b60008110158015610ed05750605f8111155b610f0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0690613005565b60405180910390fd5b83600a8190555082600b81905550816008819055508060098190555050505050565b6000610f45610f3e6113ea565b84846115bb565b6001905092915050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f906113ea565b73ffffffffffffffffffffffffffffffffffffffff1614610fb057600080fd5b6000610fbb30610918565b9050610fc681611e9b565b50565b610fd16113ea565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461105e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105590612dbd565b60405180910390fd5b60005b838390508110156110fd57816003600086868581811061108457611083613025565b5b90506020020160208101906110999190612bab565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806110f590613083565b915050611061565b50505050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6111926113ea565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461121f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121690612dbd565b60405180910390fd5b8060158190555050565b6112316113ea565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b590612dbd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361132d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113249061313d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611461576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611458906131a9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c790613215565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516115ae9190612a83565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361162a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162190613281565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611699576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611690906132ed565b60405180910390fd5b600081116116dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d390613359565b60405180910390fd5b6116e4610b79565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156117525750611722610b79565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611a5c57601360149054906101000a900460ff166117e157611773610b79565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146117e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d7906133eb565b60405180910390fd5b5b601454811115611826576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181d90613457565b60405180910390fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146118d3576015548161188884610918565b6118929190613477565b106118d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c9906134f7565b60405180910390fd5b5b60006118de30610918565b90506000601654821015905060145482106118f95760145491505b8080156119135750601360169054906101000a900460ff16155b801561196d5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156119855750601360159054906101000a900460ff165b80156119db5750600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611a315750600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611a5957611a3f82611e9b565b60004790506000811115611a5757611a5647611dc1565b5b505b50505b600060019050600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611b035750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611bb65750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611bb55750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611bc45760009050611d4b565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611c6f5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611c8757600a54600f819055506008546010819055505b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611d325750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611d4a57600b54600f819055506009546010819055505b5b611d5784848484612114565b50505050565b6000838311158290611da5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9c91906128c4565b60405180910390fd5b5060008385611db49190613517565b9050809150509392505050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611e29573d6000803e3d6000fd5b5050565b6000600754821115611e74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6b906135bd565b60405180910390fd5b6000611e7e612141565b9050611e93818461216c90919063ffffffff16565b915050919050565b6001601360166101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611ed357611ed26135dd565b5b604051908082528060200260200182016040528015611f015781602001602082028036833780820191505090505b5090503081600081518110611f1957611f18613025565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fc0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fe49190613621565b81600181518110611ff857611ff7613025565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061205f30601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846113f2565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016120c3959493929190613747565b600060405180830381600087803b1580156120dd57600080fd5b505af11580156120f1573d6000803e3d6000fd5b50505050506000601360166101000a81548160ff02191690831515021790555050565b80612122576121216121b6565b5b61212d8484846121f3565b8061213b5761213a6123be565b5b50505050565b600080600061214e6123d2565b91509150612165818361216c90919063ffffffff16565b9250505090565b60006121ae83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612431565b905092915050565b6000600f541480156121ca57506000601054145b6121f157600f54600d81905550601054600e819055506000600f8190555060006010819055505b565b60008060008060008061220587612494565b95509550955095509550955061226386600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124fc90919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506122f885600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461254690919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612344816125a4565b61234e8483612661565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516123ab9190612a83565b60405180910390a3505050505050505050565b600d54600f81905550600e54601081905550565b60008060006007549050600067016345785d8a0000905061240667016345785d8a000060075461216c90919063ffffffff16565b8210156124245760075467016345785d8a000093509350505061242d565b81819350935050505b9091565b60008083118290612478576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246f91906128c4565b60405180910390fd5b506000838561248791906137d0565b9050809150509392505050565b60008060008060008060008060006124b18a600f5460105461269b565b92509250925060006124c1612141565b905060008060006124d48e878787612731565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061253e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d5d565b905092915050565b60008082846125559190613477565b90508381101561259a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125919061384d565b60405180910390fd5b8091505092915050565b60006125ae612141565b905060006125c582846127ba90919063ffffffff16565b905061261981600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461254690919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612676826007546124fc90919063ffffffff16565b60078190555061269181600c5461254690919063ffffffff16565b600c819055505050565b6000806000806126c760646126b9888a6127ba90919063ffffffff16565b61216c90919063ffffffff16565b905060006126f160646126e3888b6127ba90919063ffffffff16565b61216c90919063ffffffff16565b9050600061271a8261270c858c6124fc90919063ffffffff16565b6124fc90919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061274a85896127ba90919063ffffffff16565b9050600061276186896127ba90919063ffffffff16565b9050600061277887896127ba90919063ffffffff16565b905060006127a18261279385876124fc90919063ffffffff16565b6124fc90919063ffffffff16565b9050838184965096509650505050509450945094915050565b60008083036127cc576000905061282e565b600082846127da919061386d565b90508284826127e991906137d0565b14612829576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282090613921565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561286e578082015181840152602081019050612853565b60008484015250505050565b6000601f19601f8301169050919050565b600061289682612834565b6128a0818561283f565b93506128b0818560208601612850565b6128b98161287a565b840191505092915050565b600060208201905081810360008301526128de818461288b565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061291b826128f0565b9050919050565b61292b81612910565b811461293657600080fd5b50565b60008135905061294881612922565b92915050565b6000819050919050565b6129618161294e565b811461296c57600080fd5b50565b60008135905061297e81612958565b92915050565b6000806040838503121561299b5761299a6128e6565b5b60006129a985828601612939565b92505060206129ba8582860161296f565b9150509250929050565b60008115159050919050565b6129d9816129c4565b82525050565b60006020820190506129f460008301846129d0565b92915050565b6000819050919050565b6000612a1f612a1a612a15846128f0565b6129fa565b6128f0565b9050919050565b6000612a3182612a04565b9050919050565b6000612a4382612a26565b9050919050565b612a5381612a38565b82525050565b6000602082019050612a6e6000830184612a4a565b92915050565b612a7d8161294e565b82525050565b6000602082019050612a986000830184612a74565b92915050565b600080600060608486031215612ab757612ab66128e6565b5b6000612ac586828701612939565b9350506020612ad686828701612939565b9250506040612ae78682870161296f565b9150509250925092565b600060ff82169050919050565b612b0781612af1565b82525050565b6000602082019050612b226000830184612afe565b92915050565b612b31816129c4565b8114612b3c57600080fd5b50565b600081359050612b4e81612b28565b92915050565b600060208284031215612b6a57612b696128e6565b5b6000612b7884828501612b3f565b91505092915050565b612b8a81612910565b82525050565b6000602082019050612ba56000830184612b81565b92915050565b600060208284031215612bc157612bc06128e6565b5b6000612bcf84828501612939565b91505092915050565b600060208284031215612bee57612bed6128e6565b5b6000612bfc8482850161296f565b91505092915050565b60008060008060808587031215612c1f57612c1e6128e6565b5b6000612c2d8782880161296f565b9450506020612c3e8782880161296f565b9350506040612c4f8782880161296f565b9250506060612c608782880161296f565b91505092959194509250565b600080fd5b600080fd5b600080fd5b60008083601f840112612c9157612c90612c6c565b5b8235905067ffffffffffffffff811115612cae57612cad612c71565b5b602083019150836020820283011115612cca57612cc9612c76565b5b9250929050565b600080600060408486031215612cea57612ce96128e6565b5b600084013567ffffffffffffffff811115612d0857612d076128eb565b5b612d1486828701612c7b565b93509350506020612d2786828701612b3f565b9150509250925092565b60008060408385031215612d4857612d476128e6565b5b6000612d5685828601612939565b9250506020612d6785828601612939565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612da760208361283f565b9150612db282612d71565b602082019050919050565b60006020820190508181036000830152612dd681612d9a565b9050919050565b7f4275792072657761726473206d757374206265206265747765656e203025206160008201527f6e64203425000000000000000000000000000000000000000000000000000000602082015250565b6000612e3960258361283f565b9150612e4482612ddd565b604082019050919050565b60006020820190508181036000830152612e6881612e2c565b9050919050565b7f42757920746178206d757374206265206265747765656e20302520616e64203960008201527f3525000000000000000000000000000000000000000000000000000000000000602082015250565b6000612ecb60228361283f565b9150612ed682612e6f565b604082019050919050565b60006020820190508181036000830152612efa81612ebe565b9050919050565b7f53656c6c2072657761726473206d757374206265206265747765656e2030252060008201527f616e642034250000000000000000000000000000000000000000000000000000602082015250565b6000612f5d60268361283f565b9150612f6882612f01565b604082019050919050565b60006020820190508181036000830152612f8c81612f50565b9050919050565b7f53656c6c20746178206d757374206265206265747765656e20302520616e642060008201527f3935250000000000000000000000000000000000000000000000000000000000602082015250565b6000612fef60238361283f565b9150612ffa82612f93565b604082019050919050565b6000602082019050818103600083015261301e81612fe2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061308e8261294e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036130c0576130bf613054565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061312760268361283f565b9150613132826130cb565b604082019050919050565b600060208201905081810360008301526131568161311a565b9050919050565b7f43616e277420617070726f76652066726f6d207a65726f206164647265737300600082015250565b6000613193601f8361283f565b915061319e8261315d565b602082019050919050565b600060208201905081810360008301526131c281613186565b9050919050565b7f43616e277420617070726f766520746f207a65726f2061646472657373000000600082015250565b60006131ff601d8361283f565b915061320a826131c9565b602082019050919050565b6000602082019050818103600083015261322e816131f2565b9050919050565b7f43616e74207472616e736665722066726f6d2061646472657373207a65726f00600082015250565b600061326b601f8361283f565b915061327682613235565b602082019050919050565b6000602082019050818103600083015261329a8161325e565b9050919050565b7f43616e74207472616e7366657220746f2061646472657373207a65726f000000600082015250565b60006132d7601d8361283f565b91506132e2826132a1565b602082019050919050565b60006020820190508181036000830152613306816132ca565b9050919050565b7f416d6f756e742073686f756c642062652061626f7665207a65726f0000000000600082015250565b6000613343601b8361283f565b915061334e8261330d565b602082019050919050565b6000602082019050818103600083015261337281613336565b9050919050565b7f4f6e6c79206f776e65722063616e207472616465206265666f7265207472616460008201527f696e672061637469766174696f6e000000000000000000000000000000000000602082015250565b60006133d5602e8361283f565b91506133e082613379565b604082019050919050565b60006020820190508181036000830152613404816133c8565b9050919050565b7f4578636565646564206d6178207472616e73616374696f6e206c696d69740000600082015250565b6000613441601e8361283f565b915061344c8261340b565b602082019050919050565b6000602082019050818103600083015261347081613434565b9050919050565b60006134828261294e565b915061348d8361294e565b92508282019050808211156134a5576134a4613054565b5b92915050565b7f45786365656473206d61782077616c6c65742062616c616e6365000000000000600082015250565b60006134e1601a8361283f565b91506134ec826134ab565b602082019050919050565b60006020820190508181036000830152613510816134d4565b9050919050565b60006135228261294e565b915061352d8361294e565b925082820390508181111561354557613544613054565b5b92915050565b7f416d6f756e742068617320746f206265206c657373207468616e20746f74616c60008201527f207265666c656374696f6e730000000000000000000000000000000000000000602082015250565b60006135a7602c8361283f565b91506135b28261354b565b604082019050919050565b600060208201905081810360008301526135d68161359a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008151905061361b81612922565b92915050565b600060208284031215613637576136366128e6565b5b60006136458482850161360c565b91505092915050565b6000819050919050565b600061367361366e6136698461364e565b6129fa565b61294e565b9050919050565b61368381613658565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6136be81612910565b82525050565b60006136d083836136b5565b60208301905092915050565b6000602082019050919050565b60006136f482613689565b6136fe8185613694565b9350613709836136a5565b8060005b8381101561373a57815161372188826136c4565b975061372c836136dc565b92505060018101905061370d565b5085935050505092915050565b600060a08201905061375c6000830188612a74565b613769602083018761367a565b818103604083015261377b81866136e9565b905061378a6060830185612b81565b6137976080830184612a74565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006137db8261294e565b91506137e68361294e565b9250826137f6576137f56137a1565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613837601b8361283f565b915061384282613801565b602082019050919050565b600060208201905081810360008301526138668161382a565b9050919050565b60006138788261294e565b91506138838361294e565b92508282026138918161294e565b915082820484148315176138a8576138a7613054565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061390b60218361283f565b9150613916826138af565b604082019050919050565b6000602082019050818103600083015261393a816138fe565b905091905056fe746865207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212207a0e47cb787d2b8e277b97e17fd35e98580ee4f8630537db11115acf6ac98d0064736f6c63430008120033

Deployed Bytecode

0x6080604052600436106101a05760003560e01c80637d1db4a5116100ec578063a2a957bb1161008a578063c492f04611610064578063c492f0461461059d578063dd62ed3e146105c6578063ea1644d514610603578063f2fde38b1461062c576101a7565b8063a2a957bb14610520578063a9059cbb14610549578063c3c8cd8014610586576101a7565b80638f70ccf7116100c65780638f70ccf7146104785780638f9a55c0146104a157806395d89b41146104cc57806398a5c315146104f7576101a7565b80637d1db4a5146103e55780637f2feddc146104105780638da5cb5b1461044d576101a7565b8063313ce567116101595780636fc3eaec116101335780636fc3eaec1461035157806370a0823114610368578063715018a6146103a557806374010ece146103bc576101a7565b8063313ce567146102d257806345af0281146102fd57806349bd5a5e14610326576101a7565b806306fdde03146101ac578063095ea7b3146101d75780631694505e1461021457806318160ddd1461023f57806323b872dd1461026a5780632fd689e3146102a7576101a7565b366101a757005b600080fd5b3480156101b857600080fd5b506101c1610655565b6040516101ce91906128c4565b60405180910390f35b3480156101e357600080fd5b506101fe60048036038101906101f99190612984565b610692565b60405161020b91906129df565b60405180910390f35b34801561022057600080fd5b506102296106b0565b6040516102369190612a59565b60405180910390f35b34801561024b57600080fd5b506102546106d6565b6040516102619190612a83565b60405180910390f35b34801561027657600080fd5b50610291600480360381019061028c9190612a9e565b6106e6565b60405161029e91906129df565b60405180910390f35b3480156102b357600080fd5b506102bc6107bf565b6040516102c99190612a83565b60405180910390f35b3480156102de57600080fd5b506102e76107c5565b6040516102f49190612b0d565b60405180910390f35b34801561030957600080fd5b50610324600480360381019061031f9190612b54565b6107ce565b005b34801561033257600080fd5b5061033b610880565b6040516103489190612b90565b60405180910390f35b34801561035d57600080fd5b506103666108a6565b005b34801561037457600080fd5b5061038f600480360381019061038a9190612bab565b610918565b60405161039c9190612a83565b60405180910390f35b3480156103b157600080fd5b506103ba610969565b005b3480156103c857600080fd5b506103e360048036038101906103de9190612bd8565b610abc565b005b3480156103f157600080fd5b506103fa610b5b565b6040516104079190612a83565b60405180910390f35b34801561041c57600080fd5b5061043760048036038101906104329190612bab565b610b61565b6040516104449190612a83565b60405180910390f35b34801561045957600080fd5b50610462610b79565b60405161046f9190612b90565b60405180910390f35b34801561048457600080fd5b5061049f600480360381019061049a9190612b54565b610ba2565b005b3480156104ad57600080fd5b506104b6610c54565b6040516104c39190612a83565b60405180910390f35b3480156104d857600080fd5b506104e1610c5a565b6040516104ee91906128c4565b60405180910390f35b34801561050357600080fd5b5061051e60048036038101906105199190612bd8565b610c97565b005b34801561052c57600080fd5b5061054760048036038101906105429190612c05565b610d36565b005b34801561055557600080fd5b50610570600480360381019061056b9190612984565b610f31565b60405161057d91906129df565b60405180910390f35b34801561059257600080fd5b5061059b610f4f565b005b3480156105a957600080fd5b506105c460048036038101906105bf9190612cd1565b610fc9565b005b3480156105d257600080fd5b506105ed60048036038101906105e89190612d31565b611103565b6040516105fa9190612a83565b60405180910390f35b34801561060f57600080fd5b5061062a60048036038101906106259190612bd8565b61118a565b005b34801561063857600080fd5b50610653600480360381019061064e9190612bab565b611229565b005b60606040518060400160405280600a81526020017f436f727465784c6f6f7000000000000000000000000000000000000000000000815250905090565b60006106a661069f6113ea565b84846113f2565b6001905092915050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600067016345785d8a0000905090565b60006106f38484846115bb565b6107b4846106ff6113ea565b6107af8560405180606001604052806025815260200161394260259139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006107656113ea565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d5d9092919063ffffffff16565b6113f2565b600190509392505050565b60165481565b60006009905090565b6107d66113ea565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610863576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085a90612dbd565b60405180910390fd5b80601360156101000a81548160ff02191690831515021790555050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108e76113ea565b73ffffffffffffffffffffffffffffffffffffffff161461090757600080fd5b600047905061091581611dc1565b50565b6000610962600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e2d565b9050919050565b6109716113ea565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f590612dbd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610ac46113ea565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4890612dbd565b60405180910390fd5b8060148190555050565b60145481565b60066020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610baa6113ea565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2e90612dbd565b60405180910390fd5b80601360146101000a81548160ff02191690831515021790555050565b60155481565b60606040518060400160405280600481526020017f4352545800000000000000000000000000000000000000000000000000000000815250905090565b610c9f6113ea565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2390612dbd565b60405180910390fd5b8060168190555050565b610d3e6113ea565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc290612dbd565b60405180910390fd5b60008410158015610ddd575060048411155b610e1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1390612e4f565b60405180910390fd5b60008210158015610e2e5750605f8211155b610e6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6490612ee1565b60405180910390fd5b60008310158015610e7f575060048311155b610ebe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb590612f73565b60405180910390fd5b60008110158015610ed05750605f8111155b610f0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0690613005565b60405180910390fd5b83600a8190555082600b81905550816008819055508060098190555050505050565b6000610f45610f3e6113ea565b84846115bb565b6001905092915050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f906113ea565b73ffffffffffffffffffffffffffffffffffffffff1614610fb057600080fd5b6000610fbb30610918565b9050610fc681611e9b565b50565b610fd16113ea565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461105e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105590612dbd565b60405180910390fd5b60005b838390508110156110fd57816003600086868581811061108457611083613025565b5b90506020020160208101906110999190612bab565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806110f590613083565b915050611061565b50505050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6111926113ea565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461121f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121690612dbd565b60405180910390fd5b8060158190555050565b6112316113ea565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b590612dbd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361132d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113249061313d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611461576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611458906131a9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c790613215565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516115ae9190612a83565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361162a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162190613281565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611699576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611690906132ed565b60405180910390fd5b600081116116dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d390613359565b60405180910390fd5b6116e4610b79565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156117525750611722610b79565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611a5c57601360149054906101000a900460ff166117e157611773610b79565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146117e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d7906133eb565b60405180910390fd5b5b601454811115611826576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181d90613457565b60405180910390fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146118d3576015548161188884610918565b6118929190613477565b106118d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c9906134f7565b60405180910390fd5b5b60006118de30610918565b90506000601654821015905060145482106118f95760145491505b8080156119135750601360169054906101000a900460ff16155b801561196d5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156119855750601360159054906101000a900460ff165b80156119db5750600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611a315750600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611a5957611a3f82611e9b565b60004790506000811115611a5757611a5647611dc1565b5b505b50505b600060019050600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611b035750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611bb65750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611bb55750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611bc45760009050611d4b565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611c6f5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611c8757600a54600f819055506008546010819055505b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611d325750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611d4a57600b54600f819055506009546010819055505b5b611d5784848484612114565b50505050565b6000838311158290611da5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9c91906128c4565b60405180910390fd5b5060008385611db49190613517565b9050809150509392505050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611e29573d6000803e3d6000fd5b5050565b6000600754821115611e74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6b906135bd565b60405180910390fd5b6000611e7e612141565b9050611e93818461216c90919063ffffffff16565b915050919050565b6001601360166101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611ed357611ed26135dd565b5b604051908082528060200260200182016040528015611f015781602001602082028036833780820191505090505b5090503081600081518110611f1957611f18613025565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fc0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fe49190613621565b81600181518110611ff857611ff7613025565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061205f30601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846113f2565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016120c3959493929190613747565b600060405180830381600087803b1580156120dd57600080fd5b505af11580156120f1573d6000803e3d6000fd5b50505050506000601360166101000a81548160ff02191690831515021790555050565b80612122576121216121b6565b5b61212d8484846121f3565b8061213b5761213a6123be565b5b50505050565b600080600061214e6123d2565b91509150612165818361216c90919063ffffffff16565b9250505090565b60006121ae83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612431565b905092915050565b6000600f541480156121ca57506000601054145b6121f157600f54600d81905550601054600e819055506000600f8190555060006010819055505b565b60008060008060008061220587612494565b95509550955095509550955061226386600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124fc90919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506122f885600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461254690919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612344816125a4565b61234e8483612661565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516123ab9190612a83565b60405180910390a3505050505050505050565b600d54600f81905550600e54601081905550565b60008060006007549050600067016345785d8a0000905061240667016345785d8a000060075461216c90919063ffffffff16565b8210156124245760075467016345785d8a000093509350505061242d565b81819350935050505b9091565b60008083118290612478576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246f91906128c4565b60405180910390fd5b506000838561248791906137d0565b9050809150509392505050565b60008060008060008060008060006124b18a600f5460105461269b565b92509250925060006124c1612141565b905060008060006124d48e878787612731565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061253e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d5d565b905092915050565b60008082846125559190613477565b90508381101561259a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125919061384d565b60405180910390fd5b8091505092915050565b60006125ae612141565b905060006125c582846127ba90919063ffffffff16565b905061261981600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461254690919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612676826007546124fc90919063ffffffff16565b60078190555061269181600c5461254690919063ffffffff16565b600c819055505050565b6000806000806126c760646126b9888a6127ba90919063ffffffff16565b61216c90919063ffffffff16565b905060006126f160646126e3888b6127ba90919063ffffffff16565b61216c90919063ffffffff16565b9050600061271a8261270c858c6124fc90919063ffffffff16565b6124fc90919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061274a85896127ba90919063ffffffff16565b9050600061276186896127ba90919063ffffffff16565b9050600061277887896127ba90919063ffffffff16565b905060006127a18261279385876124fc90919063ffffffff16565b6124fc90919063ffffffff16565b9050838184965096509650505050509450945094915050565b60008083036127cc576000905061282e565b600082846127da919061386d565b90508284826127e991906137d0565b14612829576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282090613921565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561286e578082015181840152602081019050612853565b60008484015250505050565b6000601f19601f8301169050919050565b600061289682612834565b6128a0818561283f565b93506128b0818560208601612850565b6128b98161287a565b840191505092915050565b600060208201905081810360008301526128de818461288b565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061291b826128f0565b9050919050565b61292b81612910565b811461293657600080fd5b50565b60008135905061294881612922565b92915050565b6000819050919050565b6129618161294e565b811461296c57600080fd5b50565b60008135905061297e81612958565b92915050565b6000806040838503121561299b5761299a6128e6565b5b60006129a985828601612939565b92505060206129ba8582860161296f565b9150509250929050565b60008115159050919050565b6129d9816129c4565b82525050565b60006020820190506129f460008301846129d0565b92915050565b6000819050919050565b6000612a1f612a1a612a15846128f0565b6129fa565b6128f0565b9050919050565b6000612a3182612a04565b9050919050565b6000612a4382612a26565b9050919050565b612a5381612a38565b82525050565b6000602082019050612a6e6000830184612a4a565b92915050565b612a7d8161294e565b82525050565b6000602082019050612a986000830184612a74565b92915050565b600080600060608486031215612ab757612ab66128e6565b5b6000612ac586828701612939565b9350506020612ad686828701612939565b9250506040612ae78682870161296f565b9150509250925092565b600060ff82169050919050565b612b0781612af1565b82525050565b6000602082019050612b226000830184612afe565b92915050565b612b31816129c4565b8114612b3c57600080fd5b50565b600081359050612b4e81612b28565b92915050565b600060208284031215612b6a57612b696128e6565b5b6000612b7884828501612b3f565b91505092915050565b612b8a81612910565b82525050565b6000602082019050612ba56000830184612b81565b92915050565b600060208284031215612bc157612bc06128e6565b5b6000612bcf84828501612939565b91505092915050565b600060208284031215612bee57612bed6128e6565b5b6000612bfc8482850161296f565b91505092915050565b60008060008060808587031215612c1f57612c1e6128e6565b5b6000612c2d8782880161296f565b9450506020612c3e8782880161296f565b9350506040612c4f8782880161296f565b9250506060612c608782880161296f565b91505092959194509250565b600080fd5b600080fd5b600080fd5b60008083601f840112612c9157612c90612c6c565b5b8235905067ffffffffffffffff811115612cae57612cad612c71565b5b602083019150836020820283011115612cca57612cc9612c76565b5b9250929050565b600080600060408486031215612cea57612ce96128e6565b5b600084013567ffffffffffffffff811115612d0857612d076128eb565b5b612d1486828701612c7b565b93509350506020612d2786828701612b3f565b9150509250925092565b60008060408385031215612d4857612d476128e6565b5b6000612d5685828601612939565b9250506020612d6785828601612939565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612da760208361283f565b9150612db282612d71565b602082019050919050565b60006020820190508181036000830152612dd681612d9a565b9050919050565b7f4275792072657761726473206d757374206265206265747765656e203025206160008201527f6e64203425000000000000000000000000000000000000000000000000000000602082015250565b6000612e3960258361283f565b9150612e4482612ddd565b604082019050919050565b60006020820190508181036000830152612e6881612e2c565b9050919050565b7f42757920746178206d757374206265206265747765656e20302520616e64203960008201527f3525000000000000000000000000000000000000000000000000000000000000602082015250565b6000612ecb60228361283f565b9150612ed682612e6f565b604082019050919050565b60006020820190508181036000830152612efa81612ebe565b9050919050565b7f53656c6c2072657761726473206d757374206265206265747765656e2030252060008201527f616e642034250000000000000000000000000000000000000000000000000000602082015250565b6000612f5d60268361283f565b9150612f6882612f01565b604082019050919050565b60006020820190508181036000830152612f8c81612f50565b9050919050565b7f53656c6c20746178206d757374206265206265747765656e20302520616e642060008201527f3935250000000000000000000000000000000000000000000000000000000000602082015250565b6000612fef60238361283f565b9150612ffa82612f93565b604082019050919050565b6000602082019050818103600083015261301e81612fe2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061308e8261294e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036130c0576130bf613054565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061312760268361283f565b9150613132826130cb565b604082019050919050565b600060208201905081810360008301526131568161311a565b9050919050565b7f43616e277420617070726f76652066726f6d207a65726f206164647265737300600082015250565b6000613193601f8361283f565b915061319e8261315d565b602082019050919050565b600060208201905081810360008301526131c281613186565b9050919050565b7f43616e277420617070726f766520746f207a65726f2061646472657373000000600082015250565b60006131ff601d8361283f565b915061320a826131c9565b602082019050919050565b6000602082019050818103600083015261322e816131f2565b9050919050565b7f43616e74207472616e736665722066726f6d2061646472657373207a65726f00600082015250565b600061326b601f8361283f565b915061327682613235565b602082019050919050565b6000602082019050818103600083015261329a8161325e565b9050919050565b7f43616e74207472616e7366657220746f2061646472657373207a65726f000000600082015250565b60006132d7601d8361283f565b91506132e2826132a1565b602082019050919050565b60006020820190508181036000830152613306816132ca565b9050919050565b7f416d6f756e742073686f756c642062652061626f7665207a65726f0000000000600082015250565b6000613343601b8361283f565b915061334e8261330d565b602082019050919050565b6000602082019050818103600083015261337281613336565b9050919050565b7f4f6e6c79206f776e65722063616e207472616465206265666f7265207472616460008201527f696e672061637469766174696f6e000000000000000000000000000000000000602082015250565b60006133d5602e8361283f565b91506133e082613379565b604082019050919050565b60006020820190508181036000830152613404816133c8565b9050919050565b7f4578636565646564206d6178207472616e73616374696f6e206c696d69740000600082015250565b6000613441601e8361283f565b915061344c8261340b565b602082019050919050565b6000602082019050818103600083015261347081613434565b9050919050565b60006134828261294e565b915061348d8361294e565b92508282019050808211156134a5576134a4613054565b5b92915050565b7f45786365656473206d61782077616c6c65742062616c616e6365000000000000600082015250565b60006134e1601a8361283f565b91506134ec826134ab565b602082019050919050565b60006020820190508181036000830152613510816134d4565b9050919050565b60006135228261294e565b915061352d8361294e565b925082820390508181111561354557613544613054565b5b92915050565b7f416d6f756e742068617320746f206265206c657373207468616e20746f74616c60008201527f207265666c656374696f6e730000000000000000000000000000000000000000602082015250565b60006135a7602c8361283f565b91506135b28261354b565b604082019050919050565b600060208201905081810360008301526135d68161359a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008151905061361b81612922565b92915050565b600060208284031215613637576136366128e6565b5b60006136458482850161360c565b91505092915050565b6000819050919050565b600061367361366e6136698461364e565b6129fa565b61294e565b9050919050565b61368381613658565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6136be81612910565b82525050565b60006136d083836136b5565b60208301905092915050565b6000602082019050919050565b60006136f482613689565b6136fe8185613694565b9350613709836136a5565b8060005b8381101561373a57815161372188826136c4565b975061372c836136dc565b92505060018101905061370d565b5085935050505092915050565b600060a08201905061375c6000830188612a74565b613769602083018761367a565b818103604083015261377b81866136e9565b905061378a6060830185612b81565b6137976080830184612a74565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006137db8261294e565b91506137e68361294e565b9250826137f6576137f56137a1565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613837601b8361283f565b915061384282613801565b602082019050919050565b600060208201905081810360008301526138668161382a565b9050919050565b60006138788261294e565b91506138838361294e565b92508282026138918161294e565b915082820484148315176138a8576138a7613054565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061390b60218361283f565b9150613916826138af565b604082019050919050565b6000602082019050818103600083015261393a816138fe565b905091905056fe746865207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212207a0e47cb787d2b8e277b97e17fd35e98580ee4f8630537db11115acf6ac98d0064736f6c63430008120033

Deployed Bytecode Sourcemap

4304:14090:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6976:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7508:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5678:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7067:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7916:443;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5976:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6885:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17048:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5726:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12589:224;;;;;;;;;;;;;:::i;:::-;;7170:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3860:148;;;;;;;;;;;;;:::i;:::-;;15588:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5866:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4626:42;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3646:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12480:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5920:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6790:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18090:162;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17156:882;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7709:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13273:221;;;;;;;;;;;;;:::i;:::-;;16299:260;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7316:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18260:131;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4016:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6976:83;7013:13;7046:5;;;;;;;;;;;;;;;;;7039:12;;6976:83;:::o;7508:193::-;7610:4;7632:39;7641:12;:10;:12::i;:::-;7655:7;7664:6;7632:8;:39::i;:::-;7689:4;7682:11;;7508:193;;;;:::o;5678:41::-;;;;;;;;;;;;;:::o;7067:95::-;7120:7;4906:19;7140:14;;7067:95;:::o;7916:443::-;8048:4;8065:36;8075:6;8083:9;8094:6;8065:9;:36::i;:::-;8112:217;8135:6;8156:12;:10;:12::i;:::-;8183:135;8239:6;8183:135;;;;;;;;;;;;;;;;;:11;:19;8195:6;8183:19;;;;;;;;;;;;;;;:33;8203:12;:10;:12::i;:::-;8183:33;;;;;;;;;;;;;;;;:37;;:135;;;;;:::i;:::-;8112:8;:217::i;:::-;8347:4;8340:11;;7916:443;;;;;:::o;5976:49::-;;;;:::o;6885:83::-;6926:5;4712:1;6944:16;;6885:83;:::o;17048:100::-;3783:12;:10;:12::i;:::-;3773:22;;:6;;;;;;;;;;:22;;;3765:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17130:10:::1;17118:9;;:22;;;;;;;;;;;;;;;;;;17048:100:::0;:::o;5726:28::-;;;;;;;;;;;;;:::o;12589:224::-;12669:17;;;;;;;;;;;12653:33;;:12;:10;:12::i;:::-;:33;;;12631:66;;;;;;12708:26;12737:21;12708:50;;12769:36;12786:18;12769:16;:36::i;:::-;12620:193;12589:224::o;7170:138::-;7236:7;7263:37;7283:7;:16;7291:7;7283:16;;;;;;;;;;;;;;;;7263:19;:37::i;:::-;7256:44;;7170:138;;;:::o;3860:148::-;3783:12;:10;:12::i;:::-;3773:22;;:6;;;;;;;;;;:22;;;3765:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3967:1:::1;3930:40;;3951:6;::::0;::::1;;;;;;;;3930:40;;;;;;;;;;;;3998:1;3981:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;3860:148::o:0;15588:124::-;3783:12;:10;:12::i;:::-;3773:22;;:6;;;;;;;;;;:22;;;3765:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15693:11:::1;15678:12;:26;;;;15588:124:::0;:::o;5866:47::-;;;;:::o;4626:42::-;;;;;;;;;;;;;;;;;:::o;3646:79::-;3684:7;3711:6;;;;;;;;;;;3704:13;;3646:79;:::o;12480:101::-;3783:12;:10;:12::i;:::-;3773:22;;:6;;;;;;;;;;:22;;;3765:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12561:12:::1;12547:11;;:26;;;;;;;;;;;;;;;;;;12480:101:::0;:::o;5920:49::-;;;;:::o;6790:87::-;6829:13;6862:7;;;;;;;;;;;;;;;;;6855:14;;6790:87;:::o;18090:162::-;3783:12;:10;:12::i;:::-;3773:22;;:6;;;;;;;;;;:22;;;3765:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18226:18:::1;18204:19;:40;;;;18090:162:::0;:::o;17156:882::-;3783:12;:10;:12::i;:::-;3773:22;;:6;;;;;;;;;;:22;;;3765:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17372:1:::1;17355:13;:18;;:40;;;;;17394:1;17377:13;:18;;17355:40;17333:127;;;;;;;;;;;;:::i;:::-;;;;;;;;;17508:1;17493:11;:16;;:37;;;;;17528:2;17513:11;:17;;17493:37;17471:121;;;;;;;;;;;;:::i;:::-;;;;;;;;;17643:1;17625:14;:19;;:42;;;;;17666:1;17648:14;:19;;17625:42;17603:130;;;;;;;;;;;;:::i;:::-;;;;;;;;;17782:1;17766:12;:17;;:39;;;;;17803:2;17787:12;:18;;17766:39;17744:124;;;;;;;;;;;;:::i;:::-;;;;;;;;;17898:13;17881:14;:30;;;;17940:14;17922:15;:32;;;;17980:11;17965:12;:26;;;;18018:12;18002:13;:28;;;;17156:882:::0;;;;:::o;7709:199::-;7814:4;7836:42;7846:12;:10;:12::i;:::-;7860:9;7871:6;7836:9;:42::i;:::-;7896:4;7889:11;;7709:199;;;;:::o;13273:221::-;13353:17;;;;;;;;;;;13337:33;;:12;:10;:12::i;:::-;:33;;;13315:66;;;;;;13392:23;13418:24;13436:4;13418:9;:24::i;:::-;13392:50;;13453:33;13470:15;13453:16;:33::i;:::-;13304:190;13273:221::o;16299:260::-;3783:12;:10;:12::i;:::-;3773:22;;:6;;;;;;;;;;:22;;;3765:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16442:9:::1;16437:115;16461:8;;:15;;16457:1;:19;16437:115;;;16532:8;16498:18;:31;16517:8;;16526:1;16517:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;16498:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;16478:3;;;;;:::i;:::-;;;;16437:115;;;;16299:260:::0;;;:::o;7316:184::-;7433:7;7465:11;:18;7477:5;7465:18;;;;;;;;;;;;;;;:27;7484:7;7465:27;;;;;;;;;;;;;;;;7458:34;;7316:184;;;;:::o;18260:131::-;3783:12;:10;:12::i;:::-;3773:22;;:6;;;;;;;;;;:22;;;3765:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18370:13:::1;18353:14;:30;;;;18260:131:::0;:::o;4016:281::-;3783:12;:10;:12::i;:::-;3773:22;;:6;;;;;;;;;;:22;;;3765:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4139:1:::1;4119:22;;:8;:22;;::::0;4097:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;4252:8;4223:38;;4244:6;::::0;::::1;;;;;;;;4223:38;;;;;;;;;;;;4281:8;4272:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;4016:281:::0;:::o;256:98::-;309:7;336:10;329:17;;256:98;:::o;9046:361::-;9190:1;9173:19;;:5;:19;;;9165:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;9266:1;9247:21;;:7;:21;;;9239:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;9345:6;9315:11;:18;9327:5;9315:18;;;;;;;;;;;;;;;:27;9334:7;9315:27;;;;;;;;;;;;;;;:36;;;;9383:7;9367:32;;9376:5;9367:32;;;9392:6;9367:32;;;;;;:::i;:::-;;;;;;;;9046:361;;;:::o;9415:2455::-;9553:1;9537:18;;:4;:18;;;9529:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;9624:1;9610:16;;:2;:16;;;9602:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;9688:1;9679:6;:10;9671:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;9746:7;:5;:7::i;:::-;9738:15;;:4;:15;;;;:32;;;;;9763:7;:5;:7::i;:::-;9757:13;;:2;:13;;;;9738:32;9734:1376;;;9825:11;;;;;;;;;;;9820:188;;9895:7;:5;:7::i;:::-;9887:15;;:4;:15;;;9857:135;;;;;;;;;;;;:::i;:::-;;;;;;;;;9820:188;10042:12;;10032:6;:22;;10024:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;10116:13;;;;;;;;;;;10110:19;;:2;:19;;;10106:199;;10205:14;;10196:6;10180:13;10190:2;10180:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10150:139;;;;;;;;;;;;:::i;:::-;;;;;;;;;10106:199;10321:28;10352:24;10370:4;10352:9;:24::i;:::-;10321:55;;10391:12;10430:19;;10406:20;:43;;10391:58;;10494:12;;10470:20;:36;10466:112;;10550:12;;10527:35;;10466:112;10616:7;:35;;;;;10645:6;;;;;;;;;;;10644:7;10616:35;:77;;;;;10680:13;;;;;;;;;;;10672:21;;:4;:21;;;;10616:77;:107;;;;;10714:9;;;;;;;;;;;10616:107;:153;;;;;10745:18;:24;10764:4;10745:24;;;;;;;;;;;;;;;;;;;;;;;;;10744:25;10616:153;:197;;;;;10791:18;:22;10810:2;10791:22;;;;;;;;;;;;;;;;;;;;;;;;;10790:23;10616:197;10594:505;;;10848:38;10865:20;10848:16;:38::i;:::-;10905:26;10934:21;10905:50;;10999:1;10978:18;:22;10974:110;;;11025:39;11042:21;11025:16;:39::i;:::-;10974:110;10829:270;10594:505;9772:1338;;9734:1376;11122:12;11137:4;11122:19;;11200:18;:24;11219:4;11200:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11228:18;:22;11247:2;11228:22;;;;;;;;;;;;;;;;;;;;;;;;;11200:50;11199:115;;;;11277:13;;;;;;;;;;;11269:21;;:4;:21;;;;:44;;;;;11300:13;;;;;;;;;;;11294:19;;:2;:19;;;;11269:44;11199:115;11181:628;;;11351:5;11341:15;;11181:628;;;11433:13;;;;;;;;;;;11425:21;;:4;:21;;;:55;;;;;11464:15;;;;;;;;;;;11450:30;;:2;:30;;;;11425:55;11421:163;;;11513:14;;11501:9;:26;;;;11556:12;;11546:7;:22;;;;11421:163;11643:13;;;;;;;;;;;11637:19;;:2;:19;;;:55;;;;;11676:15;;;;;;;;;;;11660:32;;:4;:32;;;;11637:55;11633:165;;;11725:15;;11713:9;:27;;;;11769:13;;11759:7;:23;;;;11633:165;11181:628;11821:41;11836:4;11842:2;11846:6;11854:7;11821:14;:41::i;:::-;9518:2352;9415:2455;;;:::o;2267:224::-;2387:7;2420:1;2415;:6;;2423:12;2407:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2447:9;2463:1;2459;:5;;;;:::i;:::-;2447:17;;2482:1;2475:8;;;2267:224;;;;;:::o;12369:103::-;12430:17;;;;;;;;;;;:26;;:34;12457:6;12430:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12369:103;:::o;8713:325::-;8808:7;8866;;8855;:18;;8833:112;;;;;;;;;;;;:::i;:::-;;;;;;;;;8956:19;8978:10;:8;:10::i;:::-;8956:32;;9006:24;9018:11;9006:7;:11;;:24;;;;:::i;:::-;8999:31;;;8713:325;;;:::o;11878:483::-;6132:4;6123:6;;:13;;;;;;;;;;;;;;;;;;11956:21:::1;11994:1;11980:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11956:40;;12025:4;12007;12012:1;12007:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;12051:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12041:4;12046:1;12041:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;12084:62;12101:4;12116:15;;;;;;;;;;;12134:11;12084:8;:62::i;:::-;12157:15;;;;;;;;;;;:66;;;12238:11;12264:1;12280:4;12307;12327:15;12157:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11945:416;6168:5:::0;6159:6;;:14;;;;;;;;;;;;;;;;;;11878:483;:::o;12985:280::-;13141:7;13136:26;;13150:12;:10;:12::i;:::-;13136:26;13173:48;13195:6;13203:9;13214:6;13173:21;:48::i;:::-;13237:7;13232:25;;13246:11;:9;:11::i;:::-;13232:25;12985:280;;;;:::o;16567:164::-;16609:7;16630:15;16647;16666:19;:17;:19::i;:::-;16629:56;;;;16703:20;16715:7;16703;:11;;:20;;;;:::i;:::-;16696:27;;;;16567:164;:::o;2753:132::-;2811:7;2838:39;2842:1;2845;2838:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2831:46;;2753:132;;;;:::o;8367:217::-;8425:1;8412:9;;:14;:30;;;;;8441:1;8430:7;;:12;8412:30;8444:7;8408:43;8483:9;;8463:17;:29;;;;8521:7;;8503:15;:25;;;;8553:1;8541:9;:13;;;;8575:1;8565:7;:11;;;;8367:217;:::o;13502:632::-;13653:15;13683:23;13721:12;13748:23;13786:12;13813:13;13840:22;13854:7;13840:13;:22::i;:::-;13638:224;;;;;;;;;;;;13891:28;13911:7;13891;:15;13899:6;13891:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13873:7;:15;13881:6;13873:15;;;;;;;;;;;;;;;:46;;;;13951:39;13974:15;13951:7;:18;13959:9;13951:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13930:7;:18;13938:9;13930:18;;;;;;;;;;;;;;;:60;;;;14001:22;14017:5;14001:15;:22::i;:::-;14034:32;14055:4;14061;14034:20;:32::i;:::-;14099:9;14082:44;;14091:6;14082:44;;;14110:15;14082:44;;;;;;:::i;:::-;;;;;;;;13627:507;;;;;;13502:632;;;:::o;8592:113::-;8644:17;;8632:9;:29;;;;8682:15;;8672:7;:25;;;;8592:113::o;16739:257::-;16790:7;16799;16819:15;16837:7;;16819:25;;16855:15;4906:19;16855:25;;16905:20;4906:19;16905:7;;:11;;:20;;;;:::i;:::-;16895:7;:30;16891:61;;;16935:7;;4906:19;16927:25;;;;;;;;16891:61;16971:7;16980;16963:25;;;;;;16739:257;;;:::o;2893:223::-;3013:7;3045:1;3041;:5;3048:12;3033:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3072:9;3088:1;3084;:5;;;;:::i;:::-;3072:17;;3107:1;3100:8;;;2893:223;;;;;:::o;14367:705::-;14470:7;14492;14514;14536;14558;14580;14616:23;14641:12;14655:13;14672:90;14698:7;14720:9;;14744:7;;14672:11;:90::i;:::-;14615:147;;;;;;14773:19;14795:10;:8;:10::i;:::-;14773:32;;14817:15;14834:23;14859:12;14875:109;14901:7;14923:4;14942:5;14962:11;14875;:109::i;:::-;14816:168;;;;;;15003:7;15012:15;15029:4;15035:15;15052:4;15058:5;14995:69;;;;;;;;;;;;;;;;;;;14367:705;;;;;;;:::o;2123:136::-;2181:7;2208:43;2212:1;2215;2208:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2201:50;;2123:136;;;;:::o;1936:179::-;1994:7;2014:9;2030:1;2026;:5;;;;:::i;:::-;2014:17;;2055:1;2050;:6;;2042:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2106:1;2099:8;;;1936:179;;;;:::o;14142:217::-;14201:19;14223:10;:8;:10::i;:::-;14201:32;;14244:13;14260:22;14270:11;14260:5;:9;;:22;;;;:::i;:::-;14244:38;;14318:33;14345:5;14318:7;:22;14334:4;14318:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14293:7;:22;14309:4;14293:22;;;;;;;;;;;;;;;:58;;;;14190:169;;14142:217;:::o;12821:156::-;12908:17;12920:4;12908:7;;:11;;:17;;;;:::i;:::-;12898:7;:27;;;;12949:20;12964:4;12949:10;;:14;;:20;;;;:::i;:::-;12936:10;:33;;;;12821:156;;:::o;15080:469::-;15249:7;15271;15293;15328:12;15343:30;15369:3;15343:21;15355:8;15343:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;15328:45;;15384:13;15400:28;15424:3;15400:19;15412:6;15400:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15384:44;;15439:23;15465:28;15487:5;15465:17;15477:4;15465:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15439:54;;15512:15;15529:4;15535:5;15504:37;;;;;;;;;15080:469;;;;;;;:::o;15757:534::-;15951:7;15973;15995;16030:15;16048:24;16060:11;16048:7;:11;;:24;;;;:::i;:::-;16030:42;;16083:12;16098:21;16107:11;16098:4;:8;;:21;;;;:::i;:::-;16083:36;;16130:13;16146:22;16156:11;16146:5;:9;;:22;;;;:::i;:::-;16130:38;;16179:23;16205:28;16227:5;16205:17;16217:4;16205:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16179:54;;16252:7;16261:15;16278:4;16244:39;;;;;;;;;;15757:534;;;;;;;;:::o;2499:246::-;2557:7;2586:1;2581;:6;2577:47;;2611:1;2604:8;;;;2577:47;2634:9;2650:1;2646;:5;;;;:::i;:::-;2634:17;;2679:1;2674;2670;:5;;;;:::i;:::-;:10;2662:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2736:1;2729:8;;;2499: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:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:60::-;3474:3;3495:5;3488:12;;3446:60;;;:::o;3512:142::-;3562:9;3595:53;3613:34;3622:24;3640:5;3622:24;:::i;:::-;3613:34;:::i;:::-;3595:53;:::i;:::-;3582:66;;3512:142;;;:::o;3660:126::-;3710:9;3743:37;3774:5;3743:37;:::i;:::-;3730:50;;3660:126;;;:::o;3792:152::-;3868:9;3901:37;3932:5;3901:37;:::i;:::-;3888:50;;3792:152;;;:::o;3950:183::-;4063:63;4120:5;4063:63;:::i;:::-;4058:3;4051:76;3950:183;;:::o;4139:274::-;4258:4;4296:2;4285:9;4281:18;4273:26;;4309:97;4403:1;4392:9;4388:17;4379:6;4309:97;:::i;:::-;4139:274;;;;:::o;4419:118::-;4506:24;4524:5;4506:24;:::i;:::-;4501:3;4494:37;4419:118;;:::o;4543:222::-;4636:4;4674:2;4663:9;4659:18;4651:26;;4687:71;4755:1;4744:9;4740:17;4731:6;4687:71;:::i;:::-;4543:222;;;;:::o;4771:619::-;4848:6;4856;4864;4913:2;4901:9;4892:7;4888:23;4884:32;4881:119;;;4919:79;;:::i;:::-;4881:119;5039:1;5064:53;5109:7;5100:6;5089:9;5085:22;5064:53;:::i;:::-;5054:63;;5010:117;5166:2;5192:53;5237:7;5228:6;5217:9;5213:22;5192:53;:::i;:::-;5182:63;;5137:118;5294:2;5320:53;5365:7;5356:6;5345:9;5341:22;5320:53;:::i;:::-;5310:63;;5265:118;4771:619;;;;;:::o;5396:86::-;5431:7;5471:4;5464:5;5460:16;5449:27;;5396:86;;;:::o;5488:112::-;5571:22;5587:5;5571:22;:::i;:::-;5566:3;5559:35;5488:112;;:::o;5606:214::-;5695:4;5733:2;5722:9;5718:18;5710:26;;5746:67;5810:1;5799:9;5795:17;5786:6;5746:67;:::i;:::-;5606:214;;;;:::o;5826:116::-;5896:21;5911:5;5896:21;:::i;:::-;5889:5;5886:32;5876:60;;5932:1;5929;5922:12;5876:60;5826:116;:::o;5948:133::-;5991:5;6029:6;6016:20;6007:29;;6045:30;6069:5;6045:30;:::i;:::-;5948:133;;;;:::o;6087:323::-;6143:6;6192:2;6180:9;6171:7;6167:23;6163:32;6160:119;;;6198:79;;:::i;:::-;6160:119;6318:1;6343:50;6385:7;6376:6;6365:9;6361:22;6343:50;:::i;:::-;6333:60;;6289:114;6087:323;;;;:::o;6416:118::-;6503:24;6521:5;6503:24;:::i;:::-;6498:3;6491:37;6416:118;;:::o;6540:222::-;6633:4;6671:2;6660:9;6656:18;6648:26;;6684:71;6752:1;6741:9;6737:17;6728:6;6684:71;:::i;:::-;6540:222;;;;:::o;6768:329::-;6827:6;6876:2;6864:9;6855:7;6851:23;6847:32;6844:119;;;6882:79;;:::i;:::-;6844:119;7002:1;7027:53;7072:7;7063:6;7052:9;7048:22;7027:53;:::i;:::-;7017:63;;6973:117;6768:329;;;;:::o;7103:::-;7162:6;7211:2;7199:9;7190:7;7186:23;7182:32;7179:119;;;7217:79;;:::i;:::-;7179:119;7337:1;7362:53;7407:7;7398:6;7387:9;7383:22;7362:53;:::i;:::-;7352:63;;7308:117;7103:329;;;;:::o;7438:765::-;7524:6;7532;7540;7548;7597:3;7585:9;7576:7;7572:23;7568:33;7565:120;;;7604:79;;:::i;:::-;7565:120;7724:1;7749:53;7794:7;7785:6;7774:9;7770:22;7749:53;:::i;:::-;7739:63;;7695:117;7851:2;7877:53;7922:7;7913:6;7902:9;7898:22;7877:53;:::i;:::-;7867:63;;7822:118;7979:2;8005:53;8050:7;8041:6;8030:9;8026:22;8005:53;:::i;:::-;7995:63;;7950:118;8107:2;8133:53;8178:7;8169:6;8158:9;8154:22;8133:53;:::i;:::-;8123:63;;8078:118;7438:765;;;;;;;:::o;8209:117::-;8318:1;8315;8308:12;8332:117;8441:1;8438;8431:12;8455:117;8564:1;8561;8554:12;8595:568;8668:8;8678:6;8728:3;8721:4;8713:6;8709:17;8705:27;8695:122;;8736:79;;:::i;:::-;8695:122;8849:6;8836:20;8826:30;;8879:18;8871:6;8868:30;8865:117;;;8901:79;;:::i;:::-;8865:117;9015:4;9007:6;9003:17;8991:29;;9069:3;9061:4;9053:6;9049:17;9039:8;9035:32;9032:41;9029:128;;;9076:79;;:::i;:::-;9029:128;8595:568;;;;;:::o;9169:698::-;9261:6;9269;9277;9326:2;9314:9;9305:7;9301:23;9297:32;9294:119;;;9332:79;;:::i;:::-;9294:119;9480:1;9469:9;9465:17;9452:31;9510:18;9502:6;9499:30;9496:117;;;9532:79;;:::i;:::-;9496:117;9645:80;9717:7;9708:6;9697:9;9693:22;9645:80;:::i;:::-;9627:98;;;;9423:312;9774:2;9800:50;9842:7;9833:6;9822:9;9818:22;9800:50;:::i;:::-;9790:60;;9745:115;9169:698;;;;;:::o;9873:474::-;9941:6;9949;9998:2;9986:9;9977:7;9973:23;9969:32;9966:119;;;10004:79;;:::i;:::-;9966:119;10124:1;10149:53;10194:7;10185:6;10174:9;10170:22;10149:53;:::i;:::-;10139:63;;10095:117;10251:2;10277:53;10322:7;10313:6;10302:9;10298:22;10277:53;:::i;:::-;10267:63;;10222:118;9873:474;;;;;:::o;10353:182::-;10493:34;10489:1;10481:6;10477:14;10470:58;10353:182;:::o;10541:366::-;10683:3;10704:67;10768:2;10763:3;10704:67;:::i;:::-;10697:74;;10780:93;10869:3;10780:93;:::i;:::-;10898:2;10893:3;10889:12;10882:19;;10541:366;;;:::o;10913:419::-;11079:4;11117:2;11106:9;11102:18;11094:26;;11166:9;11160:4;11156:20;11152:1;11141:9;11137:17;11130:47;11194:131;11320:4;11194:131;:::i;:::-;11186:139;;10913:419;;;:::o;11338:224::-;11478:34;11474:1;11466:6;11462:14;11455:58;11547:7;11542:2;11534:6;11530:15;11523:32;11338:224;:::o;11568:366::-;11710:3;11731:67;11795:2;11790:3;11731:67;:::i;:::-;11724:74;;11807:93;11896:3;11807:93;:::i;:::-;11925:2;11920:3;11916:12;11909:19;;11568:366;;;:::o;11940:419::-;12106:4;12144:2;12133:9;12129:18;12121:26;;12193:9;12187:4;12183:20;12179:1;12168:9;12164:17;12157:47;12221:131;12347:4;12221:131;:::i;:::-;12213:139;;11940:419;;;:::o;12365:221::-;12505:34;12501:1;12493:6;12489:14;12482:58;12574:4;12569:2;12561:6;12557:15;12550:29;12365:221;:::o;12592:366::-;12734:3;12755:67;12819:2;12814:3;12755:67;:::i;:::-;12748:74;;12831:93;12920:3;12831:93;:::i;:::-;12949:2;12944:3;12940:12;12933:19;;12592:366;;;:::o;12964:419::-;13130:4;13168:2;13157:9;13153:18;13145:26;;13217:9;13211:4;13207:20;13203:1;13192:9;13188:17;13181:47;13245:131;13371:4;13245:131;:::i;:::-;13237:139;;12964:419;;;:::o;13389:225::-;13529:34;13525:1;13517:6;13513:14;13506:58;13598:8;13593:2;13585:6;13581:15;13574:33;13389:225;:::o;13620:366::-;13762:3;13783:67;13847:2;13842:3;13783:67;:::i;:::-;13776:74;;13859:93;13948:3;13859:93;:::i;:::-;13977:2;13972:3;13968:12;13961:19;;13620:366;;;:::o;13992:419::-;14158:4;14196:2;14185:9;14181:18;14173:26;;14245:9;14239:4;14235:20;14231:1;14220:9;14216:17;14209:47;14273:131;14399:4;14273:131;:::i;:::-;14265:139;;13992:419;;;:::o;14417:222::-;14557:34;14553:1;14545:6;14541:14;14534:58;14626:5;14621:2;14613:6;14609:15;14602:30;14417:222;:::o;14645:366::-;14787:3;14808:67;14872:2;14867:3;14808:67;:::i;:::-;14801:74;;14884:93;14973:3;14884:93;:::i;:::-;15002:2;14997:3;14993:12;14986:19;;14645:366;;;:::o;15017:419::-;15183:4;15221:2;15210:9;15206:18;15198:26;;15270:9;15264:4;15260:20;15256:1;15245:9;15241:17;15234:47;15298:131;15424:4;15298:131;:::i;:::-;15290:139;;15017:419;;;:::o;15442:180::-;15490:77;15487:1;15480:88;15587:4;15584:1;15577:15;15611:4;15608:1;15601:15;15628:180;15676:77;15673:1;15666:88;15773:4;15770:1;15763:15;15797:4;15794:1;15787:15;15814:233;15853:3;15876:24;15894:5;15876:24;:::i;:::-;15867:33;;15922:66;15915:5;15912:77;15909:103;;15992:18;;:::i;:::-;15909:103;16039:1;16032:5;16028:13;16021:20;;15814:233;;;:::o;16053:225::-;16193:34;16189:1;16181:6;16177:14;16170:58;16262:8;16257:2;16249:6;16245:15;16238:33;16053:225;:::o;16284:366::-;16426:3;16447:67;16511:2;16506:3;16447:67;:::i;:::-;16440:74;;16523:93;16612:3;16523:93;:::i;:::-;16641:2;16636:3;16632:12;16625:19;;16284:366;;;:::o;16656:419::-;16822:4;16860:2;16849:9;16845:18;16837:26;;16909:9;16903:4;16899:20;16895:1;16884:9;16880:17;16873:47;16937:131;17063:4;16937:131;:::i;:::-;16929:139;;16656:419;;;:::o;17081:181::-;17221:33;17217:1;17209:6;17205:14;17198:57;17081:181;:::o;17268:366::-;17410:3;17431:67;17495:2;17490:3;17431:67;:::i;:::-;17424:74;;17507:93;17596:3;17507:93;:::i;:::-;17625:2;17620:3;17616:12;17609:19;;17268:366;;;:::o;17640:419::-;17806:4;17844:2;17833:9;17829:18;17821:26;;17893:9;17887:4;17883:20;17879:1;17868:9;17864:17;17857:47;17921:131;18047:4;17921:131;:::i;:::-;17913:139;;17640:419;;;:::o;18065:179::-;18205:31;18201:1;18193:6;18189:14;18182:55;18065:179;:::o;18250:366::-;18392:3;18413:67;18477:2;18472:3;18413:67;:::i;:::-;18406:74;;18489:93;18578:3;18489:93;:::i;:::-;18607:2;18602:3;18598:12;18591:19;;18250:366;;;:::o;18622:419::-;18788:4;18826:2;18815:9;18811:18;18803:26;;18875:9;18869:4;18865:20;18861:1;18850:9;18846:17;18839:47;18903:131;19029:4;18903:131;:::i;:::-;18895:139;;18622:419;;;:::o;19047:181::-;19187:33;19183:1;19175:6;19171:14;19164:57;19047:181;:::o;19234:366::-;19376:3;19397:67;19461:2;19456:3;19397:67;:::i;:::-;19390:74;;19473:93;19562:3;19473:93;:::i;:::-;19591:2;19586:3;19582:12;19575:19;;19234:366;;;:::o;19606:419::-;19772:4;19810:2;19799:9;19795:18;19787:26;;19859:9;19853:4;19849:20;19845:1;19834:9;19830:17;19823:47;19887:131;20013:4;19887:131;:::i;:::-;19879:139;;19606:419;;;:::o;20031:179::-;20171:31;20167:1;20159:6;20155:14;20148:55;20031:179;:::o;20216:366::-;20358:3;20379:67;20443:2;20438:3;20379:67;:::i;:::-;20372:74;;20455:93;20544:3;20455:93;:::i;:::-;20573:2;20568:3;20564:12;20557:19;;20216:366;;;:::o;20588:419::-;20754:4;20792:2;20781:9;20777:18;20769:26;;20841:9;20835:4;20831:20;20827:1;20816:9;20812:17;20805:47;20869:131;20995:4;20869:131;:::i;:::-;20861:139;;20588:419;;;:::o;21013:177::-;21153:29;21149:1;21141:6;21137:14;21130:53;21013:177;:::o;21196:366::-;21338:3;21359:67;21423:2;21418:3;21359:67;:::i;:::-;21352:74;;21435:93;21524:3;21435:93;:::i;:::-;21553:2;21548:3;21544:12;21537:19;;21196:366;;;:::o;21568:419::-;21734:4;21772:2;21761:9;21757:18;21749:26;;21821:9;21815:4;21811:20;21807:1;21796:9;21792:17;21785:47;21849:131;21975:4;21849:131;:::i;:::-;21841:139;;21568:419;;;:::o;21993:233::-;22133:34;22129:1;22121:6;22117:14;22110:58;22202:16;22197:2;22189:6;22185:15;22178:41;21993:233;:::o;22232:366::-;22374:3;22395:67;22459:2;22454:3;22395:67;:::i;:::-;22388:74;;22471:93;22560:3;22471:93;:::i;:::-;22589:2;22584:3;22580:12;22573:19;;22232:366;;;:::o;22604:419::-;22770:4;22808:2;22797:9;22793:18;22785:26;;22857:9;22851:4;22847:20;22843:1;22832:9;22828:17;22821:47;22885:131;23011:4;22885:131;:::i;:::-;22877:139;;22604:419;;;:::o;23029:180::-;23169:32;23165:1;23157:6;23153:14;23146:56;23029:180;:::o;23215:366::-;23357:3;23378:67;23442:2;23437:3;23378:67;:::i;:::-;23371:74;;23454:93;23543:3;23454:93;:::i;:::-;23572:2;23567:3;23563:12;23556:19;;23215:366;;;:::o;23587:419::-;23753:4;23791:2;23780:9;23776:18;23768:26;;23840:9;23834:4;23830:20;23826:1;23815:9;23811:17;23804:47;23868:131;23994:4;23868:131;:::i;:::-;23860:139;;23587:419;;;:::o;24012:191::-;24052:3;24071:20;24089:1;24071:20;:::i;:::-;24066:25;;24105:20;24123:1;24105:20;:::i;:::-;24100:25;;24148:1;24145;24141:9;24134:16;;24169:3;24166:1;24163:10;24160:36;;;24176:18;;:::i;:::-;24160:36;24012:191;;;;:::o;24209:176::-;24349:28;24345:1;24337:6;24333:14;24326:52;24209:176;:::o;24391:366::-;24533:3;24554:67;24618:2;24613:3;24554:67;:::i;:::-;24547:74;;24630:93;24719:3;24630:93;:::i;:::-;24748:2;24743:3;24739:12;24732:19;;24391:366;;;:::o;24763:419::-;24929:4;24967:2;24956:9;24952:18;24944:26;;25016:9;25010:4;25006:20;25002:1;24991:9;24987:17;24980:47;25044:131;25170:4;25044:131;:::i;:::-;25036:139;;24763:419;;;:::o;25188:194::-;25228:4;25248:20;25266:1;25248:20;:::i;:::-;25243:25;;25282:20;25300:1;25282:20;:::i;:::-;25277:25;;25326:1;25323;25319:9;25311:17;;25350:1;25344:4;25341:11;25338:37;;;25355:18;;:::i;:::-;25338:37;25188:194;;;;:::o;25388:231::-;25528:34;25524:1;25516:6;25512:14;25505:58;25597:14;25592:2;25584:6;25580:15;25573:39;25388:231;:::o;25625:366::-;25767:3;25788:67;25852:2;25847:3;25788:67;:::i;:::-;25781:74;;25864:93;25953:3;25864:93;:::i;:::-;25982:2;25977:3;25973:12;25966:19;;25625:366;;;:::o;25997:419::-;26163:4;26201:2;26190:9;26186:18;26178:26;;26250:9;26244:4;26240:20;26236:1;26225:9;26221:17;26214:47;26278:131;26404:4;26278:131;:::i;:::-;26270:139;;25997:419;;;:::o;26422:180::-;26470:77;26467:1;26460:88;26567:4;26564:1;26557:15;26591:4;26588:1;26581:15;26608:143;26665:5;26696:6;26690:13;26681:22;;26712:33;26739:5;26712:33;:::i;:::-;26608:143;;;;:::o;26757:351::-;26827:6;26876:2;26864:9;26855:7;26851:23;26847:32;26844:119;;;26882:79;;:::i;:::-;26844:119;27002:1;27027:64;27083:7;27074:6;27063:9;27059:22;27027:64;:::i;:::-;27017:74;;26973:128;26757:351;;;;:::o;27114:85::-;27159:7;27188:5;27177:16;;27114:85;;;:::o;27205:158::-;27263:9;27296:61;27314:42;27323:32;27349:5;27323:32;:::i;:::-;27314:42;:::i;:::-;27296:61;:::i;:::-;27283:74;;27205:158;;;:::o;27369:147::-;27464:45;27503:5;27464:45;:::i;:::-;27459:3;27452:58;27369:147;;:::o;27522:114::-;27589:6;27623:5;27617:12;27607:22;;27522:114;;;:::o;27642:184::-;27741:11;27775:6;27770:3;27763:19;27815:4;27810:3;27806:14;27791:29;;27642:184;;;;:::o;27832:132::-;27899:4;27922:3;27914:11;;27952:4;27947:3;27943:14;27935:22;;27832:132;;;:::o;27970:108::-;28047:24;28065:5;28047:24;:::i;:::-;28042:3;28035:37;27970:108;;:::o;28084:179::-;28153:10;28174:46;28216:3;28208:6;28174:46;:::i;:::-;28252:4;28247:3;28243:14;28229:28;;28084:179;;;;:::o;28269:113::-;28339:4;28371;28366:3;28362:14;28354:22;;28269:113;;;:::o;28418:732::-;28537:3;28566:54;28614:5;28566:54;:::i;:::-;28636:86;28715:6;28710:3;28636:86;:::i;:::-;28629:93;;28746:56;28796:5;28746:56;:::i;:::-;28825:7;28856:1;28841:284;28866:6;28863:1;28860:13;28841:284;;;28942:6;28936:13;28969:63;29028:3;29013:13;28969:63;:::i;:::-;28962:70;;29055:60;29108:6;29055:60;:::i;:::-;29045:70;;28901:224;28888:1;28885;28881:9;28876:14;;28841:284;;;28845:14;29141:3;29134:10;;28542:608;;;28418:732;;;;:::o;29156:831::-;29419:4;29457:3;29446:9;29442:19;29434:27;;29471:71;29539:1;29528:9;29524:17;29515:6;29471:71;:::i;:::-;29552:80;29628:2;29617:9;29613:18;29604:6;29552:80;:::i;:::-;29679:9;29673:4;29669:20;29664:2;29653:9;29649:18;29642:48;29707:108;29810:4;29801:6;29707:108;:::i;:::-;29699:116;;29825:72;29893:2;29882:9;29878:18;29869:6;29825:72;:::i;:::-;29907:73;29975:3;29964:9;29960:19;29951:6;29907:73;:::i;:::-;29156:831;;;;;;;;:::o;29993:180::-;30041:77;30038:1;30031:88;30138:4;30135:1;30128:15;30162:4;30159:1;30152:15;30179:185;30219:1;30236:20;30254:1;30236:20;:::i;:::-;30231:25;;30270:20;30288:1;30270:20;:::i;:::-;30265:25;;30309:1;30299:35;;30314:18;;:::i;:::-;30299:35;30356:1;30353;30349:9;30344:14;;30179:185;;;;:::o;30370:177::-;30510:29;30506:1;30498:6;30494:14;30487:53;30370:177;:::o;30553:366::-;30695:3;30716:67;30780:2;30775:3;30716:67;:::i;:::-;30709:74;;30792:93;30881:3;30792:93;:::i;:::-;30910:2;30905:3;30901:12;30894:19;;30553:366;;;:::o;30925:419::-;31091:4;31129:2;31118:9;31114:18;31106:26;;31178:9;31172:4;31168:20;31164:1;31153:9;31149:17;31142:47;31206:131;31332:4;31206:131;:::i;:::-;31198:139;;30925:419;;;:::o;31350:410::-;31390:7;31413:20;31431:1;31413:20;:::i;:::-;31408:25;;31447:20;31465:1;31447:20;:::i;:::-;31442:25;;31502:1;31499;31495:9;31524:30;31542:11;31524:30;:::i;:::-;31513:41;;31703:1;31694:7;31690:15;31687:1;31684:22;31664:1;31657:9;31637:83;31614:139;;31733:18;;:::i;:::-;31614:139;31398:362;31350:410;;;;:::o;31766:220::-;31906:34;31902:1;31894:6;31890:14;31883:58;31975:3;31970:2;31962:6;31958:15;31951:28;31766:220;:::o;31992:366::-;32134:3;32155:67;32219:2;32214:3;32155:67;:::i;:::-;32148:74;;32231:93;32320:3;32231:93;:::i;:::-;32349:2;32344:3;32340:12;32333:19;;31992:366;;;:::o;32364:419::-;32530:4;32568:2;32557:9;32553:18;32545:26;;32617:9;32611:4;32607:20;32603:1;32592:9;32588:17;32581:47;32645:131;32771:4;32645:131;:::i;:::-;32637:139;;32364:419;;;:::o

Swarm Source

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