ETH Price: $3,389.58 (+4.34%)
Gas: 2 Gwei

Token

Ancinet Inu (ANCIENT)
 

Overview

Max Total Supply

10,000,000,000,000 ANCIENT

Holders

64 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
38,616,567,618.105143863 ANCIENT

Value
$0.00
0x64774681a11cb38b6d2ebff00ae660bb6eece98d
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Fun-loving meme token which seeks to build up a big community.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
AncientInu

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-02-15
*/

/*

Ancient Inu

https://ancientinu.com

https://t.me/ancientinu

https://twitter.com/AncinetInuToken


*/

// SPDX-License-Identifier: Unlicensed

pragma solidity ^0.8.4;

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

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

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

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

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

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

contract AncientInu is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private bots;
    mapping(address => uint256) private cooldown;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 10000000000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;

    uint256 private _feeAddr1;
    uint256 private _feeAddr2;
    address payable private _feeAddrWallet1;
    address payable private _feeAddrWallet2;

    string private constant _name = "Ancinet Inu";
    string private constant _symbol = "ANCIENT";
    uint8 private constant _decimals = 9;

    IUniswapV2Router02 private uniswapV2Router;
    address public uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;
    bool private cooldownEnabled = false;
    bool private applyRestrictions = false;
    modifier lockTheSwap() {
        inSwap = true;
        _;
        inSwap = false;
    }

    /**
        Antibot params
    **/
    uint256 openTradingBlock;
    uint256 public maxTransactionAmount;
    uint256 public maxWallet;

    // exclude from fees and max transaction amount
    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) public _isExcludedMaxTransactionAmount;
    mapping(address => bool) public automatedMarketMakerPairs;

    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);

    constructor() payable {
        _feeAddrWallet1 = payable(0x53B83Bc6b79201f924251b0D935ddd0344D03afE);
        _feeAddrWallet2 = payable(0xCA01DC073C6B945f3ad11e9c1eedE8909B7f37c8);
        _rOwned[_msgSender()] = _rTotal;
        _isExcludedFromFees[owner()] = true;
        _isExcludedFromFees[address(this)] = true;
        _isExcludedFromFees[_feeAddrWallet1] = true;
        _isExcludedFromFees[_feeAddrWallet2] = true;
        emit Transfer(
            address(0x3BE2B9235D47D290c48bd520f0e05ac5b350a551),
            _msgSender(),
            _tTotal
        ); 
        maxTransactionAmount = ((10000000000000 * 10**9) * 5) / 100;
        maxWallet = ((10000000000000 * 10**9) * 10) / 100;
        _isExcludedMaxTransactionAmount[owner()] = true;
    }

    function setAutomatedMarketMakerPair(address pair, bool value)
        public
        onlyOwner
    {
        require(
            pair != uniswapV2Pair,
            "The pair cannot be removed from automatedMarketMakerPairs"
        );

        _setAutomatedMarketMakerPair(pair, value);
    }

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function excludeFromMaxTransaction(address updAds, bool isEx)
        public
        onlyOwner
    {
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }

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

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

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

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

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

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

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

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

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

    function setCooldownEnabled(bool onoff) external onlyOwner {
        cooldownEnabled = onoff;
    }

    function tokenFromReflection(uint256 rAmount)
        private
        view
        returns (uint256)
    {
        require(
            rAmount <= _rTotal,
            "Amount must 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), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    event TransferCustom(
        address from,
        address to,
        uint256 amount,
        uint256 maxWallet,
        uint256 maxTransactionAmount
    );

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        if (applyRestrictions) {
            require(!bots[from] && !bots[to]);
            _feeAddr1 = 0;
            _feeAddr2 = 10;
            if (from != owner() && to != owner()) {
                // if (
                //     from == uniswapV2Pair &&
                //     to != address(uniswapV2Router) &&
                //     !_isExcludedFromFees[to] &&
                //     cooldownEnabled
                // ) {
                //     // Cooldown
                //     // require(amount <= _maxTxAmount);
                //     require(cooldown[to] < block.timestamp);
                //     cooldown[to] = block.timestamp + (30 seconds);
                // }

                // when buy
                if (
                    automatedMarketMakerPairs[from] &&
                    // from == uniswapV2Pair &&
                    !_isExcludedMaxTransactionAmount[to]
                ) {
                    require(
                        amount <= maxTransactionAmount,
                        "Buy transfer amount exceeds the maxTransactionAmount."
                    );
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max wallet exceeded"
                    );
                }
                // when sell
                else if (
                    automatedMarketMakerPairs[to] &&
                    // to == uniswapV2Pair &&
                    !_isExcludedMaxTransactionAmount[from]
                ) {
                    require(
                        amount <= maxTransactionAmount,
                        "Sell transfer amount exceeds the maxTransactionAmount."
                    );
                } else if (!_isExcludedMaxTransactionAmount[to]) {
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max wallet exceeded"
                    );
                }

                if (
                    to == uniswapV2Pair &&
                    from != address(uniswapV2Router) &&
                    !_isExcludedFromFees[from]
                ) {
                    _feeAddr1 = 0;
                    _feeAddr2 = 10;
                }

                uint256 contractTokenBalance = balanceOf(address(this));
                if (!inSwap && from != uniswapV2Pair && swapEnabled) {
                    swapTokensForEth(contractTokenBalance);
                    uint256 contractETHBalance = address(this).balance;
                    if (contractETHBalance > 0) {
                        sendETHToFee(address(this).balance);
                    }
                }

                /**
                Antibot logic
            **/
                if (
                    block.number <= (openTradingBlock + 2) &&
                    to != uniswapV2Pair &&
                    to != address(uniswapV2Router)
                ) {
                    bots[to] = true;
                }
            }
        }

        emit TransferCustom(from, to, amount, maxWallet, maxTransactionAmount);
        _tokenTransfer(from, to, amount);
    }

    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 sendETH899ToFee(uint256 amount) private {}

    function sendETHToFee(uint256 amount) private {
        _feeAddrWallet1.transfer(amount.div(2));
        _feeAddrWallet2.transfer(amount.div(2));
    }

    function openTrading() external onlyOwner {
        require(!tradingOpen, "trading is already open");
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );
        uniswapV2Router = _uniswapV2Router;
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            owner(),
            block.timestamp
        );
        swapEnabled = true;
        cooldownEnabled = true;
        tradingOpen = true;
        IERC20(uniswapV2Pair).approve(
            address(uniswapV2Router),
            type(uint256).max
        );
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);
        openTradingBlock = block.number;
        applyRestrictions = true;
    }

    function setBots(address[] memory bots_) public onlyOwner {
        for (uint256 i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }

    function delBot(address notbot) public onlyOwner {
        bots[notbot] = false;
    }

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount
    ) private {
        _transferStandard(sender, recipient, amount);
    }

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

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

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

    receive() external payable {}

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

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

    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getTValues(
            tAmount,
            _feeAddr1,
            _feeAddr2
        );
        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 taxFee,
        uint256 TeamFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(taxFee).div(100);
        uint256 tTeam = tAmount.mul(TeamFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }

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

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

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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"maxWallet","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"maxTransactionAmount","type":"uint256"}],"name":"TransferCustom","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"notbot","type":"address"}],"name":"delBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"setBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setCooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405269021e19e0c9bab24000006000196200001e9190620005c3565b6000196200002d91906200057e565b6007556000600e60156101000a81548160ff0219169083151502179055506000600e60166101000a81548160ff0219169083151502179055506000600e60176101000a81548160ff0219169083151502179055506000600e60186101000a81548160ff0219169083151502179055506000620000ae6200051f60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3507353b83bc6b79201f924251b0d935ddd0344d03afe600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073ca01dc073c6b945f3ad11e9c1eede8909b7f37c8600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600754600260006200020d6200051f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160126000620002616200052760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160126000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160126000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200040e6200051f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16733be2b9235d47d290c48bd520f0e05ac5b350a55173ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef69021e19e0c9bab24000006040516200048a919062000561565b60405180910390a3681b1ae4d6e2ef500000601081905550683635c9adc5dea00000601181905550600160136000620004c86200052760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000659565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6200055b81620005b9565b82525050565b600060208201905062000578600083018462000550565b92915050565b60006200058b82620005b9565b91506200059883620005b9565b925082821015620005ae57620005ad620005fb565b5b828203905092915050565b6000819050919050565b6000620005d082620005b9565b9150620005dd83620005b9565b925082620005f057620005ef6200062a565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b613dbe80620006696000396000f3fe60806040526004361061014f5760003560e01c80637571336a116100b6578063b62496f51161006f578063b62496f514610489578063c3c8cd80146104c6578063c8c8ebe4146104dd578063c9567bf914610508578063dd62ed3e1461051f578063f8b45b051461055c57610156565b80637571336a1461037b5780638da5cb5b146103a457806395d89b41146103cf5780639a7a23d6146103fa578063a9059cbb14610423578063b515566a1461046057610156565b8063313ce56711610108578063313ce5671461029157806349bd5a5e146102bc5780635932ead1146102e75780636fc3eaec1461031057806370a0823114610327578063715018a61461036457610156565b806306fdde031461015b578063095ea7b31461018657806310d5de53146101c357806318160ddd1461020057806323b872dd1461022b578063273123b71461026857610156565b3661015657005b600080fd5b34801561016757600080fd5b50610170610587565b60405161017d919061333f565b60405180910390f35b34801561019257600080fd5b506101ad60048036038101906101a89190612dda565b6105c4565b6040516101ba9190613324565b60405180910390f35b3480156101cf57600080fd5b506101ea60048036038101906101e59190612cad565b6105e2565b6040516101f79190613324565b60405180910390f35b34801561020c57600080fd5b50610215610602565b6040516102229190613521565b60405180910390f35b34801561023757600080fd5b50610252600480360381019061024d9190612d47565b610614565b60405161025f9190613324565b60405180910390f35b34801561027457600080fd5b5061028f600480360381019061028a9190612cad565b6106ed565b005b34801561029d57600080fd5b506102a66107dd565b6040516102b39190613596565b60405180910390f35b3480156102c857600080fd5b506102d16107e6565b6040516102de9190613203565b60405180910390f35b3480156102f357600080fd5b5061030e60048036038101906103099190612e63565b61080c565b005b34801561031c57600080fd5b506103256108be565b005b34801561033357600080fd5b5061034e60048036038101906103499190612cad565b610930565b60405161035b9190613521565b60405180910390f35b34801561037057600080fd5b50610379610981565b005b34801561038757600080fd5b506103a2600480360381019061039d9190612d9a565b610ad4565b005b3480156103b057600080fd5b506103b9610bc4565b6040516103c69190613203565b60405180910390f35b3480156103db57600080fd5b506103e4610bed565b6040516103f1919061333f565b60405180910390f35b34801561040657600080fd5b50610421600480360381019061041c9190612d9a565b610c2a565b005b34801561042f57600080fd5b5061044a60048036038101906104459190612dda565b610d5e565b6040516104579190613324565b60405180910390f35b34801561046c57600080fd5b5061048760048036038101906104829190612e1a565b610d7c565b005b34801561049557600080fd5b506104b060048036038101906104ab9190612cad565b610ea6565b6040516104bd9190613324565b60405180910390f35b3480156104d257600080fd5b506104db610ec6565b005b3480156104e957600080fd5b506104f2610f40565b6040516104ff9190613521565b60405180910390f35b34801561051457600080fd5b5061051d610f46565b005b34801561052b57600080fd5b5061054660048036038101906105419190612d07565b6114e3565b6040516105539190613521565b60405180910390f35b34801561056857600080fd5b5061057161156a565b60405161057e9190613521565b60405180910390f35b60606040518060400160405280600b81526020017f416e63696e657420496e75000000000000000000000000000000000000000000815250905090565b60006105d86105d1611570565b8484611578565b6001905092915050565b60136020528060005260406000206000915054906101000a900460ff1681565b600069021e19e0c9bab2400000905090565b6000610621848484611743565b6106e28461062d611570565b6106dd85604051806060016040528060288152602001613d6160289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610693611570565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611fe29092919063ffffffff16565b611578565b600190509392505050565b6106f5611570565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610782576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077990613461565b60405180910390fd5b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006009905090565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610814611570565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089890613461565b60405180910390fd5b80600e60176101000a81548160ff02191690831515021790555050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108ff611570565b73ffffffffffffffffffffffffffffffffffffffff161461091f57600080fd5b600047905061092d81612046565b50565b600061097a600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612141565b9050919050565b610989611570565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0d90613461565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610adc611570565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6090613461565b60405180910390fd5b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600781526020017f414e4349454e5400000000000000000000000000000000000000000000000000815250905090565b610c32611570565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb690613461565b60405180910390fd5b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d47906133e1565b60405180910390fd5b610d5a82826121af565b5050565b6000610d72610d6b611570565b8484611743565b6001905092915050565b610d84611570565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0890613461565b60405180910390fd5b60005b8151811015610ea257600160056000848481518110610e3657610e356138de565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610e9a90613837565b915050610e14565b5050565b60146020528060005260406000206000915054906101000a900460ff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f07611570565b73ffffffffffffffffffffffffffffffffffffffff1614610f2757600080fd5b6000610f3230610930565b9050610f3d81612250565b50565b60105481565b610f4e611570565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd290613461565b60405180910390fd5b600e60149054906101000a900460ff161561102b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611022906134e1565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506110bc30600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1669021e19e0c9bab2400000611578565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561110257600080fd5b505afa158015611116573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061113a9190612cda565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561119c57600080fd5b505afa1580156111b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d49190612cda565b6040518363ffffffff1660e01b81526004016111f192919061321e565b602060405180830381600087803b15801561120b57600080fd5b505af115801561121f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112439190612cda565b600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306112cc30610930565b6000806112d7610bc4565b426040518863ffffffff1660e01b81526004016112f9969594939291906132c3565b6060604051808303818588803b15801561131257600080fd5b505af1158015611326573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061134b9190612ebd565b5050506001600e60166101000a81548160ff0219169083151502179055506001600e60176101000a81548160ff0219169083151502179055506001600e60146101000a81548160ff021916908315150217905550600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161143e92919061329a565b602060405180830381600087803b15801561145857600080fd5b505af115801561146c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114909190612e90565b506114be600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016121af565b43600f819055506001600e60186101000a81548160ff02191690831515021790555050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60115481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156115e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115df906134c1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611658576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164f906133a1565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117369190613521565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156117b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117aa906134a1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611823576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181a90613361565b60405180910390fd5b60008111611866576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185d90613481565b60405180910390fd5b600e60189054906101000a900460ff1615611f8f57600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561191f5750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61192857600080fd5b6000600981905550600a808190555061193f610bc4565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156119ad575061197d610bc4565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611f8e57601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611a555750601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611afc57601054811115611a9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9690613421565b60405180910390fd5b601154611aab83610930565b82611ab69190613657565b1115611af7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aee90613501565b60405180910390fd5b611c9a565b601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611b9f5750601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611bee57601054811115611be9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be090613401565b60405180910390fd5b611c99565b601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611c9857601154611c4b83610930565b82611c569190613657565b1115611c97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8e90613501565b60405180910390fd5b5b5b5b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015611d455750600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611d9b5750601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611db0576000600981905550600a80819055505b6000611dbb30610930565b9050600e60159054906101000a900460ff16158015611e285750600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611e405750600e60169054906101000a900460ff165b15611e6857611e4e81612250565b60004790506000811115611e6657611e6547612046565b5b505b6002600f54611e779190613657565b4311158015611ed45750600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611f2e5750600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611f8c576001600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b505b5b7f5f2b8cb8801e5fabb93d63ca9ecdac72b431dd2aa62a0b71e67c336154b99331838383601154601054604051611fca959493929190613247565b60405180910390a1611fdd8383836124d8565b505050565b600083831115829061202a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612021919061333f565b60405180910390fd5b50600083856120399190613738565b9050809150509392505050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6120966002846124e890919063ffffffff16565b9081150290604051600060405180830381858888f193505050501580156120c1573d6000803e3d6000fd5b50600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6121126002846124e890919063ffffffff16565b9081150290604051600060405180830381858888f1935050505015801561213d573d6000803e3d6000fd5b5050565b6000600754821115612188576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217f90613381565b60405180910390fd5b6000612192612532565b90506121a781846124e890919063ffffffff16565b915050919050565b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6001600e60156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156122885761228761390d565b5b6040519080825280602002602001820160405280156122b65781602001602082028036833780820191505090505b50905030816000815181106122ce576122cd6138de565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561237057600080fd5b505afa158015612384573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123a89190612cda565b816001815181106123bc576123bb6138de565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061242330600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611578565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161248795949392919061353c565b600060405180830381600087803b1580156124a157600080fd5b505af11580156124b5573d6000803e3d6000fd5b50505050506000600e60156101000a81548160ff02191690831515021790555050565b6124e383838361255d565b505050565b600061252a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612728565b905092915050565b600080600061253f61278b565b9150915061255681836124e890919063ffffffff16565b9250505090565b60008060008060008061256f876127f0565b9550955095509550955095506125cd86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461285890919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061266285600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128a290919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506126ae81612900565b6126b884836129bd565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516127159190613521565b60405180910390a3505050505050505050565b6000808311829061276f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612766919061333f565b60405180910390fd5b506000838561277e91906136ad565b9050809150509392505050565b60008060006007549050600069021e19e0c9bab240000090506127c369021e19e0c9bab24000006007546124e890919063ffffffff16565b8210156127e35760075469021e19e0c9bab24000009350935050506127ec565b81819350935050505b9091565b600080600080600080600080600061280d8a600954600a546129f7565b925092509250600061281d612532565b905060008060006128308e878787612a8d565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061289a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611fe2565b905092915050565b60008082846128b19190613657565b9050838110156128f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128ed906133c1565b60405180910390fd5b8091505092915050565b600061290a612532565b905060006129218284612b1690919063ffffffff16565b905061297581600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128a290919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6129d28260075461285890919063ffffffff16565b6007819055506129ed816008546128a290919063ffffffff16565b6008819055505050565b600080600080612a236064612a15888a612b1690919063ffffffff16565b6124e890919063ffffffff16565b90506000612a4d6064612a3f888b612b1690919063ffffffff16565b6124e890919063ffffffff16565b90506000612a7682612a68858c61285890919063ffffffff16565b61285890919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612aa68589612b1690919063ffffffff16565b90506000612abd8689612b1690919063ffffffff16565b90506000612ad48789612b1690919063ffffffff16565b90506000612afd82612aef858761285890919063ffffffff16565b61285890919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080831415612b295760009050612b8b565b60008284612b3791906136de565b9050828482612b4691906136ad565b14612b86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b7d90613441565b60405180910390fd5b809150505b92915050565b6000612ba4612b9f846135d6565b6135b1565b90508083825260208201905082856020860282011115612bc757612bc6613941565b5b60005b85811015612bf75781612bdd8882612c01565b845260208401935060208301925050600181019050612bca565b5050509392505050565b600081359050612c1081613d1b565b92915050565b600081519050612c2581613d1b565b92915050565b600082601f830112612c4057612c3f61393c565b5b8135612c50848260208601612b91565b91505092915050565b600081359050612c6881613d32565b92915050565b600081519050612c7d81613d32565b92915050565b600081359050612c9281613d49565b92915050565b600081519050612ca781613d49565b92915050565b600060208284031215612cc357612cc261394b565b5b6000612cd184828501612c01565b91505092915050565b600060208284031215612cf057612cef61394b565b5b6000612cfe84828501612c16565b91505092915050565b60008060408385031215612d1e57612d1d61394b565b5b6000612d2c85828601612c01565b9250506020612d3d85828601612c01565b9150509250929050565b600080600060608486031215612d6057612d5f61394b565b5b6000612d6e86828701612c01565b9350506020612d7f86828701612c01565b9250506040612d9086828701612c83565b9150509250925092565b60008060408385031215612db157612db061394b565b5b6000612dbf85828601612c01565b9250506020612dd085828601612c59565b9150509250929050565b60008060408385031215612df157612df061394b565b5b6000612dff85828601612c01565b9250506020612e1085828601612c83565b9150509250929050565b600060208284031215612e3057612e2f61394b565b5b600082013567ffffffffffffffff811115612e4e57612e4d613946565b5b612e5a84828501612c2b565b91505092915050565b600060208284031215612e7957612e7861394b565b5b6000612e8784828501612c59565b91505092915050565b600060208284031215612ea657612ea561394b565b5b6000612eb484828501612c6e565b91505092915050565b600080600060608486031215612ed657612ed561394b565b5b6000612ee486828701612c98565b9350506020612ef586828701612c98565b9250506040612f0686828701612c98565b9150509250925092565b6000612f1c8383612f28565b60208301905092915050565b612f318161376c565b82525050565b612f408161376c565b82525050565b6000612f5182613612565b612f5b8185613635565b9350612f6683613602565b8060005b83811015612f97578151612f7e8882612f10565b9750612f8983613628565b925050600181019050612f6a565b5085935050505092915050565b612fad8161377e565b82525050565b612fbc816137c1565b82525050565b6000612fcd8261361d565b612fd78185613646565b9350612fe78185602086016137d3565b612ff081613950565b840191505092915050565b6000613008602383613646565b915061301382613961565b604082019050919050565b600061302b602a83613646565b9150613036826139b0565b604082019050919050565b600061304e602283613646565b9150613059826139ff565b604082019050919050565b6000613071601b83613646565b915061307c82613a4e565b602082019050919050565b6000613094603983613646565b915061309f82613a77565b604082019050919050565b60006130b7603683613646565b91506130c282613ac6565b604082019050919050565b60006130da603583613646565b91506130e582613b15565b604082019050919050565b60006130fd602183613646565b915061310882613b64565b604082019050919050565b6000613120602083613646565b915061312b82613bb3565b602082019050919050565b6000613143602983613646565b915061314e82613bdc565b604082019050919050565b6000613166602583613646565b915061317182613c2b565b604082019050919050565b6000613189602483613646565b915061319482613c7a565b604082019050919050565b60006131ac601783613646565b91506131b782613cc9565b602082019050919050565b60006131cf601383613646565b91506131da82613cf2565b602082019050919050565b6131ee816137aa565b82525050565b6131fd816137b4565b82525050565b60006020820190506132186000830184612f37565b92915050565b60006040820190506132336000830185612f37565b6132406020830184612f37565b9392505050565b600060a08201905061325c6000830188612f37565b6132696020830187612f37565b61327660408301866131e5565b61328360608301856131e5565b61329060808301846131e5565b9695505050505050565b60006040820190506132af6000830185612f37565b6132bc60208301846131e5565b9392505050565b600060c0820190506132d86000830189612f37565b6132e560208301886131e5565b6132f26040830187612fb3565b6132ff6060830186612fb3565b61330c6080830185612f37565b61331960a08301846131e5565b979650505050505050565b60006020820190506133396000830184612fa4565b92915050565b600060208201905081810360008301526133598184612fc2565b905092915050565b6000602082019050818103600083015261337a81612ffb565b9050919050565b6000602082019050818103600083015261339a8161301e565b9050919050565b600060208201905081810360008301526133ba81613041565b9050919050565b600060208201905081810360008301526133da81613064565b9050919050565b600060208201905081810360008301526133fa81613087565b9050919050565b6000602082019050818103600083015261341a816130aa565b9050919050565b6000602082019050818103600083015261343a816130cd565b9050919050565b6000602082019050818103600083015261345a816130f0565b9050919050565b6000602082019050818103600083015261347a81613113565b9050919050565b6000602082019050818103600083015261349a81613136565b9050919050565b600060208201905081810360008301526134ba81613159565b9050919050565b600060208201905081810360008301526134da8161317c565b9050919050565b600060208201905081810360008301526134fa8161319f565b9050919050565b6000602082019050818103600083015261351a816131c2565b9050919050565b600060208201905061353660008301846131e5565b92915050565b600060a08201905061355160008301886131e5565b61355e6020830187612fb3565b81810360408301526135708186612f46565b905061357f6060830185612f37565b61358c60808301846131e5565b9695505050505050565b60006020820190506135ab60008301846131f4565b92915050565b60006135bb6135cc565b90506135c78282613806565b919050565b6000604051905090565b600067ffffffffffffffff8211156135f1576135f061390d565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000613662826137aa565b915061366d836137aa565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156136a2576136a1613880565b5b828201905092915050565b60006136b8826137aa565b91506136c3836137aa565b9250826136d3576136d26138af565b5b828204905092915050565b60006136e9826137aa565b91506136f4836137aa565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561372d5761372c613880565b5b828202905092915050565b6000613743826137aa565b915061374e836137aa565b92508282101561376157613760613880565b5b828203905092915050565b60006137778261378a565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006137cc826137aa565b9050919050565b60005b838110156137f15780820151818401526020810190506137d6565b83811115613800576000848401525b50505050565b61380f82613950565b810181811067ffffffffffffffff8211171561382e5761382d61390d565b5b80604052505050565b6000613842826137aa565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561387557613874613880565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b613d248161376c565b8114613d2f57600080fd5b50565b613d3b8161377e565b8114613d4657600080fd5b50565b613d52816137aa565b8114613d5d57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122029ffc8896562f545e76664e7439492c2c43dafcafe01d3c38d258ff52fad4ca964736f6c63430008070033

Deployed Bytecode

0x60806040526004361061014f5760003560e01c80637571336a116100b6578063b62496f51161006f578063b62496f514610489578063c3c8cd80146104c6578063c8c8ebe4146104dd578063c9567bf914610508578063dd62ed3e1461051f578063f8b45b051461055c57610156565b80637571336a1461037b5780638da5cb5b146103a457806395d89b41146103cf5780639a7a23d6146103fa578063a9059cbb14610423578063b515566a1461046057610156565b8063313ce56711610108578063313ce5671461029157806349bd5a5e146102bc5780635932ead1146102e75780636fc3eaec1461031057806370a0823114610327578063715018a61461036457610156565b806306fdde031461015b578063095ea7b31461018657806310d5de53146101c357806318160ddd1461020057806323b872dd1461022b578063273123b71461026857610156565b3661015657005b600080fd5b34801561016757600080fd5b50610170610587565b60405161017d919061333f565b60405180910390f35b34801561019257600080fd5b506101ad60048036038101906101a89190612dda565b6105c4565b6040516101ba9190613324565b60405180910390f35b3480156101cf57600080fd5b506101ea60048036038101906101e59190612cad565b6105e2565b6040516101f79190613324565b60405180910390f35b34801561020c57600080fd5b50610215610602565b6040516102229190613521565b60405180910390f35b34801561023757600080fd5b50610252600480360381019061024d9190612d47565b610614565b60405161025f9190613324565b60405180910390f35b34801561027457600080fd5b5061028f600480360381019061028a9190612cad565b6106ed565b005b34801561029d57600080fd5b506102a66107dd565b6040516102b39190613596565b60405180910390f35b3480156102c857600080fd5b506102d16107e6565b6040516102de9190613203565b60405180910390f35b3480156102f357600080fd5b5061030e60048036038101906103099190612e63565b61080c565b005b34801561031c57600080fd5b506103256108be565b005b34801561033357600080fd5b5061034e60048036038101906103499190612cad565b610930565b60405161035b9190613521565b60405180910390f35b34801561037057600080fd5b50610379610981565b005b34801561038757600080fd5b506103a2600480360381019061039d9190612d9a565b610ad4565b005b3480156103b057600080fd5b506103b9610bc4565b6040516103c69190613203565b60405180910390f35b3480156103db57600080fd5b506103e4610bed565b6040516103f1919061333f565b60405180910390f35b34801561040657600080fd5b50610421600480360381019061041c9190612d9a565b610c2a565b005b34801561042f57600080fd5b5061044a60048036038101906104459190612dda565b610d5e565b6040516104579190613324565b60405180910390f35b34801561046c57600080fd5b5061048760048036038101906104829190612e1a565b610d7c565b005b34801561049557600080fd5b506104b060048036038101906104ab9190612cad565b610ea6565b6040516104bd9190613324565b60405180910390f35b3480156104d257600080fd5b506104db610ec6565b005b3480156104e957600080fd5b506104f2610f40565b6040516104ff9190613521565b60405180910390f35b34801561051457600080fd5b5061051d610f46565b005b34801561052b57600080fd5b5061054660048036038101906105419190612d07565b6114e3565b6040516105539190613521565b60405180910390f35b34801561056857600080fd5b5061057161156a565b60405161057e9190613521565b60405180910390f35b60606040518060400160405280600b81526020017f416e63696e657420496e75000000000000000000000000000000000000000000815250905090565b60006105d86105d1611570565b8484611578565b6001905092915050565b60136020528060005260406000206000915054906101000a900460ff1681565b600069021e19e0c9bab2400000905090565b6000610621848484611743565b6106e28461062d611570565b6106dd85604051806060016040528060288152602001613d6160289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610693611570565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611fe29092919063ffffffff16565b611578565b600190509392505050565b6106f5611570565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610782576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077990613461565b60405180910390fd5b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006009905090565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610814611570565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089890613461565b60405180910390fd5b80600e60176101000a81548160ff02191690831515021790555050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108ff611570565b73ffffffffffffffffffffffffffffffffffffffff161461091f57600080fd5b600047905061092d81612046565b50565b600061097a600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612141565b9050919050565b610989611570565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0d90613461565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610adc611570565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6090613461565b60405180910390fd5b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600781526020017f414e4349454e5400000000000000000000000000000000000000000000000000815250905090565b610c32611570565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb690613461565b60405180910390fd5b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d47906133e1565b60405180910390fd5b610d5a82826121af565b5050565b6000610d72610d6b611570565b8484611743565b6001905092915050565b610d84611570565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0890613461565b60405180910390fd5b60005b8151811015610ea257600160056000848481518110610e3657610e356138de565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610e9a90613837565b915050610e14565b5050565b60146020528060005260406000206000915054906101000a900460ff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f07611570565b73ffffffffffffffffffffffffffffffffffffffff1614610f2757600080fd5b6000610f3230610930565b9050610f3d81612250565b50565b60105481565b610f4e611570565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd290613461565b60405180910390fd5b600e60149054906101000a900460ff161561102b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611022906134e1565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506110bc30600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1669021e19e0c9bab2400000611578565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561110257600080fd5b505afa158015611116573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061113a9190612cda565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561119c57600080fd5b505afa1580156111b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d49190612cda565b6040518363ffffffff1660e01b81526004016111f192919061321e565b602060405180830381600087803b15801561120b57600080fd5b505af115801561121f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112439190612cda565b600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306112cc30610930565b6000806112d7610bc4565b426040518863ffffffff1660e01b81526004016112f9969594939291906132c3565b6060604051808303818588803b15801561131257600080fd5b505af1158015611326573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061134b9190612ebd565b5050506001600e60166101000a81548160ff0219169083151502179055506001600e60176101000a81548160ff0219169083151502179055506001600e60146101000a81548160ff021916908315150217905550600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161143e92919061329a565b602060405180830381600087803b15801561145857600080fd5b505af115801561146c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114909190612e90565b506114be600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016121af565b43600f819055506001600e60186101000a81548160ff02191690831515021790555050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60115481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156115e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115df906134c1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611658576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164f906133a1565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117369190613521565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156117b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117aa906134a1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611823576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181a90613361565b60405180910390fd5b60008111611866576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185d90613481565b60405180910390fd5b600e60189054906101000a900460ff1615611f8f57600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561191f5750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61192857600080fd5b6000600981905550600a808190555061193f610bc4565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156119ad575061197d610bc4565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611f8e57601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611a555750601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611afc57601054811115611a9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9690613421565b60405180910390fd5b601154611aab83610930565b82611ab69190613657565b1115611af7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aee90613501565b60405180910390fd5b611c9a565b601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611b9f5750601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611bee57601054811115611be9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be090613401565b60405180910390fd5b611c99565b601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611c9857601154611c4b83610930565b82611c569190613657565b1115611c97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8e90613501565b60405180910390fd5b5b5b5b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015611d455750600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611d9b5750601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611db0576000600981905550600a80819055505b6000611dbb30610930565b9050600e60159054906101000a900460ff16158015611e285750600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611e405750600e60169054906101000a900460ff165b15611e6857611e4e81612250565b60004790506000811115611e6657611e6547612046565b5b505b6002600f54611e779190613657565b4311158015611ed45750600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611f2e5750600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611f8c576001600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b505b5b7f5f2b8cb8801e5fabb93d63ca9ecdac72b431dd2aa62a0b71e67c336154b99331838383601154601054604051611fca959493929190613247565b60405180910390a1611fdd8383836124d8565b505050565b600083831115829061202a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612021919061333f565b60405180910390fd5b50600083856120399190613738565b9050809150509392505050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6120966002846124e890919063ffffffff16565b9081150290604051600060405180830381858888f193505050501580156120c1573d6000803e3d6000fd5b50600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6121126002846124e890919063ffffffff16565b9081150290604051600060405180830381858888f1935050505015801561213d573d6000803e3d6000fd5b5050565b6000600754821115612188576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217f90613381565b60405180910390fd5b6000612192612532565b90506121a781846124e890919063ffffffff16565b915050919050565b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6001600e60156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156122885761228761390d565b5b6040519080825280602002602001820160405280156122b65781602001602082028036833780820191505090505b50905030816000815181106122ce576122cd6138de565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561237057600080fd5b505afa158015612384573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123a89190612cda565b816001815181106123bc576123bb6138de565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061242330600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611578565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161248795949392919061353c565b600060405180830381600087803b1580156124a157600080fd5b505af11580156124b5573d6000803e3d6000fd5b50505050506000600e60156101000a81548160ff02191690831515021790555050565b6124e383838361255d565b505050565b600061252a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612728565b905092915050565b600080600061253f61278b565b9150915061255681836124e890919063ffffffff16565b9250505090565b60008060008060008061256f876127f0565b9550955095509550955095506125cd86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461285890919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061266285600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128a290919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506126ae81612900565b6126b884836129bd565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516127159190613521565b60405180910390a3505050505050505050565b6000808311829061276f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612766919061333f565b60405180910390fd5b506000838561277e91906136ad565b9050809150509392505050565b60008060006007549050600069021e19e0c9bab240000090506127c369021e19e0c9bab24000006007546124e890919063ffffffff16565b8210156127e35760075469021e19e0c9bab24000009350935050506127ec565b81819350935050505b9091565b600080600080600080600080600061280d8a600954600a546129f7565b925092509250600061281d612532565b905060008060006128308e878787612a8d565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061289a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611fe2565b905092915050565b60008082846128b19190613657565b9050838110156128f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128ed906133c1565b60405180910390fd5b8091505092915050565b600061290a612532565b905060006129218284612b1690919063ffffffff16565b905061297581600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128a290919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6129d28260075461285890919063ffffffff16565b6007819055506129ed816008546128a290919063ffffffff16565b6008819055505050565b600080600080612a236064612a15888a612b1690919063ffffffff16565b6124e890919063ffffffff16565b90506000612a4d6064612a3f888b612b1690919063ffffffff16565b6124e890919063ffffffff16565b90506000612a7682612a68858c61285890919063ffffffff16565b61285890919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612aa68589612b1690919063ffffffff16565b90506000612abd8689612b1690919063ffffffff16565b90506000612ad48789612b1690919063ffffffff16565b90506000612afd82612aef858761285890919063ffffffff16565b61285890919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080831415612b295760009050612b8b565b60008284612b3791906136de565b9050828482612b4691906136ad565b14612b86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b7d90613441565b60405180910390fd5b809150505b92915050565b6000612ba4612b9f846135d6565b6135b1565b90508083825260208201905082856020860282011115612bc757612bc6613941565b5b60005b85811015612bf75781612bdd8882612c01565b845260208401935060208301925050600181019050612bca565b5050509392505050565b600081359050612c1081613d1b565b92915050565b600081519050612c2581613d1b565b92915050565b600082601f830112612c4057612c3f61393c565b5b8135612c50848260208601612b91565b91505092915050565b600081359050612c6881613d32565b92915050565b600081519050612c7d81613d32565b92915050565b600081359050612c9281613d49565b92915050565b600081519050612ca781613d49565b92915050565b600060208284031215612cc357612cc261394b565b5b6000612cd184828501612c01565b91505092915050565b600060208284031215612cf057612cef61394b565b5b6000612cfe84828501612c16565b91505092915050565b60008060408385031215612d1e57612d1d61394b565b5b6000612d2c85828601612c01565b9250506020612d3d85828601612c01565b9150509250929050565b600080600060608486031215612d6057612d5f61394b565b5b6000612d6e86828701612c01565b9350506020612d7f86828701612c01565b9250506040612d9086828701612c83565b9150509250925092565b60008060408385031215612db157612db061394b565b5b6000612dbf85828601612c01565b9250506020612dd085828601612c59565b9150509250929050565b60008060408385031215612df157612df061394b565b5b6000612dff85828601612c01565b9250506020612e1085828601612c83565b9150509250929050565b600060208284031215612e3057612e2f61394b565b5b600082013567ffffffffffffffff811115612e4e57612e4d613946565b5b612e5a84828501612c2b565b91505092915050565b600060208284031215612e7957612e7861394b565b5b6000612e8784828501612c59565b91505092915050565b600060208284031215612ea657612ea561394b565b5b6000612eb484828501612c6e565b91505092915050565b600080600060608486031215612ed657612ed561394b565b5b6000612ee486828701612c98565b9350506020612ef586828701612c98565b9250506040612f0686828701612c98565b9150509250925092565b6000612f1c8383612f28565b60208301905092915050565b612f318161376c565b82525050565b612f408161376c565b82525050565b6000612f5182613612565b612f5b8185613635565b9350612f6683613602565b8060005b83811015612f97578151612f7e8882612f10565b9750612f8983613628565b925050600181019050612f6a565b5085935050505092915050565b612fad8161377e565b82525050565b612fbc816137c1565b82525050565b6000612fcd8261361d565b612fd78185613646565b9350612fe78185602086016137d3565b612ff081613950565b840191505092915050565b6000613008602383613646565b915061301382613961565b604082019050919050565b600061302b602a83613646565b9150613036826139b0565b604082019050919050565b600061304e602283613646565b9150613059826139ff565b604082019050919050565b6000613071601b83613646565b915061307c82613a4e565b602082019050919050565b6000613094603983613646565b915061309f82613a77565b604082019050919050565b60006130b7603683613646565b91506130c282613ac6565b604082019050919050565b60006130da603583613646565b91506130e582613b15565b604082019050919050565b60006130fd602183613646565b915061310882613b64565b604082019050919050565b6000613120602083613646565b915061312b82613bb3565b602082019050919050565b6000613143602983613646565b915061314e82613bdc565b604082019050919050565b6000613166602583613646565b915061317182613c2b565b604082019050919050565b6000613189602483613646565b915061319482613c7a565b604082019050919050565b60006131ac601783613646565b91506131b782613cc9565b602082019050919050565b60006131cf601383613646565b91506131da82613cf2565b602082019050919050565b6131ee816137aa565b82525050565b6131fd816137b4565b82525050565b60006020820190506132186000830184612f37565b92915050565b60006040820190506132336000830185612f37565b6132406020830184612f37565b9392505050565b600060a08201905061325c6000830188612f37565b6132696020830187612f37565b61327660408301866131e5565b61328360608301856131e5565b61329060808301846131e5565b9695505050505050565b60006040820190506132af6000830185612f37565b6132bc60208301846131e5565b9392505050565b600060c0820190506132d86000830189612f37565b6132e560208301886131e5565b6132f26040830187612fb3565b6132ff6060830186612fb3565b61330c6080830185612f37565b61331960a08301846131e5565b979650505050505050565b60006020820190506133396000830184612fa4565b92915050565b600060208201905081810360008301526133598184612fc2565b905092915050565b6000602082019050818103600083015261337a81612ffb565b9050919050565b6000602082019050818103600083015261339a8161301e565b9050919050565b600060208201905081810360008301526133ba81613041565b9050919050565b600060208201905081810360008301526133da81613064565b9050919050565b600060208201905081810360008301526133fa81613087565b9050919050565b6000602082019050818103600083015261341a816130aa565b9050919050565b6000602082019050818103600083015261343a816130cd565b9050919050565b6000602082019050818103600083015261345a816130f0565b9050919050565b6000602082019050818103600083015261347a81613113565b9050919050565b6000602082019050818103600083015261349a81613136565b9050919050565b600060208201905081810360008301526134ba81613159565b9050919050565b600060208201905081810360008301526134da8161317c565b9050919050565b600060208201905081810360008301526134fa8161319f565b9050919050565b6000602082019050818103600083015261351a816131c2565b9050919050565b600060208201905061353660008301846131e5565b92915050565b600060a08201905061355160008301886131e5565b61355e6020830187612fb3565b81810360408301526135708186612f46565b905061357f6060830185612f37565b61358c60808301846131e5565b9695505050505050565b60006020820190506135ab60008301846131f4565b92915050565b60006135bb6135cc565b90506135c78282613806565b919050565b6000604051905090565b600067ffffffffffffffff8211156135f1576135f061390d565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000613662826137aa565b915061366d836137aa565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156136a2576136a1613880565b5b828201905092915050565b60006136b8826137aa565b91506136c3836137aa565b9250826136d3576136d26138af565b5b828204905092915050565b60006136e9826137aa565b91506136f4836137aa565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561372d5761372c613880565b5b828202905092915050565b6000613743826137aa565b915061374e836137aa565b92508282101561376157613760613880565b5b828203905092915050565b60006137778261378a565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006137cc826137aa565b9050919050565b60005b838110156137f15780820151818401526020810190506137d6565b83811115613800576000848401525b50505050565b61380f82613950565b810181811067ffffffffffffffff8211171561382e5761382d61390d565b5b80604052505050565b6000613842826137aa565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561387557613874613880565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b613d248161376c565b8114613d2f57600080fd5b50565b613d3b8161377e565b8114613d4657600080fd5b50565b613d52816137aa565b8114613d5d57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122029ffc8896562f545e76664e7439492c2c43dafcafe01d3c38d258ff52fad4ca964736f6c63430008070033

Deployed Bytecode Sourcemap

3982:15161:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7172:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8097:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5484:63;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7449:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8298:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15264:88;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7358:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4897:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8752:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16780:194;;;;;;;;;;;;;:::i;:::-;;7552:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2934:148;;;;;;;;;;;;;:::i;:::-;;6997:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2720:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7263:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6489:304;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7698:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15089:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5554:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16577:195;;;;;;;;;;;;;:::i;:::-;;5297:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13993:1088;;;;;;;;;;;;;:::i;:::-;;7905:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5339:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7172:83;7209:13;7242:5;;;;;;;;;;;;;;;;;7235:12;;7172:83;:::o;8097:193::-;8199:4;8221:39;8230:12;:10;:12::i;:::-;8244:7;8253:6;8221:8;:39::i;:::-;8278:4;8271:11;;8097:193;;;;:::o;5484:63::-;;;;;;;;;;;;;;;;;;;;;;:::o;7449:95::-;7502:7;4423:22;7522:14;;7449:95;:::o;8298:446::-;8430:4;8447:36;8457:6;8465:9;8476:6;8447:9;:36::i;:::-;8494:220;8517:6;8538:12;:10;:12::i;:::-;8565:138;8621:6;8565:138;;;;;;;;;;;;;;;;;:11;:19;8577:6;8565:19;;;;;;;;;;;;;;;:33;8585:12;:10;:12::i;:::-;8565:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;8494:8;:220::i;:::-;8732:4;8725:11;;8298:446;;;;;:::o;15264:88::-;2857:12;:10;:12::i;:::-;2847:22;;:6;;;;;;;;;;:22;;;2839:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15339:5:::1;15324:4;:12;15329:6;15324:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;15264:88:::0;:::o;7358:83::-;7399:5;4838:1;7417:16;;7358:83;:::o;4897:28::-;;;;;;;;;;;;;:::o;8752:101::-;2857:12;:10;:12::i;:::-;2847:22;;:6;;;;;;;;;;:22;;;2839:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8840:5:::1;8822:15;;:23;;;;;;;;;;;;;;;;;;8752:101:::0;:::o;16780:194::-;16846:15;;;;;;;;;;;16830:31;;:12;:10;:12::i;:::-;:31;;;16822:40;;;;;;16873:26;16902:21;16873:50;;16934:32;16947:18;16934:12;:32::i;:::-;16811:163;16780:194::o;7552:138::-;7618:7;7645:37;7665:7;:16;7673:7;7665:16;;;;;;;;;;;;;;;;7645:19;:37::i;:::-;7638:44;;7552:138;;;:::o;2934:148::-;2857:12;:10;:12::i;:::-;2847:22;;:6;;;;;;;;;;:22;;;2839:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3041:1:::1;3004:40;;3025:6;::::0;::::1;;;;;;;;3004:40;;;;;;;;;;;;3072:1;3055:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2934:148::o:0;6997:167::-;2857:12;:10;:12::i;:::-;2847:22;;:6;;;;;;;;;;:22;;;2839:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7152:4:::1;7110:31;:39;7142:6;7110:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;6997:167:::0;;:::o;2720:79::-;2758:7;2785:6;;;;;;;;;;;2778:13;;2720:79;:::o;7263:87::-;7302:13;7335:7;;;;;;;;;;;;;;;;;7328:14;;7263:87;:::o;6489:304::-;2857:12;:10;:12::i;:::-;2847:22;;:6;;;;;;;;;;:22;;;2839:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6633:13:::1;;;;;;;;;;;6625:21;;:4;:21;;;;6603:128;;;;;;;;;;;;:::i;:::-;;;;;;;;;6744:41;6773:4;6779:5;6744:28;:41::i;:::-;6489:304:::0;;:::o;7698:199::-;7803:4;7825:42;7835:12;:10;:12::i;:::-;7849:9;7860:6;7825:9;:42::i;:::-;7885:4;7878:11;;7698:199;;;;:::o;15089:167::-;2857:12;:10;:12::i;:::-;2847:22;;:6;;;;;;;;;;:22;;;2839:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15163:9:::1;15158:91;15182:5;:12;15178:1;:16;15158:91;;;15233:4;15216;:14;15221:5;15227:1;15221:8;;;;;;;;:::i;:::-;;;;;;;;15216:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;15196:3;;;;;:::i;:::-;;;;15158:91;;;;15089:167:::0;:::o;5554:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;16577:195::-;16643:15;;;;;;;;;;;16627:31;;:12;:10;:12::i;:::-;:31;;;16619:40;;;;;;16670:23;16696:24;16714:4;16696:9;:24::i;:::-;16670:50;;16731:33;16748:15;16731:16;:33::i;:::-;16608:164;16577:195::o;5297:35::-;;;;:::o;13993:1088::-;2857:12;:10;:12::i;:::-;2847:22;;:6;;;;;;;;;;:22;;;2839:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14055:11:::1;;;;;;;;;;;14054:12;14046:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;14105:35;14176:42;14105:124;;14258:16;14240:15;;:34;;;;;;;;;;;;;;;;;;14285:58;14302:4;14317:15;;;;;;;;;;;4423:22;14285:8;:58::i;:::-;14388:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14370:70;;;14449:4;14456:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14370:110;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14354:13;;:126;;;;;;;;;;;;;;;;;;14491:15;;;;;;;;;;;:31;;;14530:21;14575:4;14595:24;14613:4;14595:9;:24::i;:::-;14634:1;14650::::0;14666:7:::1;:5;:7::i;:::-;14688:15;14491:223;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;14739:4;14725:11;;:18;;;;;;;;;;;;;;;;;;14772:4;14754:15;;:22;;;;;;;;;;;;;;;;;;14801:4;14787:11;;:18;;;;;;;;;;;;;;;;;;14823:13;;;;;;;;;;;14816:29;;;14868:15;;;;;;;;;;;14899:17;14816:111;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14938:58;14975:13;;;;;;;;;;;14991:4;14938:28;:58::i;:::-;15026:12;15007:16;:31;;;;15069:4;15049:17;;:24;;;;;;;;;;;;;;;;;;14035:1046;13993:1088::o:0;7905:184::-;8022:7;8054:11;:18;8066:5;8054:18;;;;;;;;;;;;;;;:27;8073:7;8054:27;;;;;;;;;;;;;;;;8047:34;;7905:184;;;;:::o;5339:24::-;;;;:::o;223:98::-;276:7;303:10;296:17;;223:98;:::o;9192:369::-;9336:1;9319:19;;:5;:19;;;;9311:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9417:1;9398:21;;:7;:21;;;;9390:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9499:6;9469:11;:18;9481:5;9469:18;;;;;;;;;;;;;;;:27;9488:7;9469:27;;;;;;;;;;;;;;;:36;;;;9537:7;9521:32;;9530:5;9521:32;;;9546:6;9521:32;;;;;;:::i;:::-;;;;;;;;9192:369;;;:::o;9741:3532::-;9879:1;9863:18;;:4;:18;;;;9855:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9956:1;9942:16;;:2;:16;;;;9934:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10026:1;10017:6;:10;10009:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10088:17;;;;;;;;;;;10084:3056;;;10131:4;:10;10136:4;10131:10;;;;;;;;;;;;;;;;;;;;;;;;;10130:11;:24;;;;;10146:4;:8;10151:2;10146:8;;;;;;;;;;;;;;;;;;;;;;;;;10145:9;10130:24;10122:33;;;;;;10182:1;10170:9;:13;;;;10210:2;10198:9;:14;;;;10239:7;:5;:7::i;:::-;10231:15;;:4;:15;;;;:32;;;;;10256:7;:5;:7::i;:::-;10250:13;;:2;:13;;;;10231:32;10227:2902;;;10843:25;:31;10869:4;10843:31;;;;;;;;;;;;;;;;;;;;;;;;;:141;;;;;10949:31;:35;10981:2;10949:35;;;;;;;;;;;;;;;;;;;;;;;;;10948:36;10843:141;10817:1244;;;11071:20;;11061:6;:30;;11027:169;;;;;;;;;;;;:::i;:::-;;;;;;;;;11279:9;;11262:13;11272:2;11262:9;:13::i;:::-;11253:6;:22;;;;:::i;:::-;:35;;11219:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;10817:1244;;;11458:25;:29;11484:2;11458:29;;;;;;;;;;;;;;;;;;;;;;;;;:139;;;;;11560:31;:37;11592:4;11560:37;;;;;;;;;;;;;;;;;;;;;;;;;11559:38;11458:139;11432:629;;;11684:20;;11674:6;:30;;11640:170;;;;;;;;;;;;:::i;:::-;;;;;;;;;11432:629;;;11841:31;:35;11873:2;11841:35;;;;;;;;;;;;;;;;;;;;;;;;;11836:225;;11961:9;;11944:13;11954:2;11944:9;:13::i;:::-;11935:6;:22;;;;:::i;:::-;:35;;11901:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;11836:225;11432:629;10817:1244;12113:13;;;;;;;;;;;12107:19;;:2;:19;;;:76;;;;;12167:15;;;;;;;;;;;12151:32;;:4;:32;;;;12107:76;:127;;;;;12209:19;:25;12229:4;12209:25;;;;;;;;;;;;;;;;;;;;;;;;;12208:26;12107:127;12081:266;;;12289:1;12277:9;:13;;;;12325:2;12313:9;:14;;;;12081:266;12367:28;12398:24;12416:4;12398:9;:24::i;:::-;12367:55;;12446:6;;;;;;;;;;;12445:7;:32;;;;;12464:13;;;;;;;;;;;12456:21;;:4;:21;;;;12445:32;:47;;;;;12481:11;;;;;;;;;;;12445:47;12441:343;;;12517:38;12534:20;12517:16;:38::i;:::-;12578:26;12607:21;12578:50;;12676:1;12655:18;:22;12651:114;;;12706:35;12719:21;12706:12;:35::i;:::-;12651:114;12494:290;12441:343;12935:1;12916:16;;:20;;;;:::i;:::-;12899:12;:38;;:82;;;;;12968:13;;;;;;;;;;;12962:19;;:2;:19;;;;12899:82;:137;;;;;13020:15;;;;;;;;;;;13006:30;;:2;:30;;;;12899:137;12873:241;;;13090:4;13079;:8;13084:2;13079:8;;;;;;;;;;;;;;;;:15;;;;;;;;;;;;;;;;;;12873:241;10265:2864;10227:2902;10084:3056;13157:65;13172:4;13178:2;13182:6;13190:9;;13201:20;;13157:65;;;;;;;;;;:::i;:::-;;;;;;;;13233:32;13248:4;13254:2;13258:6;13233:14;:32::i;:::-;9741:3532;;;:::o;1485:224::-;1605:7;1638:1;1633;:6;;1641:12;1625:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1665:9;1681:1;1677;:5;;;;:::i;:::-;1665:17;;1700:1;1693:8;;;1485:224;;;;;:::o;13831:154::-;13888:15;;;;;;;;;;;:24;;:39;13913:13;13924:1;13913:6;:10;;:13;;;;:::i;:::-;13888:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13938:15;;;;;;;;;;;:24;;:39;13963:13;13974:1;13963:6;:10;;:13;;;;:::i;:::-;13938:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13831:154;:::o;8861:323::-;8956:7;9014;;9003;:18;;8981:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;9102:19;9124:10;:8;:10::i;:::-;9102:32;;9152:24;9164:11;9152:7;:11;;:24;;;;:::i;:::-;9145:31;;;8861:323;;;:::o;6801:188::-;6918:5;6884:25;:31;6910:4;6884:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;6975:5;6941:40;;6969:4;6941:40;;;;;;;;;;;;6801:188;;:::o;13281:483::-;5167:4;5158:6;;:13;;;;;;;;;;;;;;;;;;13359:21:::1;13397:1;13383:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13359:40;;13428:4;13410;13415:1;13410:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;13454:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13444:4;13449:1;13444:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;13487:62;13504:4;13519:15;;;;;;;;;;;13537:11;13487:8;:62::i;:::-;13560:15;;;;;;;;;;;:66;;;13641:11;13667:1;13683:4;13710;13730:15;13560:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;13348:416;5203:5:::0;5194:6;;:14;;;;;;;;;;;;;;;;;;13281:483;:::o;15360:180::-;15488:44;15506:6;15514:9;15525:6;15488:17;:44::i;:::-;15360:180;;;:::o;1971:132::-;2029:7;2056:39;2060:1;2063;2056:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2049:46;;1971:132;;;;:::o;18711:164::-;18753:7;18774:15;18791;18810:19;:17;:19::i;:::-;18773:56;;;;18847:20;18859:7;18847;:11;;:20;;;;:::i;:::-;18840:27;;;;18711:164;:::o;15548:610::-;15695:15;15725:23;15763:12;15790:23;15828:12;15855:13;15882:19;15893:7;15882:10;:19::i;:::-;15680:221;;;;;;;;;;;;15930:28;15950:7;15930;:15;15938:6;15930:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;15912:7;:15;15920:6;15912:15;;;;;;;;;;;;;;;:46;;;;15990:39;16013:15;15990:7;:18;15998:9;15990:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;15969:7;:18;15977:9;15969:18;;;;;;;;;;;;;;;:60;;;;16040:16;16050:5;16040:9;:16::i;:::-;16067:23;16079:4;16085;16067:11;:23::i;:::-;16123:9;16106:44;;16115:6;16106:44;;;16134:15;16106:44;;;;;;:::i;:::-;;;;;;;;15669:489;;;;;;15548:610;;;:::o;2111:223::-;2231:7;2263:1;2259;:5;2266:12;2251:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2290:9;2306:1;2302;:5;;;;:::i;:::-;2290:17;;2325:1;2318:8;;;2111:223;;;;;:::o;18883:257::-;18934:7;18943;18963:15;18981:7;;18963:25;;18999:15;4423:22;18999:25;;19049:20;4423:22;19049:7;;:11;;:20;;;;:::i;:::-;19039:7;:30;19035:61;;;19079:7;;4423:22;19071:25;;;;;;;;19035:61;19115:7;19124;19107:25;;;;;;18883:257;;;:::o;16982:704::-;17082:7;17104;17126;17148;17170;17192;17228:23;17253:12;17267:13;17284:92;17310:7;17332:9;;17356;;17284:11;:92::i;:::-;17227:149;;;;;;17387:19;17409:10;:8;:10::i;:::-;17387:32;;17431:15;17448:23;17473:12;17489:109;17515:7;17537:4;17556:5;17576:11;17489;:109::i;:::-;17430:168;;;;;;17617:7;17626:15;17643:4;17649:15;17666:4;17672:5;17609:69;;;;;;;;;;;;;;;;;;;16982:704;;;;;;;:::o;1341:136::-;1399:7;1426:43;1430:1;1433;1426:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1419:50;;1341:136;;;;:::o;1154:179::-;1212:7;1232:9;1248:1;1244;:5;;;;:::i;:::-;1232:17;;1273:1;1268;:6;;1260:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1324:1;1317:8;;;1154:179;;;;:::o;16166:211::-;16219:19;16241:10;:8;:10::i;:::-;16219:32;;16262:13;16278:22;16288:11;16278:5;:9;;:22;;;;:::i;:::-;16262:38;;16336:33;16363:5;16336:7;:22;16352:4;16336:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;16311:7;:22;16327:4;16311:22;;;;;;;;;;;;;;;:58;;;;16208:169;;16166:211;:::o;16385:147::-;16463:17;16475:4;16463:7;;:11;;:17;;;;:::i;:::-;16453:7;:27;;;;16504:20;16519:4;16504:10;;:14;;:20;;;;:::i;:::-;16491:10;:33;;;;16385:147;;:::o;17694:467::-;17862:7;17884;17906;17941:12;17956:28;17980:3;17956:19;17968:6;17956:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;17941:43;;17995:13;18011:29;18036:3;18011:20;18023:7;18011;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;17995:45;;18051:23;18077:28;18099:5;18077:17;18089:4;18077:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;18051:54;;18124:15;18141:4;18147:5;18116:37;;;;;;;;;17694:467;;;;;;;:::o;18169:534::-;18363:7;18385;18407;18442:15;18460:24;18472:11;18460:7;:11;;:24;;;;:::i;:::-;18442:42;;18495:12;18510:21;18519:11;18510:4;:8;;:21;;;;:::i;:::-;18495:36;;18542:13;18558:22;18568:11;18558:5;:9;;:22;;;;:::i;:::-;18542:38;;18591:23;18617:28;18639:5;18617:17;18629:4;18617:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;18591:54;;18664:7;18673:15;18690:4;18656:39;;;;;;;;;;18169:534;;;;;;;;:::o;1717:246::-;1775:7;1804:1;1799;:6;1795:47;;;1829:1;1822:8;;;;1795:47;1852:9;1868:1;1864;:5;;;;:::i;:::-;1852:17;;1897:1;1892;1888;:5;;;;:::i;:::-;:10;1880:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1954:1;1947:8;;;1717:246;;;;;:::o;24:722:1:-;120:5;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;275:6;268:5;261:21;309:4;302:5;298:16;291:23;;335:6;385:3;377:4;369:6;365:17;360:3;356:27;353:36;350:143;;;404:79;;:::i;:::-;350:143;517:1;502:238;527:6;524:1;521:13;502:238;;;595:3;624:37;657:3;645:10;624:37;:::i;:::-;619:3;612:50;691:4;686:3;682:14;675:21;;725:4;720:3;716:14;709:21;;562:178;549:1;546;542:9;537:14;;502:238;;;506:14;126:620;;24:722;;;;;:::o;752:139::-;798:5;836:6;823:20;814:29;;852:33;879:5;852:33;:::i;:::-;752:139;;;;:::o;897:143::-;954:5;985:6;979:13;970:22;;1001:33;1028:5;1001:33;:::i;:::-;897:143;;;;:::o;1063:370::-;1134:5;1183:3;1176:4;1168:6;1164:17;1160:27;1150:122;;1191:79;;:::i;:::-;1150:122;1308:6;1295:20;1333:94;1423:3;1415:6;1408:4;1400:6;1396:17;1333:94;:::i;:::-;1324:103;;1140:293;1063:370;;;;:::o;1439:133::-;1482:5;1520:6;1507:20;1498:29;;1536:30;1560:5;1536:30;:::i;:::-;1439:133;;;;:::o;1578:137::-;1632:5;1663:6;1657:13;1648:22;;1679:30;1703:5;1679:30;:::i;:::-;1578:137;;;;:::o;1721:139::-;1767:5;1805:6;1792:20;1783:29;;1821:33;1848:5;1821:33;:::i;:::-;1721:139;;;;:::o;1866:143::-;1923:5;1954:6;1948:13;1939:22;;1970:33;1997:5;1970:33;:::i;:::-;1866:143;;;;:::o;2015:329::-;2074:6;2123:2;2111:9;2102:7;2098:23;2094:32;2091:119;;;2129:79;;:::i;:::-;2091:119;2249:1;2274:53;2319:7;2310:6;2299:9;2295:22;2274:53;:::i;:::-;2264:63;;2220:117;2015:329;;;;:::o;2350:351::-;2420:6;2469:2;2457:9;2448:7;2444:23;2440:32;2437:119;;;2475:79;;:::i;:::-;2437:119;2595:1;2620:64;2676:7;2667:6;2656:9;2652:22;2620:64;:::i;:::-;2610:74;;2566:128;2350:351;;;;:::o;2707:474::-;2775:6;2783;2832:2;2820:9;2811:7;2807:23;2803:32;2800:119;;;2838:79;;:::i;:::-;2800:119;2958:1;2983:53;3028:7;3019:6;3008:9;3004:22;2983:53;:::i;:::-;2973:63;;2929:117;3085:2;3111:53;3156:7;3147:6;3136:9;3132:22;3111:53;:::i;:::-;3101:63;;3056:118;2707:474;;;;;:::o;3187:619::-;3264:6;3272;3280;3329:2;3317:9;3308:7;3304:23;3300:32;3297:119;;;3335:79;;:::i;:::-;3297:119;3455:1;3480:53;3525:7;3516:6;3505:9;3501:22;3480:53;:::i;:::-;3470:63;;3426:117;3582:2;3608:53;3653:7;3644:6;3633:9;3629:22;3608:53;:::i;:::-;3598:63;;3553:118;3710:2;3736:53;3781:7;3772:6;3761:9;3757:22;3736:53;:::i;:::-;3726:63;;3681:118;3187:619;;;;;:::o;3812:468::-;3877:6;3885;3934:2;3922:9;3913:7;3909:23;3905:32;3902:119;;;3940:79;;:::i;:::-;3902:119;4060:1;4085:53;4130:7;4121:6;4110:9;4106:22;4085:53;:::i;:::-;4075:63;;4031:117;4187:2;4213:50;4255:7;4246:6;4235:9;4231:22;4213:50;:::i;:::-;4203:60;;4158:115;3812:468;;;;;:::o;4286:474::-;4354:6;4362;4411:2;4399:9;4390:7;4386:23;4382:32;4379:119;;;4417:79;;:::i;:::-;4379:119;4537:1;4562:53;4607:7;4598:6;4587:9;4583:22;4562:53;:::i;:::-;4552:63;;4508:117;4664:2;4690:53;4735:7;4726:6;4715:9;4711:22;4690:53;:::i;:::-;4680:63;;4635:118;4286:474;;;;;:::o;4766:539::-;4850:6;4899:2;4887:9;4878:7;4874:23;4870:32;4867:119;;;4905:79;;:::i;:::-;4867:119;5053:1;5042:9;5038:17;5025:31;5083:18;5075:6;5072:30;5069:117;;;5105:79;;:::i;:::-;5069:117;5210:78;5280:7;5271:6;5260:9;5256:22;5210:78;:::i;:::-;5200:88;;4996:302;4766:539;;;;:::o;5311:323::-;5367:6;5416:2;5404:9;5395:7;5391:23;5387:32;5384:119;;;5422:79;;:::i;:::-;5384:119;5542:1;5567:50;5609:7;5600:6;5589:9;5585:22;5567:50;:::i;:::-;5557:60;;5513:114;5311:323;;;;:::o;5640:345::-;5707:6;5756:2;5744:9;5735:7;5731:23;5727:32;5724:119;;;5762:79;;:::i;:::-;5724:119;5882:1;5907:61;5960:7;5951:6;5940:9;5936:22;5907:61;:::i;:::-;5897:71;;5853:125;5640:345;;;;:::o;5991:663::-;6079:6;6087;6095;6144:2;6132:9;6123:7;6119:23;6115:32;6112:119;;;6150:79;;:::i;:::-;6112:119;6270:1;6295:64;6351:7;6342:6;6331:9;6327:22;6295:64;:::i;:::-;6285:74;;6241:128;6408:2;6434:64;6490:7;6481:6;6470:9;6466:22;6434:64;:::i;:::-;6424:74;;6379:129;6547:2;6573:64;6629:7;6620:6;6609:9;6605:22;6573:64;:::i;:::-;6563:74;;6518:129;5991:663;;;;;:::o;6660:179::-;6729:10;6750:46;6792:3;6784:6;6750:46;:::i;:::-;6828:4;6823:3;6819:14;6805:28;;6660:179;;;;:::o;6845:108::-;6922:24;6940:5;6922:24;:::i;:::-;6917:3;6910:37;6845:108;;:::o;6959:118::-;7046:24;7064:5;7046:24;:::i;:::-;7041:3;7034:37;6959:118;;:::o;7113:732::-;7232:3;7261:54;7309:5;7261:54;:::i;:::-;7331:86;7410:6;7405:3;7331:86;:::i;:::-;7324:93;;7441:56;7491:5;7441:56;:::i;:::-;7520:7;7551:1;7536:284;7561:6;7558:1;7555:13;7536:284;;;7637:6;7631:13;7664:63;7723:3;7708:13;7664:63;:::i;:::-;7657:70;;7750:60;7803:6;7750:60;:::i;:::-;7740:70;;7596:224;7583:1;7580;7576:9;7571:14;;7536:284;;;7540:14;7836:3;7829:10;;7237:608;;;7113:732;;;;:::o;7851:109::-;7932:21;7947:5;7932:21;:::i;:::-;7927:3;7920:34;7851:109;;:::o;7966:147::-;8061:45;8100:5;8061:45;:::i;:::-;8056:3;8049:58;7966:147;;:::o;8119:364::-;8207:3;8235:39;8268:5;8235:39;:::i;:::-;8290:71;8354:6;8349:3;8290:71;:::i;:::-;8283:78;;8370:52;8415:6;8410:3;8403:4;8396:5;8392:16;8370:52;:::i;:::-;8447:29;8469:6;8447:29;:::i;:::-;8442:3;8438:39;8431:46;;8211:272;8119:364;;;;:::o;8489:366::-;8631:3;8652:67;8716:2;8711:3;8652:67;:::i;:::-;8645:74;;8728:93;8817:3;8728:93;:::i;:::-;8846:2;8841:3;8837:12;8830:19;;8489:366;;;:::o;8861:::-;9003:3;9024:67;9088:2;9083:3;9024:67;:::i;:::-;9017:74;;9100:93;9189:3;9100:93;:::i;:::-;9218:2;9213:3;9209:12;9202:19;;8861:366;;;:::o;9233:::-;9375:3;9396:67;9460:2;9455:3;9396:67;:::i;:::-;9389:74;;9472:93;9561:3;9472:93;:::i;:::-;9590:2;9585:3;9581:12;9574:19;;9233:366;;;:::o;9605:::-;9747:3;9768:67;9832:2;9827:3;9768:67;:::i;:::-;9761:74;;9844:93;9933:3;9844:93;:::i;:::-;9962:2;9957:3;9953:12;9946:19;;9605:366;;;:::o;9977:::-;10119:3;10140:67;10204:2;10199:3;10140:67;:::i;:::-;10133:74;;10216:93;10305:3;10216:93;:::i;:::-;10334:2;10329:3;10325:12;10318:19;;9977:366;;;:::o;10349:::-;10491:3;10512:67;10576:2;10571:3;10512:67;:::i;:::-;10505:74;;10588:93;10677:3;10588:93;:::i;:::-;10706:2;10701:3;10697:12;10690:19;;10349:366;;;:::o;10721:::-;10863:3;10884:67;10948:2;10943:3;10884:67;:::i;:::-;10877:74;;10960:93;11049:3;10960:93;:::i;:::-;11078:2;11073:3;11069:12;11062:19;;10721:366;;;:::o;11093:::-;11235:3;11256:67;11320:2;11315:3;11256:67;:::i;:::-;11249:74;;11332:93;11421:3;11332:93;:::i;:::-;11450:2;11445:3;11441:12;11434:19;;11093:366;;;:::o;11465:::-;11607:3;11628:67;11692:2;11687:3;11628:67;:::i;:::-;11621:74;;11704:93;11793:3;11704:93;:::i;:::-;11822:2;11817:3;11813:12;11806:19;;11465:366;;;:::o;11837:::-;11979:3;12000:67;12064:2;12059:3;12000:67;:::i;:::-;11993:74;;12076:93;12165:3;12076:93;:::i;:::-;12194:2;12189:3;12185:12;12178:19;;11837:366;;;:::o;12209:::-;12351:3;12372:67;12436:2;12431:3;12372:67;:::i;:::-;12365:74;;12448:93;12537:3;12448:93;:::i;:::-;12566:2;12561:3;12557:12;12550:19;;12209:366;;;:::o;12581:::-;12723:3;12744:67;12808:2;12803:3;12744:67;:::i;:::-;12737:74;;12820:93;12909:3;12820:93;:::i;:::-;12938:2;12933:3;12929:12;12922:19;;12581:366;;;:::o;12953:::-;13095:3;13116:67;13180:2;13175:3;13116:67;:::i;:::-;13109:74;;13192:93;13281:3;13192:93;:::i;:::-;13310:2;13305:3;13301:12;13294:19;;12953:366;;;:::o;13325:::-;13467:3;13488:67;13552:2;13547:3;13488:67;:::i;:::-;13481:74;;13564:93;13653:3;13564:93;:::i;:::-;13682:2;13677:3;13673:12;13666:19;;13325:366;;;:::o;13697:118::-;13784:24;13802:5;13784:24;:::i;:::-;13779:3;13772:37;13697:118;;:::o;13821:112::-;13904:22;13920:5;13904:22;:::i;:::-;13899:3;13892:35;13821:112;;:::o;13939:222::-;14032:4;14070:2;14059:9;14055:18;14047:26;;14083:71;14151:1;14140:9;14136:17;14127:6;14083:71;:::i;:::-;13939:222;;;;:::o;14167:332::-;14288:4;14326:2;14315:9;14311:18;14303:26;;14339:71;14407:1;14396:9;14392:17;14383:6;14339:71;:::i;:::-;14420:72;14488:2;14477:9;14473:18;14464:6;14420:72;:::i;:::-;14167:332;;;;;:::o;14505:664::-;14710:4;14748:3;14737:9;14733:19;14725:27;;14762:71;14830:1;14819:9;14815:17;14806:6;14762:71;:::i;:::-;14843:72;14911:2;14900:9;14896:18;14887:6;14843:72;:::i;:::-;14925;14993:2;14982:9;14978:18;14969:6;14925:72;:::i;:::-;15007;15075:2;15064:9;15060:18;15051:6;15007:72;:::i;:::-;15089:73;15157:3;15146:9;15142:19;15133:6;15089:73;:::i;:::-;14505:664;;;;;;;;:::o;15175:332::-;15296:4;15334:2;15323:9;15319:18;15311:26;;15347:71;15415:1;15404:9;15400:17;15391:6;15347:71;:::i;:::-;15428:72;15496:2;15485:9;15481:18;15472:6;15428:72;:::i;:::-;15175:332;;;;;:::o;15513:807::-;15762:4;15800:3;15789:9;15785:19;15777:27;;15814:71;15882:1;15871:9;15867:17;15858:6;15814:71;:::i;:::-;15895:72;15963:2;15952:9;15948:18;15939:6;15895:72;:::i;:::-;15977:80;16053:2;16042:9;16038:18;16029:6;15977:80;:::i;:::-;16067;16143:2;16132:9;16128:18;16119:6;16067:80;:::i;:::-;16157:73;16225:3;16214:9;16210:19;16201:6;16157:73;:::i;:::-;16240;16308:3;16297:9;16293:19;16284:6;16240:73;:::i;:::-;15513:807;;;;;;;;;:::o;16326:210::-;16413:4;16451:2;16440:9;16436:18;16428:26;;16464:65;16526:1;16515:9;16511:17;16502:6;16464:65;:::i;:::-;16326:210;;;;:::o;16542:313::-;16655:4;16693:2;16682:9;16678:18;16670:26;;16742:9;16736:4;16732:20;16728:1;16717:9;16713:17;16706:47;16770:78;16843:4;16834:6;16770:78;:::i;:::-;16762:86;;16542:313;;;;:::o;16861:419::-;17027:4;17065:2;17054:9;17050:18;17042:26;;17114:9;17108:4;17104:20;17100:1;17089:9;17085:17;17078:47;17142:131;17268:4;17142:131;:::i;:::-;17134:139;;16861:419;;;:::o;17286:::-;17452:4;17490:2;17479:9;17475:18;17467:26;;17539:9;17533:4;17529:20;17525:1;17514:9;17510:17;17503:47;17567:131;17693:4;17567:131;:::i;:::-;17559:139;;17286:419;;;:::o;17711:::-;17877:4;17915:2;17904:9;17900:18;17892:26;;17964:9;17958:4;17954:20;17950:1;17939:9;17935:17;17928:47;17992:131;18118:4;17992:131;:::i;:::-;17984:139;;17711:419;;;:::o;18136:::-;18302:4;18340:2;18329:9;18325:18;18317:26;;18389:9;18383:4;18379:20;18375:1;18364:9;18360:17;18353:47;18417:131;18543:4;18417:131;:::i;:::-;18409:139;;18136:419;;;:::o;18561:::-;18727:4;18765:2;18754:9;18750:18;18742:26;;18814:9;18808:4;18804:20;18800:1;18789:9;18785:17;18778:47;18842:131;18968:4;18842:131;:::i;:::-;18834:139;;18561:419;;;:::o;18986:::-;19152:4;19190:2;19179:9;19175:18;19167:26;;19239:9;19233:4;19229:20;19225:1;19214:9;19210:17;19203:47;19267:131;19393:4;19267:131;:::i;:::-;19259:139;;18986:419;;;:::o;19411:::-;19577:4;19615:2;19604:9;19600:18;19592:26;;19664:9;19658:4;19654:20;19650:1;19639:9;19635:17;19628:47;19692:131;19818:4;19692:131;:::i;:::-;19684:139;;19411:419;;;:::o;19836:::-;20002:4;20040:2;20029:9;20025:18;20017:26;;20089:9;20083:4;20079:20;20075:1;20064:9;20060:17;20053:47;20117:131;20243:4;20117:131;:::i;:::-;20109:139;;19836:419;;;:::o;20261:::-;20427:4;20465:2;20454:9;20450:18;20442:26;;20514:9;20508:4;20504:20;20500:1;20489:9;20485:17;20478:47;20542:131;20668:4;20542:131;:::i;:::-;20534:139;;20261:419;;;:::o;20686:::-;20852:4;20890:2;20879:9;20875:18;20867:26;;20939:9;20933:4;20929:20;20925:1;20914:9;20910:17;20903:47;20967:131;21093:4;20967:131;:::i;:::-;20959:139;;20686:419;;;:::o;21111:::-;21277:4;21315:2;21304:9;21300:18;21292:26;;21364:9;21358:4;21354:20;21350:1;21339:9;21335:17;21328:47;21392:131;21518:4;21392:131;:::i;:::-;21384:139;;21111:419;;;:::o;21536:::-;21702:4;21740:2;21729:9;21725:18;21717:26;;21789:9;21783:4;21779:20;21775:1;21764:9;21760:17;21753:47;21817:131;21943:4;21817:131;:::i;:::-;21809:139;;21536:419;;;:::o;21961:::-;22127:4;22165:2;22154:9;22150:18;22142:26;;22214:9;22208:4;22204:20;22200:1;22189:9;22185:17;22178:47;22242:131;22368:4;22242:131;:::i;:::-;22234:139;;21961:419;;;:::o;22386:::-;22552:4;22590:2;22579:9;22575:18;22567:26;;22639:9;22633:4;22629:20;22625:1;22614:9;22610:17;22603:47;22667:131;22793:4;22667:131;:::i;:::-;22659:139;;22386:419;;;:::o;22811:222::-;22904:4;22942:2;22931:9;22927:18;22919:26;;22955:71;23023:1;23012:9;23008:17;22999:6;22955:71;:::i;:::-;22811:222;;;;:::o;23039:831::-;23302:4;23340:3;23329:9;23325:19;23317:27;;23354:71;23422:1;23411:9;23407:17;23398:6;23354:71;:::i;:::-;23435:80;23511:2;23500:9;23496:18;23487:6;23435:80;:::i;:::-;23562:9;23556:4;23552:20;23547:2;23536:9;23532:18;23525:48;23590:108;23693:4;23684:6;23590:108;:::i;:::-;23582:116;;23708:72;23776:2;23765:9;23761:18;23752:6;23708:72;:::i;:::-;23790:73;23858:3;23847:9;23843:19;23834:6;23790:73;:::i;:::-;23039:831;;;;;;;;:::o;23876:214::-;23965:4;24003:2;23992:9;23988:18;23980:26;;24016:67;24080:1;24069:9;24065:17;24056:6;24016:67;:::i;:::-;23876:214;;;;:::o;24096:129::-;24130:6;24157:20;;:::i;:::-;24147:30;;24186:33;24214:4;24206:6;24186:33;:::i;:::-;24096:129;;;:::o;24231:75::-;24264:6;24297:2;24291:9;24281:19;;24231:75;:::o;24312:311::-;24389:4;24479:18;24471:6;24468:30;24465:56;;;24501:18;;:::i;:::-;24465:56;24551:4;24543:6;24539:17;24531:25;;24611:4;24605;24601:15;24593:23;;24312:311;;;:::o;24629:132::-;24696:4;24719:3;24711:11;;24749:4;24744:3;24740:14;24732:22;;24629:132;;;:::o;24767:114::-;24834:6;24868:5;24862:12;24852:22;;24767:114;;;:::o;24887:99::-;24939:6;24973:5;24967:12;24957:22;;24887:99;;;:::o;24992:113::-;25062:4;25094;25089:3;25085:14;25077:22;;24992:113;;;:::o;25111:184::-;25210:11;25244:6;25239:3;25232:19;25284:4;25279:3;25275:14;25260:29;;25111:184;;;;:::o;25301:169::-;25385:11;25419:6;25414:3;25407:19;25459:4;25454:3;25450:14;25435:29;;25301:169;;;;:::o;25476:305::-;25516:3;25535:20;25553:1;25535:20;:::i;:::-;25530:25;;25569:20;25587:1;25569:20;:::i;:::-;25564:25;;25723:1;25655:66;25651:74;25648:1;25645:81;25642:107;;;25729:18;;:::i;:::-;25642:107;25773:1;25770;25766:9;25759:16;;25476:305;;;;:::o;25787:185::-;25827:1;25844:20;25862:1;25844:20;:::i;:::-;25839:25;;25878:20;25896:1;25878:20;:::i;:::-;25873:25;;25917:1;25907:35;;25922:18;;:::i;:::-;25907:35;25964:1;25961;25957:9;25952:14;;25787:185;;;;:::o;25978:348::-;26018:7;26041:20;26059:1;26041:20;:::i;:::-;26036:25;;26075:20;26093:1;26075:20;:::i;:::-;26070:25;;26263:1;26195:66;26191:74;26188:1;26185:81;26180:1;26173:9;26166:17;26162:105;26159:131;;;26270:18;;:::i;:::-;26159:131;26318:1;26315;26311:9;26300:20;;25978:348;;;;:::o;26332:191::-;26372:4;26392:20;26410:1;26392:20;:::i;:::-;26387:25;;26426:20;26444:1;26426:20;:::i;:::-;26421:25;;26465:1;26462;26459:8;26456:34;;;26470:18;;:::i;:::-;26456:34;26515:1;26512;26508:9;26500:17;;26332:191;;;;:::o;26529:96::-;26566:7;26595:24;26613:5;26595:24;:::i;:::-;26584:35;;26529:96;;;:::o;26631:90::-;26665:7;26708:5;26701:13;26694:21;26683:32;;26631:90;;;:::o;26727:126::-;26764:7;26804:42;26797:5;26793:54;26782:65;;26727:126;;;:::o;26859:77::-;26896:7;26925:5;26914:16;;26859:77;;;:::o;26942:86::-;26977:7;27017:4;27010:5;27006:16;26995:27;;26942:86;;;:::o;27034:121::-;27092:9;27125:24;27143:5;27125:24;:::i;:::-;27112:37;;27034:121;;;:::o;27161:307::-;27229:1;27239:113;27253:6;27250:1;27247:13;27239:113;;;27338:1;27333:3;27329:11;27323:18;27319:1;27314:3;27310:11;27303:39;27275:2;27272:1;27268:10;27263:15;;27239:113;;;27370:6;27367:1;27364:13;27361:101;;;27450:1;27441:6;27436:3;27432:16;27425:27;27361:101;27210:258;27161:307;;;:::o;27474:281::-;27557:27;27579:4;27557:27;:::i;:::-;27549:6;27545:40;27687:6;27675:10;27672:22;27651:18;27639:10;27636:34;27633:62;27630:88;;;27698:18;;:::i;:::-;27630:88;27738:10;27734:2;27727:22;27517:238;27474:281;;:::o;27761:233::-;27800:3;27823:24;27841:5;27823:24;:::i;:::-;27814:33;;27869:66;27862:5;27859:77;27856:103;;;27939:18;;:::i;:::-;27856:103;27986:1;27979:5;27975:13;27968:20;;27761:233;;;:::o;28000:180::-;28048:77;28045:1;28038:88;28145:4;28142:1;28135:15;28169:4;28166:1;28159:15;28186:180;28234:77;28231:1;28224:88;28331:4;28328:1;28321:15;28355:4;28352:1;28345:15;28372:180;28420:77;28417:1;28410:88;28517:4;28514:1;28507:15;28541:4;28538:1;28531:15;28558:180;28606:77;28603:1;28596:88;28703:4;28700:1;28693:15;28727:4;28724:1;28717:15;28744:117;28853:1;28850;28843:12;28867:117;28976:1;28973;28966:12;28990:117;29099:1;29096;29089:12;29113:117;29222:1;29219;29212:12;29236:102;29277:6;29328:2;29324:7;29319:2;29312:5;29308:14;29304:28;29294:38;;29236:102;;;:::o;29344:222::-;29484:34;29480:1;29472:6;29468:14;29461:58;29553:5;29548:2;29540:6;29536:15;29529:30;29344:222;:::o;29572:229::-;29712:34;29708:1;29700:6;29696:14;29689:58;29781:12;29776:2;29768:6;29764:15;29757:37;29572:229;:::o;29807:221::-;29947:34;29943:1;29935:6;29931:14;29924:58;30016:4;30011:2;30003:6;29999:15;29992:29;29807:221;:::o;30034:177::-;30174:29;30170:1;30162:6;30158:14;30151:53;30034:177;:::o;30217:244::-;30357:34;30353:1;30345:6;30341:14;30334:58;30426:27;30421:2;30413:6;30409:15;30402:52;30217:244;:::o;30467:241::-;30607:34;30603:1;30595:6;30591:14;30584:58;30676:24;30671:2;30663:6;30659:15;30652:49;30467:241;:::o;30714:240::-;30854:34;30850:1;30842:6;30838:14;30831:58;30923:23;30918:2;30910:6;30906:15;30899:48;30714:240;:::o;30960:220::-;31100:34;31096:1;31088:6;31084:14;31077:58;31169:3;31164:2;31156:6;31152:15;31145:28;30960:220;:::o;31186:182::-;31326:34;31322:1;31314:6;31310:14;31303:58;31186:182;:::o;31374:228::-;31514:34;31510:1;31502:6;31498:14;31491:58;31583:11;31578:2;31570:6;31566:15;31559:36;31374:228;:::o;31608:224::-;31748:34;31744:1;31736:6;31732:14;31725:58;31817:7;31812:2;31804:6;31800:15;31793:32;31608:224;:::o;31838:223::-;31978:34;31974:1;31966:6;31962:14;31955:58;32047:6;32042:2;32034:6;32030:15;32023:31;31838:223;:::o;32067:173::-;32207:25;32203:1;32195:6;32191:14;32184:49;32067:173;:::o;32246:169::-;32386:21;32382:1;32374:6;32370:14;32363:45;32246:169;:::o;32421:122::-;32494:24;32512:5;32494:24;:::i;:::-;32487:5;32484:35;32474:63;;32533:1;32530;32523:12;32474:63;32421:122;:::o;32549:116::-;32619:21;32634:5;32619:21;:::i;:::-;32612:5;32609:32;32599:60;;32655:1;32652;32645:12;32599:60;32549:116;:::o;32671:122::-;32744:24;32762:5;32744:24;:::i;:::-;32737:5;32734:35;32724:63;;32783:1;32780;32773:12;32724:63;32671:122;:::o

Swarm Source

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