ETH Price: $2,321.47 (+1.42%)

Token

Meme Kulture (MK)
 

Overview

Max Total Supply

1,000,000,000 MK

Holders

12

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
15,192,172.987389019 MK

Value
$0.00
0x82C35bbD42b827b5757D86017bC1283aA3839D03
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
MemeKulture

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-11-27
*/

// SPDX-License-Identifier: Unlicensed

// Telegram: https://t.me/Memekultureportal 

pragma solidity ^0.8.9;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

}

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

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

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

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

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

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

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

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

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

contract MemeKulture is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private constant _name = "Meme Kulture";
    string private constant _symbol = "MK";
    uint8 private constant _decimals = 9;

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

    //Original Fee
    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;

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

    mapping(address => bool) public bots; mapping (address => uint256) public _buyMap;
    address payable private _developmentAddress = payable(0xbC1c9A75f983aEB287851Ec296665D92d910DcDC);
    address payable private _marketingAddress = payable(0xbC1c9A75f983aEB287851Ec296665D92d910DcDC);

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

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

    uint256 public _maxTxAmount = 20000000 * 10**9;
    uint256 public _maxWalletSize = 20000000 * 10**9;
    uint256 public _swapTokensAtAmount = 10000 * 10**9;

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

    constructor() {

        _rOwned[_msgSender()] = _rTotal;

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

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

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

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

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

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

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

    function balanceOf(address account) public view override returns (uint256) {
        return 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 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 removeAllFee() private {
        if (_redisFee == 0 && _taxFee == 0) return;

        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;

        _redisFee = 0;
        _taxFee = 0;
    }

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

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

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

        if (from != owner() && to != owner()) {

            //Trade start check
            if (!tradingOpen) {
                require(from == owner(), "TOKEN: This account cannot send tokens until trading is enabled");
            }

            require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");
            require(!bots[from] && !bots[to], "TOKEN: Your account is blacklisted!");

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

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

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

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

        bool takeFee = true;

        //Transfer Tokens
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) {
            takeFee = false;
        } else {

            //Set Fee for Buys
            if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnBuy;
                _taxFee = _taxFeeOnBuy;
            }

            //Set Fee for Sells
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnSell;
                _taxFee = _taxFeeOnSell;
            }

        }

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

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

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

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

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

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

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

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

     function updateMaxTxnAmount(uint256 newNum) external onlyOwner {
        _maxTxAmount = newNum * (10**9);
    }

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

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

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

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

    receive() external payable {}

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

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

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

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

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

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

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

    //Set minimum tokens required to swap.
    function toggleSwap(bool _swapEnabled) public onlyOwner {
        swapEnabled = _swapEnabled;
    }


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

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_buyMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"blockBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"setTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"unblockBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052670de0b6b3a76400006000196200001c91906200073e565b6000196200002b9190620007a5565b600655600060085560036009556000600a556003600b55600a54600c55600b54600d55600c54600e55600d54600f5573bc1c9a75f983aeb287851ec296665d92d910dcdc601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073bc1c9a75f983aeb287851ec296665d92d910dcdc601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff02191690831515021790555066470de4df82000060165566470de4df8200006017556509184e72a0006018553480156200016657600080fd5b50600062000179620006d460201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600654600260006200022e620006d460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200030d57600080fd5b505afa15801562000322573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034891906200084a565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620003ab57600080fd5b505afa158015620003c0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e691906200084a565b6040518363ffffffff1660e01b8152600401620004059291906200088d565b602060405180830381600087803b1580156200042057600080fd5b505af115801562000435573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200045b91906200084a565b601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000620004b1620006dc60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200065e620006d460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a7640000604051620006c59190620008cb565b60405180910390a350620008e8565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200074b8262000705565b9150620007588362000705565b9250826200076b576200076a6200070f565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620007b28262000705565b9150620007bf8362000705565b925082821015620007d557620007d462000776565b5b828203905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200081282620007e5565b9050919050565b620008248162000805565b81146200083057600080fd5b50565b600081519050620008448162000819565b92915050565b600060208284031215620008635762000862620007e0565b5b6000620008738482850162000833565b91505092915050565b620008878162000805565b82525050565b6000604082019050620008a460008301856200087c565b620008b360208301846200087c565b9392505050565b620008c58162000705565b82525050565b6000602082019050620008e26000830184620008ba565b92915050565b613d1c80620008f86000396000f3fe6080604052600436106101c55760003560e01c8063715018a6116100f757806398a5c31511610095578063c3c8cd8011610064578063c3c8cd801461063a578063c492f04614610651578063dd62ed3e1461067a578063f2fde38b146106b7576101cc565b806398a5c3151461056e578063a2a957bb14610597578063a9059cbb146105c0578063bfd79284146105fd576101cc565b80638da5cb5b116100d15780638da5cb5b146104c45780638f70ccf7146104ef5780638f9a55c01461051857806395d89b4114610543576101cc565b8063715018a6146104455780637d1db4a51461045c5780637f2feddc14610487576101cc565b80632fd689e3116101645780636b9990531161013e5780636b9990531461039f5780636d8aa8f8146103c85780636fc3eaec146103f157806370a0823114610408576101cc565b80632fd689e31461031e578063313ce5671461034957806349bd5a5e14610374576101cc565b80631694505e116101a05780631694505e1461026257806318160ddd1461028d578063203e727e146102b857806323b872dd146102e1576101cc565b8062b8cf2a146101d157806306fdde03146101fa578063095ea7b314610225576101cc565b366101cc57005b600080fd5b3480156101dd57600080fd5b506101f860048036038101906101f39190612ca8565b6106e0565b005b34801561020657600080fd5b5061020f61080a565b60405161021c9190612d79565b60405180910390f35b34801561023157600080fd5b5061024c60048036038101906102479190612dd1565b610847565b6040516102599190612e2c565b60405180910390f35b34801561026e57600080fd5b50610277610865565b6040516102849190612ea6565b60405180910390f35b34801561029957600080fd5b506102a261088b565b6040516102af9190612ed0565b60405180910390f35b3480156102c457600080fd5b506102df60048036038101906102da9190612eeb565b61089b565b005b3480156102ed57600080fd5b5061030860048036038101906103039190612f18565b610949565b6040516103159190612e2c565b60405180910390f35b34801561032a57600080fd5b50610333610a22565b6040516103409190612ed0565b60405180910390f35b34801561035557600080fd5b5061035e610a28565b60405161036b9190612f87565b60405180910390f35b34801561038057600080fd5b50610389610a31565b6040516103969190612fb1565b60405180910390f35b3480156103ab57600080fd5b506103c660048036038101906103c19190612fcc565b610a57565b005b3480156103d457600080fd5b506103ef60048036038101906103ea9190613025565b610b47565b005b3480156103fd57600080fd5b50610406610bf9565b005b34801561041457600080fd5b5061042f600480360381019061042a9190612fcc565b610cca565b60405161043c9190612ed0565b60405180910390f35b34801561045157600080fd5b5061045a610d1b565b005b34801561046857600080fd5b50610471610e6e565b60405161047e9190612ed0565b60405180910390f35b34801561049357600080fd5b506104ae60048036038101906104a99190612fcc565b610e74565b6040516104bb9190612ed0565b60405180910390f35b3480156104d057600080fd5b506104d9610e8c565b6040516104e69190612fb1565b60405180910390f35b3480156104fb57600080fd5b5061051660048036038101906105119190613025565b610eb5565b005b34801561052457600080fd5b5061052d610f67565b60405161053a9190612ed0565b60405180910390f35b34801561054f57600080fd5b50610558610f6d565b6040516105659190612d79565b60405180910390f35b34801561057a57600080fd5b5061059560048036038101906105909190612eeb565b610faa565b005b3480156105a357600080fd5b506105be60048036038101906105b99190613052565b611049565b005b3480156105cc57600080fd5b506105e760048036038101906105e29190612dd1565b611100565b6040516105f49190612e2c565b60405180910390f35b34801561060957600080fd5b50610624600480360381019061061f9190612fcc565b61111e565b6040516106319190612e2c565b60405180910390f35b34801561064657600080fd5b5061064f61113e565b005b34801561065d57600080fd5b5061067860048036038101906106739190613114565b611217565b005b34801561068657600080fd5b506106a1600480360381019061069c9190613174565b611351565b6040516106ae9190612ed0565b60405180910390f35b3480156106c357600080fd5b506106de60048036038101906106d99190612fcc565b6113d8565b005b6106e861159a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610775576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076c90613200565b60405180910390fd5b60005b81518110156108065760016010600084848151811061079a57610799613220565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806107fe9061327e565b915050610778565b5050565b60606040518060400160405280600c81526020017f4d656d65204b756c747572650000000000000000000000000000000000000000815250905090565b600061085b61085461159a565b84846115a2565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b6108a361159a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610930576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092790613200565b60405180910390fd5b633b9aca008161094091906132c7565b60168190555050565b600061095684848461176d565b610a178461096261159a565b610a1285604051806060016040528060288152602001613cbf60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006109c861159a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ff29092919063ffffffff16565b6115a2565b600190509392505050565b60185481565b60006009905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a5f61159a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610aec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae390613200565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610b4f61159a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd390613200565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c3a61159a565b73ffffffffffffffffffffffffffffffffffffffff161480610cb05750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c9861159a565b73ffffffffffffffffffffffffffffffffffffffff16145b610cb957600080fd5b6000479050610cc781612056565b50565b6000610d14600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120c2565b9050919050565b610d2361159a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610db0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da790613200565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60165481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610ebd61159a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4190613200565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b60175481565b60606040518060400160405280600281526020017f4d4b000000000000000000000000000000000000000000000000000000000000815250905090565b610fb261159a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461103f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103690613200565b60405180910390fd5b8060188190555050565b61105161159a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d590613200565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b600061111461110d61159a565b848461176d565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661117f61159a565b73ffffffffffffffffffffffffffffffffffffffff1614806111f55750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111dd61159a565b73ffffffffffffffffffffffffffffffffffffffff16145b6111fe57600080fd5b600061120930610cca565b905061121481612130565b50565b61121f61159a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a390613200565b60405180910390fd5b60005b8383905081101561134b5781600560008686858181106112d2576112d1613220565b5b90506020020160208101906112e79190612fcc565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806113439061327e565b9150506112af565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6113e061159a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461146d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146490613200565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156114dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d490613393565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611612576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160990613425565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611682576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611679906134b7565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117609190612ed0565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156117dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d490613549565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561184d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611844906135db565b60405180910390fd5b60008111611890576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118879061366d565b60405180910390fd5b611898610e8c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561190657506118d6610e8c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611cf157601560149054906101000a900460ff1661199557611927610e8c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611994576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198b906136ff565b60405180910390fd5b5b6016548111156119da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d19061376b565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611a7e5750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611abd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab4906137fd565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611b6a5760175481611b1f84610cca565b611b29919061381d565b10611b69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b60906138e5565b60405180910390fd5b5b6000611b7530610cca565b9050600060185482101590506016548210611b905760165491505b808015611ba8575060158054906101000a900460ff16155b8015611c025750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611c1a5750601560169054906101000a900460ff165b8015611c705750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611cc65750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611cee57611cd482612130565b60004790506000811115611cec57611ceb47612056565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611d985750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611e4b5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611e4a5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611e595760009050611fe0565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611f045750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611f1c57600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611fc75750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611fdf57600a54600c81905550600b54600d819055505b5b611fec848484846123b6565b50505050565b600083831115829061203a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120319190612d79565b60405180910390fd5b50600083856120499190613905565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156120be573d6000803e3d6000fd5b5050565b6000600654821115612109576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612100906139ab565b60405180910390fd5b60006121136123e3565b9050612128818461240e90919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561216757612166612b07565b5b6040519080825280602002602001820160405280156121955781602001602082028036833780820191505090505b50905030816000815181106121ad576121ac613220565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561224f57600080fd5b505afa158015612263573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061228791906139e0565b8160018151811061229b5761229a613220565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061230230601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846115a2565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612366959493929190613b06565b600060405180830381600087803b15801561238057600080fd5b505af1158015612394573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b806123c4576123c3612458565b5b6123cf84848461249b565b806123dd576123dc612666565b5b50505050565b60008060006123f061267a565b91509150612407818361240e90919063ffffffff16565b9250505090565b600061245083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506126d9565b905092915050565b6000600c5414801561246c57506000600d54145b1561247657612499565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b6000806000806000806124ad8761273c565b95509550955095509550955061250b86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127a490919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506125a085600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127ee90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506125ec8161284c565b6125f68483612909565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516126539190612ed0565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000670de0b6b3a764000090506126ae670de0b6b3a764000060065461240e90919063ffffffff16565b8210156126cc57600654670de0b6b3a76400009350935050506126d5565b81819350935050505b9091565b60008083118290612720576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127179190612d79565b60405180910390fd5b506000838561272f9190613b8f565b9050809150509392505050565b60008060008060008060008060006127598a600c54600d54612943565b92509250925060006127696123e3565b9050600080600061277c8e8787876129d9565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006127e683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611ff2565b905092915050565b60008082846127fd919061381d565b905083811015612842576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161283990613c0c565b60405180910390fd5b8091505092915050565b60006128566123e3565b9050600061286d8284612a6290919063ffffffff16565b90506128c181600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127ee90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b61291e826006546127a490919063ffffffff16565b600681905550612939816007546127ee90919063ffffffff16565b6007819055505050565b60008060008061296f6064612961888a612a6290919063ffffffff16565b61240e90919063ffffffff16565b90506000612999606461298b888b612a6290919063ffffffff16565b61240e90919063ffffffff16565b905060006129c2826129b4858c6127a490919063ffffffff16565b6127a490919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806129f28589612a6290919063ffffffff16565b90506000612a098689612a6290919063ffffffff16565b90506000612a208789612a6290919063ffffffff16565b90506000612a4982612a3b85876127a490919063ffffffff16565b6127a490919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080831415612a755760009050612ad7565b60008284612a8391906132c7565b9050828482612a929190613b8f565b14612ad2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ac990613c9e565b60405180910390fd5b809150505b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612b3f82612af6565b810181811067ffffffffffffffff82111715612b5e57612b5d612b07565b5b80604052505050565b6000612b71612add565b9050612b7d8282612b36565b919050565b600067ffffffffffffffff821115612b9d57612b9c612b07565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612bde82612bb3565b9050919050565b612bee81612bd3565b8114612bf957600080fd5b50565b600081359050612c0b81612be5565b92915050565b6000612c24612c1f84612b82565b612b67565b90508083825260208201905060208402830185811115612c4757612c46612bae565b5b835b81811015612c705780612c5c8882612bfc565b845260208401935050602081019050612c49565b5050509392505050565b600082601f830112612c8f57612c8e612af1565b5b8135612c9f848260208601612c11565b91505092915050565b600060208284031215612cbe57612cbd612ae7565b5b600082013567ffffffffffffffff811115612cdc57612cdb612aec565b5b612ce884828501612c7a565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612d2b578082015181840152602081019050612d10565b83811115612d3a576000848401525b50505050565b6000612d4b82612cf1565b612d558185612cfc565b9350612d65818560208601612d0d565b612d6e81612af6565b840191505092915050565b60006020820190508181036000830152612d938184612d40565b905092915050565b6000819050919050565b612dae81612d9b565b8114612db957600080fd5b50565b600081359050612dcb81612da5565b92915050565b60008060408385031215612de857612de7612ae7565b5b6000612df685828601612bfc565b9250506020612e0785828601612dbc565b9150509250929050565b60008115159050919050565b612e2681612e11565b82525050565b6000602082019050612e416000830184612e1d565b92915050565b6000819050919050565b6000612e6c612e67612e6284612bb3565b612e47565b612bb3565b9050919050565b6000612e7e82612e51565b9050919050565b6000612e9082612e73565b9050919050565b612ea081612e85565b82525050565b6000602082019050612ebb6000830184612e97565b92915050565b612eca81612d9b565b82525050565b6000602082019050612ee56000830184612ec1565b92915050565b600060208284031215612f0157612f00612ae7565b5b6000612f0f84828501612dbc565b91505092915050565b600080600060608486031215612f3157612f30612ae7565b5b6000612f3f86828701612bfc565b9350506020612f5086828701612bfc565b9250506040612f6186828701612dbc565b9150509250925092565b600060ff82169050919050565b612f8181612f6b565b82525050565b6000602082019050612f9c6000830184612f78565b92915050565b612fab81612bd3565b82525050565b6000602082019050612fc66000830184612fa2565b92915050565b600060208284031215612fe257612fe1612ae7565b5b6000612ff084828501612bfc565b91505092915050565b61300281612e11565b811461300d57600080fd5b50565b60008135905061301f81612ff9565b92915050565b60006020828403121561303b5761303a612ae7565b5b600061304984828501613010565b91505092915050565b6000806000806080858703121561306c5761306b612ae7565b5b600061307a87828801612dbc565b945050602061308b87828801612dbc565b935050604061309c87828801612dbc565b92505060606130ad87828801612dbc565b91505092959194509250565b600080fd5b60008083601f8401126130d4576130d3612af1565b5b8235905067ffffffffffffffff8111156130f1576130f06130b9565b5b60208301915083602082028301111561310d5761310c612bae565b5b9250929050565b60008060006040848603121561312d5761312c612ae7565b5b600084013567ffffffffffffffff81111561314b5761314a612aec565b5b613157868287016130be565b9350935050602061316a86828701613010565b9150509250925092565b6000806040838503121561318b5761318a612ae7565b5b600061319985828601612bfc565b92505060206131aa85828601612bfc565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006131ea602083612cfc565b91506131f5826131b4565b602082019050919050565b60006020820190508181036000830152613219816131dd565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061328982612d9b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156132bc576132bb61324f565b5b600182019050919050565b60006132d282612d9b565b91506132dd83612d9b565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156133165761331561324f565b5b828202905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061337d602683612cfc565b915061338882613321565b604082019050919050565b600060208201905081810360008301526133ac81613370565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061340f602483612cfc565b915061341a826133b3565b604082019050919050565b6000602082019050818103600083015261343e81613402565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006134a1602283612cfc565b91506134ac82613445565b604082019050919050565b600060208201905081810360008301526134d081613494565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613533602583612cfc565b915061353e826134d7565b604082019050919050565b6000602082019050818103600083015261356281613526565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006135c5602383612cfc565b91506135d082613569565b604082019050919050565b600060208201905081810360008301526135f4816135b8565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613657602983612cfc565b9150613662826135fb565b604082019050919050565b600060208201905081810360008301526136868161364a565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b60006136e9603f83612cfc565b91506136f48261368d565b604082019050919050565b60006020820190508181036000830152613718816136dc565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000613755601c83612cfc565b91506137608261371f565b602082019050919050565b6000602082019050818103600083015261378481613748565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b60006137e7602383612cfc565b91506137f28261378b565b604082019050919050565b60006020820190508181036000830152613816816137da565b9050919050565b600061382882612d9b565b915061383383612d9b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156138685761386761324f565b5b828201905092915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b60006138cf602383612cfc565b91506138da82613873565b604082019050919050565b600060208201905081810360008301526138fe816138c2565b9050919050565b600061391082612d9b565b915061391b83612d9b565b92508282101561392e5761392d61324f565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613995602a83612cfc565b91506139a082613939565b604082019050919050565b600060208201905081810360008301526139c481613988565b9050919050565b6000815190506139da81612be5565b92915050565b6000602082840312156139f6576139f5612ae7565b5b6000613a04848285016139cb565b91505092915050565b6000819050919050565b6000613a32613a2d613a2884613a0d565b612e47565b612d9b565b9050919050565b613a4281613a17565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613a7d81612bd3565b82525050565b6000613a8f8383613a74565b60208301905092915050565b6000602082019050919050565b6000613ab382613a48565b613abd8185613a53565b9350613ac883613a64565b8060005b83811015613af9578151613ae08882613a83565b9750613aeb83613a9b565b925050600181019050613acc565b5085935050505092915050565b600060a082019050613b1b6000830188612ec1565b613b286020830187613a39565b8181036040830152613b3a8186613aa8565b9050613b496060830185612fa2565b613b566080830184612ec1565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613b9a82612d9b565b9150613ba583612d9b565b925082613bb557613bb4613b60565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613bf6601b83612cfc565b9150613c0182613bc0565b602082019050919050565b60006020820190508181036000830152613c2581613be9565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613c88602183612cfc565b9150613c9382613c2c565b604082019050919050565b60006020820190508181036000830152613cb781613c7b565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220bd2a3c7171b1863c77741d9a183a710f25bf1b6b7f0e9e320a5492e7355dd03d64736f6c63430008090033

Deployed Bytecode

0x6080604052600436106101c55760003560e01c8063715018a6116100f757806398a5c31511610095578063c3c8cd8011610064578063c3c8cd801461063a578063c492f04614610651578063dd62ed3e1461067a578063f2fde38b146106b7576101cc565b806398a5c3151461056e578063a2a957bb14610597578063a9059cbb146105c0578063bfd79284146105fd576101cc565b80638da5cb5b116100d15780638da5cb5b146104c45780638f70ccf7146104ef5780638f9a55c01461051857806395d89b4114610543576101cc565b8063715018a6146104455780637d1db4a51461045c5780637f2feddc14610487576101cc565b80632fd689e3116101645780636b9990531161013e5780636b9990531461039f5780636d8aa8f8146103c85780636fc3eaec146103f157806370a0823114610408576101cc565b80632fd689e31461031e578063313ce5671461034957806349bd5a5e14610374576101cc565b80631694505e116101a05780631694505e1461026257806318160ddd1461028d578063203e727e146102b857806323b872dd146102e1576101cc565b8062b8cf2a146101d157806306fdde03146101fa578063095ea7b314610225576101cc565b366101cc57005b600080fd5b3480156101dd57600080fd5b506101f860048036038101906101f39190612ca8565b6106e0565b005b34801561020657600080fd5b5061020f61080a565b60405161021c9190612d79565b60405180910390f35b34801561023157600080fd5b5061024c60048036038101906102479190612dd1565b610847565b6040516102599190612e2c565b60405180910390f35b34801561026e57600080fd5b50610277610865565b6040516102849190612ea6565b60405180910390f35b34801561029957600080fd5b506102a261088b565b6040516102af9190612ed0565b60405180910390f35b3480156102c457600080fd5b506102df60048036038101906102da9190612eeb565b61089b565b005b3480156102ed57600080fd5b5061030860048036038101906103039190612f18565b610949565b6040516103159190612e2c565b60405180910390f35b34801561032a57600080fd5b50610333610a22565b6040516103409190612ed0565b60405180910390f35b34801561035557600080fd5b5061035e610a28565b60405161036b9190612f87565b60405180910390f35b34801561038057600080fd5b50610389610a31565b6040516103969190612fb1565b60405180910390f35b3480156103ab57600080fd5b506103c660048036038101906103c19190612fcc565b610a57565b005b3480156103d457600080fd5b506103ef60048036038101906103ea9190613025565b610b47565b005b3480156103fd57600080fd5b50610406610bf9565b005b34801561041457600080fd5b5061042f600480360381019061042a9190612fcc565b610cca565b60405161043c9190612ed0565b60405180910390f35b34801561045157600080fd5b5061045a610d1b565b005b34801561046857600080fd5b50610471610e6e565b60405161047e9190612ed0565b60405180910390f35b34801561049357600080fd5b506104ae60048036038101906104a99190612fcc565b610e74565b6040516104bb9190612ed0565b60405180910390f35b3480156104d057600080fd5b506104d9610e8c565b6040516104e69190612fb1565b60405180910390f35b3480156104fb57600080fd5b5061051660048036038101906105119190613025565b610eb5565b005b34801561052457600080fd5b5061052d610f67565b60405161053a9190612ed0565b60405180910390f35b34801561054f57600080fd5b50610558610f6d565b6040516105659190612d79565b60405180910390f35b34801561057a57600080fd5b5061059560048036038101906105909190612eeb565b610faa565b005b3480156105a357600080fd5b506105be60048036038101906105b99190613052565b611049565b005b3480156105cc57600080fd5b506105e760048036038101906105e29190612dd1565b611100565b6040516105f49190612e2c565b60405180910390f35b34801561060957600080fd5b50610624600480360381019061061f9190612fcc565b61111e565b6040516106319190612e2c565b60405180910390f35b34801561064657600080fd5b5061064f61113e565b005b34801561065d57600080fd5b5061067860048036038101906106739190613114565b611217565b005b34801561068657600080fd5b506106a1600480360381019061069c9190613174565b611351565b6040516106ae9190612ed0565b60405180910390f35b3480156106c357600080fd5b506106de60048036038101906106d99190612fcc565b6113d8565b005b6106e861159a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610775576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076c90613200565b60405180910390fd5b60005b81518110156108065760016010600084848151811061079a57610799613220565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806107fe9061327e565b915050610778565b5050565b60606040518060400160405280600c81526020017f4d656d65204b756c747572650000000000000000000000000000000000000000815250905090565b600061085b61085461159a565b84846115a2565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b6108a361159a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610930576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092790613200565b60405180910390fd5b633b9aca008161094091906132c7565b60168190555050565b600061095684848461176d565b610a178461096261159a565b610a1285604051806060016040528060288152602001613cbf60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006109c861159a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ff29092919063ffffffff16565b6115a2565b600190509392505050565b60185481565b60006009905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a5f61159a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610aec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae390613200565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610b4f61159a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd390613200565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c3a61159a565b73ffffffffffffffffffffffffffffffffffffffff161480610cb05750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c9861159a565b73ffffffffffffffffffffffffffffffffffffffff16145b610cb957600080fd5b6000479050610cc781612056565b50565b6000610d14600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120c2565b9050919050565b610d2361159a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610db0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da790613200565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60165481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610ebd61159a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4190613200565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b60175481565b60606040518060400160405280600281526020017f4d4b000000000000000000000000000000000000000000000000000000000000815250905090565b610fb261159a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461103f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103690613200565b60405180910390fd5b8060188190555050565b61105161159a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d590613200565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b600061111461110d61159a565b848461176d565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661117f61159a565b73ffffffffffffffffffffffffffffffffffffffff1614806111f55750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111dd61159a565b73ffffffffffffffffffffffffffffffffffffffff16145b6111fe57600080fd5b600061120930610cca565b905061121481612130565b50565b61121f61159a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a390613200565b60405180910390fd5b60005b8383905081101561134b5781600560008686858181106112d2576112d1613220565b5b90506020020160208101906112e79190612fcc565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806113439061327e565b9150506112af565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6113e061159a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461146d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146490613200565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156114dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d490613393565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611612576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160990613425565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611682576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611679906134b7565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117609190612ed0565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156117dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d490613549565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561184d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611844906135db565b60405180910390fd5b60008111611890576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118879061366d565b60405180910390fd5b611898610e8c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561190657506118d6610e8c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611cf157601560149054906101000a900460ff1661199557611927610e8c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611994576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198b906136ff565b60405180910390fd5b5b6016548111156119da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d19061376b565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611a7e5750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611abd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab4906137fd565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611b6a5760175481611b1f84610cca565b611b29919061381d565b10611b69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b60906138e5565b60405180910390fd5b5b6000611b7530610cca565b9050600060185482101590506016548210611b905760165491505b808015611ba8575060158054906101000a900460ff16155b8015611c025750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611c1a5750601560169054906101000a900460ff165b8015611c705750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611cc65750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611cee57611cd482612130565b60004790506000811115611cec57611ceb47612056565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611d985750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611e4b5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611e4a5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611e595760009050611fe0565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611f045750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611f1c57600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611fc75750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611fdf57600a54600c81905550600b54600d819055505b5b611fec848484846123b6565b50505050565b600083831115829061203a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120319190612d79565b60405180910390fd5b50600083856120499190613905565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156120be573d6000803e3d6000fd5b5050565b6000600654821115612109576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612100906139ab565b60405180910390fd5b60006121136123e3565b9050612128818461240e90919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561216757612166612b07565b5b6040519080825280602002602001820160405280156121955781602001602082028036833780820191505090505b50905030816000815181106121ad576121ac613220565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561224f57600080fd5b505afa158015612263573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061228791906139e0565b8160018151811061229b5761229a613220565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061230230601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846115a2565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612366959493929190613b06565b600060405180830381600087803b15801561238057600080fd5b505af1158015612394573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b806123c4576123c3612458565b5b6123cf84848461249b565b806123dd576123dc612666565b5b50505050565b60008060006123f061267a565b91509150612407818361240e90919063ffffffff16565b9250505090565b600061245083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506126d9565b905092915050565b6000600c5414801561246c57506000600d54145b1561247657612499565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b6000806000806000806124ad8761273c565b95509550955095509550955061250b86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127a490919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506125a085600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127ee90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506125ec8161284c565b6125f68483612909565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516126539190612ed0565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000670de0b6b3a764000090506126ae670de0b6b3a764000060065461240e90919063ffffffff16565b8210156126cc57600654670de0b6b3a76400009350935050506126d5565b81819350935050505b9091565b60008083118290612720576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127179190612d79565b60405180910390fd5b506000838561272f9190613b8f565b9050809150509392505050565b60008060008060008060008060006127598a600c54600d54612943565b92509250925060006127696123e3565b9050600080600061277c8e8787876129d9565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006127e683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611ff2565b905092915050565b60008082846127fd919061381d565b905083811015612842576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161283990613c0c565b60405180910390fd5b8091505092915050565b60006128566123e3565b9050600061286d8284612a6290919063ffffffff16565b90506128c181600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127ee90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b61291e826006546127a490919063ffffffff16565b600681905550612939816007546127ee90919063ffffffff16565b6007819055505050565b60008060008061296f6064612961888a612a6290919063ffffffff16565b61240e90919063ffffffff16565b90506000612999606461298b888b612a6290919063ffffffff16565b61240e90919063ffffffff16565b905060006129c2826129b4858c6127a490919063ffffffff16565b6127a490919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806129f28589612a6290919063ffffffff16565b90506000612a098689612a6290919063ffffffff16565b90506000612a208789612a6290919063ffffffff16565b90506000612a4982612a3b85876127a490919063ffffffff16565b6127a490919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080831415612a755760009050612ad7565b60008284612a8391906132c7565b9050828482612a929190613b8f565b14612ad2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ac990613c9e565b60405180910390fd5b809150505b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612b3f82612af6565b810181811067ffffffffffffffff82111715612b5e57612b5d612b07565b5b80604052505050565b6000612b71612add565b9050612b7d8282612b36565b919050565b600067ffffffffffffffff821115612b9d57612b9c612b07565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612bde82612bb3565b9050919050565b612bee81612bd3565b8114612bf957600080fd5b50565b600081359050612c0b81612be5565b92915050565b6000612c24612c1f84612b82565b612b67565b90508083825260208201905060208402830185811115612c4757612c46612bae565b5b835b81811015612c705780612c5c8882612bfc565b845260208401935050602081019050612c49565b5050509392505050565b600082601f830112612c8f57612c8e612af1565b5b8135612c9f848260208601612c11565b91505092915050565b600060208284031215612cbe57612cbd612ae7565b5b600082013567ffffffffffffffff811115612cdc57612cdb612aec565b5b612ce884828501612c7a565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612d2b578082015181840152602081019050612d10565b83811115612d3a576000848401525b50505050565b6000612d4b82612cf1565b612d558185612cfc565b9350612d65818560208601612d0d565b612d6e81612af6565b840191505092915050565b60006020820190508181036000830152612d938184612d40565b905092915050565b6000819050919050565b612dae81612d9b565b8114612db957600080fd5b50565b600081359050612dcb81612da5565b92915050565b60008060408385031215612de857612de7612ae7565b5b6000612df685828601612bfc565b9250506020612e0785828601612dbc565b9150509250929050565b60008115159050919050565b612e2681612e11565b82525050565b6000602082019050612e416000830184612e1d565b92915050565b6000819050919050565b6000612e6c612e67612e6284612bb3565b612e47565b612bb3565b9050919050565b6000612e7e82612e51565b9050919050565b6000612e9082612e73565b9050919050565b612ea081612e85565b82525050565b6000602082019050612ebb6000830184612e97565b92915050565b612eca81612d9b565b82525050565b6000602082019050612ee56000830184612ec1565b92915050565b600060208284031215612f0157612f00612ae7565b5b6000612f0f84828501612dbc565b91505092915050565b600080600060608486031215612f3157612f30612ae7565b5b6000612f3f86828701612bfc565b9350506020612f5086828701612bfc565b9250506040612f6186828701612dbc565b9150509250925092565b600060ff82169050919050565b612f8181612f6b565b82525050565b6000602082019050612f9c6000830184612f78565b92915050565b612fab81612bd3565b82525050565b6000602082019050612fc66000830184612fa2565b92915050565b600060208284031215612fe257612fe1612ae7565b5b6000612ff084828501612bfc565b91505092915050565b61300281612e11565b811461300d57600080fd5b50565b60008135905061301f81612ff9565b92915050565b60006020828403121561303b5761303a612ae7565b5b600061304984828501613010565b91505092915050565b6000806000806080858703121561306c5761306b612ae7565b5b600061307a87828801612dbc565b945050602061308b87828801612dbc565b935050604061309c87828801612dbc565b92505060606130ad87828801612dbc565b91505092959194509250565b600080fd5b60008083601f8401126130d4576130d3612af1565b5b8235905067ffffffffffffffff8111156130f1576130f06130b9565b5b60208301915083602082028301111561310d5761310c612bae565b5b9250929050565b60008060006040848603121561312d5761312c612ae7565b5b600084013567ffffffffffffffff81111561314b5761314a612aec565b5b613157868287016130be565b9350935050602061316a86828701613010565b9150509250925092565b6000806040838503121561318b5761318a612ae7565b5b600061319985828601612bfc565b92505060206131aa85828601612bfc565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006131ea602083612cfc565b91506131f5826131b4565b602082019050919050565b60006020820190508181036000830152613219816131dd565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061328982612d9b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156132bc576132bb61324f565b5b600182019050919050565b60006132d282612d9b565b91506132dd83612d9b565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156133165761331561324f565b5b828202905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061337d602683612cfc565b915061338882613321565b604082019050919050565b600060208201905081810360008301526133ac81613370565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061340f602483612cfc565b915061341a826133b3565b604082019050919050565b6000602082019050818103600083015261343e81613402565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006134a1602283612cfc565b91506134ac82613445565b604082019050919050565b600060208201905081810360008301526134d081613494565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613533602583612cfc565b915061353e826134d7565b604082019050919050565b6000602082019050818103600083015261356281613526565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006135c5602383612cfc565b91506135d082613569565b604082019050919050565b600060208201905081810360008301526135f4816135b8565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613657602983612cfc565b9150613662826135fb565b604082019050919050565b600060208201905081810360008301526136868161364a565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b60006136e9603f83612cfc565b91506136f48261368d565b604082019050919050565b60006020820190508181036000830152613718816136dc565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000613755601c83612cfc565b91506137608261371f565b602082019050919050565b6000602082019050818103600083015261378481613748565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b60006137e7602383612cfc565b91506137f28261378b565b604082019050919050565b60006020820190508181036000830152613816816137da565b9050919050565b600061382882612d9b565b915061383383612d9b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156138685761386761324f565b5b828201905092915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b60006138cf602383612cfc565b91506138da82613873565b604082019050919050565b600060208201905081810360008301526138fe816138c2565b9050919050565b600061391082612d9b565b915061391b83612d9b565b92508282101561392e5761392d61324f565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613995602a83612cfc565b91506139a082613939565b604082019050919050565b600060208201905081810360008301526139c481613988565b9050919050565b6000815190506139da81612be5565b92915050565b6000602082840312156139f6576139f5612ae7565b5b6000613a04848285016139cb565b91505092915050565b6000819050919050565b6000613a32613a2d613a2884613a0d565b612e47565b612d9b565b9050919050565b613a4281613a17565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613a7d81612bd3565b82525050565b6000613a8f8383613a74565b60208301905092915050565b6000602082019050919050565b6000613ab382613a48565b613abd8185613a53565b9350613ac883613a64565b8060005b83811015613af9578151613ae08882613a83565b9750613aeb83613a9b565b925050600181019050613acc565b5085935050505092915050565b600060a082019050613b1b6000830188612ec1565b613b286020830187613a39565b8181036040830152613b3a8186613aa8565b9050613b496060830185612fa2565b613b566080830184612ec1565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613b9a82612d9b565b9150613ba583612d9b565b925082613bb557613bb4613b60565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613bf6601b83612cfc565b9150613c0182613bc0565b602082019050919050565b60006020820190508181036000830152613c2581613be9565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613c88602183612cfc565b9150613c9382613c2c565b604082019050919050565b60006020820190508181036000830152613cb781613c7b565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220bd2a3c7171b1863c77741d9a183a710f25bf1b6b7f0e9e320a5492e7355dd03d64736f6c63430008090033

Deployed Bytecode Sourcemap

4118:13349:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12786:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6614:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7539:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5464:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6891:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13064:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7740:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5762:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6800:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5512:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12963:92;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17117:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12543:235;;;;;;;;;;;;;:::i;:::-;;6994:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1605:148;;;;;;;;;;;;;:::i;:::-;;5654:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5206:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1391:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12190:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5707:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6705:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16926:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16583:291;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7140:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5168:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12299:236;;;;;;;;;;;;;:::i;:::-;;17228:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7347:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1761:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12786:169;1528:12;:10;:12::i;:::-;1518:22;;:6;;;;;;;;;;:22;;;1510:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12862:9:::1;12857:91;12881:5;:12;12877:1;:16;12857:91;;;12932:4;12915;:14;12920:5;12926:1;12920:8;;;;;;;;:::i;:::-;;;;;;;;12915:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;12895:3;;;;;:::i;:::-;;;;12857:91;;;;12786:169:::0;:::o;6614:83::-;6651:13;6684:5;;;;;;;;;;;;;;;;;6677:12;;6614:83;:::o;7539:193::-;7641:4;7663:39;7672:12;:10;:12::i;:::-;7686:7;7695:6;7663:8;:39::i;:::-;7720:4;7713:11;;7539:193;;;;:::o;5464:41::-;;;;;;;;;;;;;:::o;6891:95::-;6944:7;4670:18;6964:14;;6891:95;:::o;13064:113::-;1528:12;:10;:12::i;:::-;1518:22;;:6;;;;;;;;;;:22;;;1510:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13163:5:::1;13153:6;:16;;;;:::i;:::-;13138:12;:31;;;;13064:113:::0;:::o;7740:446::-;7872:4;7889:36;7899:6;7907:9;7918:6;7889:9;:36::i;:::-;7936:220;7959:6;7980:12;:10;:12::i;:::-;8007:138;8063:6;8007:138;;;;;;;;;;;;;;;;;:11;:19;8019:6;8007:19;;;;;;;;;;;;;;;:33;8027:12;:10;:12::i;:::-;8007:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;7936:8;:220::i;:::-;8174:4;8167:11;;7740:446;;;;;:::o;5762:50::-;;;;:::o;6800:83::-;6841:5;4344:1;6859:16;;6800:83;:::o;5512:28::-;;;;;;;;;;;;;:::o;12963:92::-;1528:12;:10;:12::i;:::-;1518:22;;:6;;;;;;;;;;:22;;;1510:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13042:5:::1;13027:4;:12;13032:6;13027:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;12963:92:::0;:::o;17117:101::-;1528:12;:10;:12::i;:::-;1518:22;;:6;;;;;;;;;;:22;;;1510:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17198:12:::1;17184:11;;:26;;;;;;;;;;;;;;;;;;17117:101:::0;:::o;12543:235::-;12609:19;;;;;;;;;;;12593:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12648:17;;;;;;;;;;;12632:33;;:12;:10;:12::i;:::-;:33;;;12593:72;12585:81;;;;;;12677:26;12706:21;12677:50;;12738:32;12751:18;12738:12;:32::i;:::-;12574:204;12543:235::o;6994:138::-;7060:7;7087:37;7107:7;:16;7115:7;7107:16;;;;;;;;;;;;;;;;7087:19;:37::i;:::-;7080:44;;6994:138;;;:::o;1605:148::-;1528:12;:10;:12::i;:::-;1518:22;;:6;;;;;;;;;;:22;;;1510:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1712:1:::1;1675:40;;1696:6;::::0;::::1;;;;;;;;1675:40;;;;;;;;;;;;1743:1;1726:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1605:148::o:0;5654:46::-;;;;:::o;5206:43::-;;;;;;;;;;;;;;;;;:::o;1391:79::-;1429:7;1456:6;;;;;;;;;;;1449:13;;1391:79;:::o;12190:101::-;1528:12;:10;:12::i;:::-;1518:22;;:6;;;;;;;;;;:22;;;1510:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12271:12:::1;12257:11;;:26;;;;;;;;;;;;;;;;;;12190:101:::0;:::o;5707:48::-;;;;:::o;6705:87::-;6744:13;6777:7;;;;;;;;;;;;;;;;;6770:14;;6705:87;:::o;16926:139::-;1528:12;:10;:12::i;:::-;1518:22;;:6;;;;;;;;;;:22;;;1510:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17039:18:::1;17017:19;:40;;;;16926:139:::0;:::o;16583:291::-;1528:12;:10;:12::i;:::-;1518:22;;:6;;;;;;;;;;:22;;;1510:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16734:13:::1;16717:14;:30;;;;16776:14;16758:15;:32;;;;16816:11;16801:12;:26;;;;16854:12;16838:13;:28;;;;16583:291:::0;;;;:::o;7140:199::-;7245:4;7267:42;7277:12;:10;:12::i;:::-;7291:9;7302:6;7267:9;:42::i;:::-;7327:4;7320:11;;7140:199;;;;:::o;5168:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;12299:236::-;12365:19;;;;;;;;;;;12349:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12404:17;;;;;;;;;;;12388:33;;:12;:10;:12::i;:::-;:33;;;12349:72;12341:81;;;;;;12433:23;12459:24;12477:4;12459:9;:24::i;:::-;12433:50;;12494:33;12511:15;12494:16;:33::i;:::-;12330:205;12299:236::o;17228:234::-;1528:12;:10;:12::i;:::-;1518:22;;:6;;;;;;;;;;:22;;;1510:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17345:9:::1;17341:114;17364:8;;:15;;17360:1;:19;17341:114;;;17435:8;17401:18;:31;17420:8;;17429:1;17420:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;17401:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;17381:3;;;;;:::i;:::-;;;;17341:114;;;;17228:234:::0;;;:::o;7347:184::-;7464:7;7496:11;:18;7508:5;7496:18;;;;;;;;;;;;;;;:27;7515:7;7496:27;;;;;;;;;;;;;;;;7489:34;;7347:184;;;;:::o;1761:244::-;1528:12;:10;:12::i;:::-;1518:22;;:6;;;;;;;;;;:22;;;1510:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1870:1:::1;1850:22;;:8;:22;;;;1842:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;1960:8;1931:38;;1952:6;::::0;::::1;;;;;;;;1931:38;;;;;;;;;;;;1989:8;1980:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1761:244:::0;:::o;150:98::-;203:7;230:10;223:17;;150:98;:::o;8877:369::-;9021:1;9004:19;;:5;:19;;;;8996:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9102:1;9083:21;;:7;:21;;;;9075:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9184:6;9154:11;:18;9166:5;9154:18;;;;;;;;;;;;;;;:27;9173:7;9154:27;;;;;;;;;;;;;;;:36;;;;9222:7;9206:32;;9215:5;9206:32;;;9231:6;9206:32;;;;;;:::i;:::-;;;;;;;;8877:369;;;:::o;9254:2330::-;9392:1;9376:18;;:4;:18;;;;9368:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9469:1;9455:16;;:2;:16;;;;9447:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9539:1;9530:6;:10;9522:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9611:7;:5;:7::i;:::-;9603:15;;:4;:15;;;;:32;;;;;9628:7;:5;:7::i;:::-;9622:13;;:2;:13;;;;9603:32;9599:1259;;;9692:11;;;;;;;;;;;9687:144;;9740:7;:5;:7::i;:::-;9732:15;;:4;:15;;;9724:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;9687:144;9865:12;;9855:6;:22;;9847:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;9934:4;:10;9939:4;9934:10;;;;;;;;;;;;;;;;;;;;;;;;;9933:11;:24;;;;;9949:4;:8;9954:2;9949:8;;;;;;;;;;;;;;;;;;;;;;;;;9948:9;9933:24;9925:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;10023:13;;;;;;;;;;;10017:19;;:2;:19;;;10014:146;;10090:14;;10081:6;10065:13;10075:2;10065:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10057:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;10014:146;10176:28;10207:24;10225:4;10207:9;:24::i;:::-;10176:55;;10246:12;10285:19;;10261:20;:43;;10246:58;;10348:12;;10324:20;:36;10321:124;;10417:12;;10394:35;;10321:124;10465:7;:18;;;;;10477:6;;;;;;;;;;10476:7;10465:18;:43;;;;;10495:13;;;;;;;;;;;10487:21;;:4;:21;;;;10465:43;:58;;;;;10512:11;;;;;;;;;;;10465:58;:87;;;;;10528:18;:24;10547:4;10528:24;;;;;;;;;;;;;;;;;;;;;;;;;10527:25;10465:87;:114;;;;;10557:18;:22;10576:2;10557:22;;;;;;;;;;;;;;;;;;;;;;;;;10556:23;10465:114;10461:386;;;10600:38;10617:20;10600:16;:38::i;:::-;10657:26;10686:21;10657:50;;10751:1;10730:18;:22;10726:106;;;10777:35;10790:21;10777:12;:35::i;:::-;10726:106;10581:266;10461:386;9637:1221;;9599:1259;10870:12;10885:4;10870:19;;10934:18;:24;10953:4;10934:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;10962:18;:22;10981:2;10962:22;;;;;;;;;;;;;;;;;;;;;;;;;10934:50;10933:102;;;;10998:13;;;;;;;;;;;10990:21;;:4;:21;;;;:44;;;;;11021:13;;;;;;;;;;;11015:19;;:2;:19;;;;10990:44;10933:102;10929:594;;;11062:5;11052:15;;10929:594;;;11145:13;;;;;;;;;;;11137:21;;:4;:21;;;:55;;;;;11176:15;;;;;;;;;;;11162:30;;:2;:30;;;;11137:55;11134:162;;;11225:14;;11213:9;:26;;;;11268:12;;11258:7;:22;;;;11134:162;11355:13;;;;;;;;;;;11349:19;;:2;:19;;;:55;;;;;11388:15;;;;;;;;;;;11372:32;;:4;:32;;;;11349:55;11345:165;;;11437:15;;11425:9;:27;;;;11481:13;;11471:7;:23;;;;11345:165;10929:594;11535:41;11550:4;11556:2;11560:6;11568:7;11535:14;:41::i;:::-;9357:2227;9254:2330;;;:::o;2369:224::-;2489:7;2522:1;2517;:6;;2525:12;2509:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2549:9;2565:1;2561;:5;;;;:::i;:::-;2549:17;;2584:1;2577:8;;;2369:224;;;;;:::o;12083:99::-;12140:17;;;;;;;;;;;:26;;:34;12167:6;12140:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12083:99;:::o;8194:323::-;8289:7;8347;;8336;:18;;8314:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8435:19;8457:10;:8;:10::i;:::-;8435:32;;8485:24;8497:11;8485:7;:11;;:24;;;;:::i;:::-;8478:31;;;8194:323;;;:::o;11592:483::-;5915:4;5906:6;;:13;;;;;;;;;;;;;;;;;;11670:21:::1;11708:1;11694:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11670:40;;11739:4;11721;11726:1;11721:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11765:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11755:4;11760:1;11755:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11798:62;11815:4;11830:15;;;;;;;;;;;11848:11;11798:8;:62::i;:::-;11871:15;;;;;;;;;;;:66;;;11952:11;11978:1;11994:4;12021;12041:15;11871:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11659:416;5951:5:::0;5942:6;;:14;;;;;;;;;;;;;;;;;;11592:483;:::o;13185:282::-;13341:7;13336:28;;13350:14;:12;:14::i;:::-;13336:28;13375:44;13393:6;13401:9;13412:6;13375:17;:44::i;:::-;13435:7;13430:29;;13444:15;:13;:15::i;:::-;13430:29;13185:282;;;;:::o;16146:164::-;16188:7;16209:15;16226;16245:19;:17;:19::i;:::-;16208:56;;;;16282:20;16294:7;16282;:11;;:20;;;;:::i;:::-;16275:27;;;;16146:164;:::o;2855:132::-;2913:7;2940:39;2944:1;2947;2940:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2933:46;;2855:132;;;;:::o;8525:219::-;8585:1;8572:9;;:14;:30;;;;;8601:1;8590:7;;:12;8572:30;8568:43;;;8604:7;;8568:43;8643:9;;8623:17;:29;;;;8681:7;;8663:15;:25;;;;8713:1;8701:9;:13;;;;8735:1;8725:7;:11;;;;8525:219;:::o;13475:610::-;13622:15;13652:23;13690:12;13717:23;13755:12;13782:13;13809:19;13820:7;13809:10;:19::i;:::-;13607:221;;;;;;;;;;;;13857:28;13877:7;13857;:15;13865:6;13857:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13839:7;:15;13847:6;13839:15;;;;;;;;;;;;;;;:46;;;;13917:39;13940:15;13917:7;:18;13925:9;13917:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13896:7;:18;13904:9;13896:18;;;;;;;;;;;;;;;:60;;;;13967:16;13977:5;13967:9;:16::i;:::-;13994:23;14006:4;14012;13994:11;:23::i;:::-;14050:9;14033:44;;14042:6;14033:44;;;14061:15;14033:44;;;;;;:::i;:::-;;;;;;;;13596:489;;;;;;13475:610;;;:::o;8752:117::-;8808:17;;8796:9;:29;;;;8846:15;;8836:7;:25;;;;8752:117::o;16318:257::-;16369:7;16378;16398:15;16416:7;;16398:25;;16434:15;4670:18;16434:25;;16484:20;4670:18;16484:7;;:11;;:20;;;;:::i;:::-;16474:7;:30;16470:61;;;16514:7;;4670:18;16506:25;;;;;;;;16470:61;16550:7;16559;16542:25;;;;;;16318:257;;;:::o;2995:223::-;3115:7;3147:1;3143;:5;3150:12;3135:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3174:9;3190:1;3186;:5;;;;:::i;:::-;3174:17;;3209:1;3202:8;;;2995:223;;;;;:::o;14504:615::-;14604:7;14626;14648;14670;14692;14714;14750:23;14775:12;14789:13;14819:40;14831:7;14840:9;;14851:7;;14819:11;:40::i;:::-;14749:110;;;;;;14870:19;14892:10;:8;:10::i;:::-;14870:32;;14914:15;14931:23;14956:12;14985:46;14997:7;15006:4;15012:5;15019:11;14985;:46::i;:::-;14913:118;;;;;;15050:7;15059:15;15076:4;15082:15;15099:4;15105:5;15042:69;;;;;;;;;;;;;;;;;;;14504:615;;;;;;;:::o;2225:136::-;2283:7;2310:43;2314:1;2317;2310:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2303:50;;2225:136;;;;:::o;2038:179::-;2096:7;2116:9;2132:1;2128;:5;;;;:::i;:::-;2116:17;;2157:1;2152;:6;;2144:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2208:1;2201:8;;;2038:179;;;;:::o;14093:211::-;14146:19;14168:10;:8;:10::i;:::-;14146:32;;14189:13;14205:22;14215:11;14205:5;:9;;:22;;;;:::i;:::-;14189:38;;14263:33;14290:5;14263:7;:22;14279:4;14263:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14238:7;:22;14254:4;14238:22;;;;;;;;;;;;;;;:58;;;;14135:169;;14093:211;:::o;14312:147::-;14390:17;14402:4;14390:7;;:11;;:17;;;;:::i;:::-;14380:7;:27;;;;14431:20;14446:4;14431:10;;:14;;:20;;;;:::i;:::-;14418:10;:33;;;;14312:147;;:::o;15127:469::-;15296:7;15318;15340;15375:12;15390:30;15416:3;15390:21;15402:8;15390:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;15375:45;;15431:13;15447:28;15471:3;15447:19;15459:6;15447:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15431:44;;15486:23;15512:28;15534:5;15512:17;15524:4;15512:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15486:54;;15559:15;15576:4;15582:5;15551:37;;;;;;;;;15127:469;;;;;;;:::o;15604:534::-;15798:7;15820;15842;15877:15;15895:24;15907:11;15895:7;:11;;:24;;;;:::i;:::-;15877:42;;15930:12;15945:21;15954:11;15945:4;:8;;:21;;;;:::i;:::-;15930:36;;15977:13;15993:22;16003:11;15993:5;:9;;:22;;;;:::i;:::-;15977:38;;16026:23;16052:28;16074:5;16052:17;16064:4;16052:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16026:54;;16099:7;16108:15;16125:4;16091:39;;;;;;;;;;15604:534;;;;;;;;:::o;2601:246::-;2659:7;2688:1;2683;:6;2679:47;;;2713:1;2706:8;;;;2679:47;2736:9;2752:1;2748;:5;;;;:::i;:::-;2736:17;;2781:1;2776;2772;:5;;;;:::i;:::-;:10;2764:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2838:1;2831:8;;;2601:246;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:102;498:6;549:2;545:7;540:2;533:5;529:14;525:28;515:38;;457:102;;;:::o;565:180::-;613:77;610:1;603:88;710:4;707:1;700:15;734:4;731:1;724:15;751:281;834:27;856:4;834:27;:::i;:::-;826:6;822:40;964:6;952:10;949:22;928:18;916:10;913:34;910:62;907:88;;;975:18;;:::i;:::-;907:88;1015:10;1011:2;1004:22;794:238;751:281;;:::o;1038:129::-;1072:6;1099:20;;:::i;:::-;1089:30;;1128:33;1156:4;1148:6;1128:33;:::i;:::-;1038:129;;;:::o;1173:311::-;1250:4;1340:18;1332:6;1329:30;1326:56;;;1362:18;;:::i;:::-;1326:56;1412:4;1404:6;1400:17;1392:25;;1472:4;1466;1462:15;1454:23;;1173:311;;;:::o;1490:117::-;1599:1;1596;1589:12;1613:126;1650:7;1690:42;1683:5;1679:54;1668:65;;1613:126;;;:::o;1745:96::-;1782:7;1811:24;1829:5;1811:24;:::i;:::-;1800:35;;1745:96;;;:::o;1847:122::-;1920:24;1938:5;1920:24;:::i;:::-;1913:5;1910:35;1900:63;;1959:1;1956;1949:12;1900:63;1847:122;:::o;1975:139::-;2021:5;2059:6;2046:20;2037:29;;2075:33;2102:5;2075:33;:::i;:::-;1975:139;;;;:::o;2137:710::-;2233:5;2258:81;2274:64;2331:6;2274:64;:::i;:::-;2258:81;:::i;:::-;2249:90;;2359:5;2388:6;2381:5;2374:21;2422:4;2415:5;2411:16;2404:23;;2475:4;2467:6;2463:17;2455:6;2451:30;2504:3;2496:6;2493:15;2490:122;;;2523:79;;:::i;:::-;2490:122;2638:6;2621:220;2655:6;2650:3;2647:15;2621:220;;;2730:3;2759:37;2792:3;2780:10;2759:37;:::i;:::-;2754:3;2747:50;2826:4;2821:3;2817:14;2810:21;;2697:144;2681:4;2676:3;2672:14;2665:21;;2621:220;;;2625:21;2239:608;;2137:710;;;;;:::o;2870:370::-;2941:5;2990:3;2983:4;2975:6;2971:17;2967:27;2957:122;;2998:79;;:::i;:::-;2957:122;3115:6;3102:20;3140:94;3230:3;3222:6;3215:4;3207:6;3203:17;3140:94;:::i;:::-;3131:103;;2947:293;2870:370;;;;:::o;3246:539::-;3330:6;3379:2;3367:9;3358:7;3354:23;3350:32;3347:119;;;3385:79;;:::i;:::-;3347:119;3533:1;3522:9;3518:17;3505:31;3563:18;3555:6;3552:30;3549:117;;;3585:79;;:::i;:::-;3549:117;3690:78;3760:7;3751:6;3740:9;3736:22;3690:78;:::i;:::-;3680:88;;3476:302;3246:539;;;;:::o;3791:99::-;3843:6;3877:5;3871:12;3861:22;;3791:99;;;:::o;3896:169::-;3980:11;4014:6;4009:3;4002:19;4054:4;4049:3;4045:14;4030:29;;3896:169;;;;:::o;4071:307::-;4139:1;4149:113;4163:6;4160:1;4157:13;4149:113;;;4248:1;4243:3;4239:11;4233:18;4229:1;4224:3;4220:11;4213:39;4185:2;4182:1;4178:10;4173:15;;4149:113;;;4280:6;4277:1;4274:13;4271:101;;;4360:1;4351:6;4346:3;4342:16;4335:27;4271:101;4120:258;4071:307;;;:::o;4384:364::-;4472:3;4500:39;4533:5;4500:39;:::i;:::-;4555:71;4619:6;4614:3;4555:71;:::i;:::-;4548:78;;4635:52;4680:6;4675:3;4668:4;4661:5;4657:16;4635:52;:::i;:::-;4712:29;4734:6;4712:29;:::i;:::-;4707:3;4703:39;4696:46;;4476:272;4384:364;;;;:::o;4754:313::-;4867:4;4905:2;4894:9;4890:18;4882:26;;4954:9;4948:4;4944:20;4940:1;4929:9;4925:17;4918:47;4982:78;5055:4;5046:6;4982:78;:::i;:::-;4974:86;;4754:313;;;;:::o;5073:77::-;5110:7;5139:5;5128:16;;5073:77;;;:::o;5156:122::-;5229:24;5247:5;5229:24;:::i;:::-;5222:5;5219:35;5209:63;;5268:1;5265;5258:12;5209:63;5156:122;:::o;5284:139::-;5330:5;5368:6;5355:20;5346:29;;5384:33;5411:5;5384:33;:::i;:::-;5284:139;;;;:::o;5429:474::-;5497:6;5505;5554:2;5542:9;5533:7;5529:23;5525:32;5522:119;;;5560:79;;:::i;:::-;5522:119;5680:1;5705:53;5750:7;5741:6;5730:9;5726:22;5705:53;:::i;:::-;5695:63;;5651:117;5807:2;5833:53;5878:7;5869:6;5858:9;5854:22;5833:53;:::i;:::-;5823:63;;5778:118;5429:474;;;;;:::o;5909:90::-;5943:7;5986:5;5979:13;5972:21;5961:32;;5909:90;;;:::o;6005:109::-;6086:21;6101:5;6086:21;:::i;:::-;6081:3;6074:34;6005:109;;:::o;6120:210::-;6207:4;6245:2;6234:9;6230:18;6222:26;;6258:65;6320:1;6309:9;6305:17;6296:6;6258:65;:::i;:::-;6120:210;;;;:::o;6336:60::-;6364:3;6385:5;6378:12;;6336:60;;;:::o;6402:142::-;6452:9;6485:53;6503:34;6512:24;6530:5;6512:24;:::i;:::-;6503:34;:::i;:::-;6485:53;:::i;:::-;6472:66;;6402:142;;;:::o;6550:126::-;6600:9;6633:37;6664:5;6633:37;:::i;:::-;6620:50;;6550:126;;;:::o;6682:152::-;6758:9;6791:37;6822:5;6791:37;:::i;:::-;6778:50;;6682:152;;;:::o;6840:183::-;6953:63;7010:5;6953:63;:::i;:::-;6948:3;6941:76;6840:183;;:::o;7029:274::-;7148:4;7186:2;7175:9;7171:18;7163:26;;7199:97;7293:1;7282:9;7278:17;7269:6;7199:97;:::i;:::-;7029:274;;;;:::o;7309:118::-;7396:24;7414:5;7396:24;:::i;:::-;7391:3;7384:37;7309:118;;:::o;7433:222::-;7526:4;7564:2;7553:9;7549:18;7541:26;;7577:71;7645:1;7634:9;7630:17;7621:6;7577:71;:::i;:::-;7433:222;;;;:::o;7661:329::-;7720:6;7769:2;7757:9;7748:7;7744:23;7740:32;7737:119;;;7775:79;;:::i;:::-;7737:119;7895:1;7920:53;7965:7;7956:6;7945:9;7941:22;7920:53;:::i;:::-;7910:63;;7866:117;7661:329;;;;:::o;7996:619::-;8073:6;8081;8089;8138:2;8126:9;8117:7;8113:23;8109:32;8106:119;;;8144:79;;:::i;:::-;8106:119;8264:1;8289:53;8334:7;8325:6;8314:9;8310:22;8289:53;:::i;:::-;8279:63;;8235:117;8391:2;8417:53;8462:7;8453:6;8442:9;8438:22;8417:53;:::i;:::-;8407:63;;8362:118;8519:2;8545:53;8590:7;8581:6;8570:9;8566:22;8545:53;:::i;:::-;8535:63;;8490:118;7996:619;;;;;:::o;8621:86::-;8656:7;8696:4;8689:5;8685:16;8674:27;;8621:86;;;:::o;8713:112::-;8796:22;8812:5;8796:22;:::i;:::-;8791:3;8784:35;8713:112;;:::o;8831:214::-;8920:4;8958:2;8947:9;8943:18;8935:26;;8971:67;9035:1;9024:9;9020:17;9011:6;8971:67;:::i;:::-;8831:214;;;;:::o;9051:118::-;9138:24;9156:5;9138:24;:::i;:::-;9133:3;9126:37;9051:118;;:::o;9175:222::-;9268:4;9306:2;9295:9;9291:18;9283:26;;9319:71;9387:1;9376:9;9372:17;9363:6;9319:71;:::i;:::-;9175:222;;;;:::o;9403:329::-;9462:6;9511:2;9499:9;9490:7;9486:23;9482:32;9479:119;;;9517:79;;:::i;:::-;9479:119;9637:1;9662:53;9707:7;9698:6;9687:9;9683:22;9662:53;:::i;:::-;9652:63;;9608:117;9403:329;;;;:::o;9738:116::-;9808:21;9823:5;9808:21;:::i;:::-;9801:5;9798:32;9788:60;;9844:1;9841;9834:12;9788:60;9738:116;:::o;9860:133::-;9903:5;9941:6;9928:20;9919:29;;9957:30;9981:5;9957:30;:::i;:::-;9860:133;;;;:::o;9999:323::-;10055:6;10104:2;10092:9;10083:7;10079:23;10075:32;10072:119;;;10110:79;;:::i;:::-;10072:119;10230:1;10255:50;10297:7;10288:6;10277:9;10273:22;10255:50;:::i;:::-;10245:60;;10201:114;9999:323;;;;:::o;10328:765::-;10414:6;10422;10430;10438;10487:3;10475:9;10466:7;10462:23;10458:33;10455:120;;;10494:79;;:::i;:::-;10455:120;10614:1;10639:53;10684:7;10675:6;10664:9;10660:22;10639:53;:::i;:::-;10629:63;;10585:117;10741:2;10767:53;10812:7;10803:6;10792:9;10788:22;10767:53;:::i;:::-;10757:63;;10712:118;10869:2;10895:53;10940:7;10931:6;10920:9;10916:22;10895:53;:::i;:::-;10885:63;;10840:118;10997:2;11023:53;11068:7;11059:6;11048:9;11044:22;11023:53;:::i;:::-;11013:63;;10968:118;10328:765;;;;;;;:::o;11099:117::-;11208:1;11205;11198:12;11239:568;11312:8;11322:6;11372:3;11365:4;11357:6;11353:17;11349:27;11339:122;;11380:79;;:::i;:::-;11339:122;11493:6;11480:20;11470:30;;11523:18;11515:6;11512:30;11509:117;;;11545:79;;:::i;:::-;11509:117;11659:4;11651:6;11647:17;11635:29;;11713:3;11705:4;11697:6;11693:17;11683:8;11679:32;11676:41;11673:128;;;11720:79;;:::i;:::-;11673:128;11239:568;;;;;:::o;11813:698::-;11905:6;11913;11921;11970:2;11958:9;11949:7;11945:23;11941:32;11938:119;;;11976:79;;:::i;:::-;11938:119;12124:1;12113:9;12109:17;12096:31;12154:18;12146:6;12143:30;12140:117;;;12176:79;;:::i;:::-;12140:117;12289:80;12361:7;12352:6;12341:9;12337:22;12289:80;:::i;:::-;12271:98;;;;12067:312;12418:2;12444:50;12486:7;12477:6;12466:9;12462:22;12444:50;:::i;:::-;12434:60;;12389:115;11813:698;;;;;:::o;12517:474::-;12585:6;12593;12642:2;12630:9;12621:7;12617:23;12613:32;12610:119;;;12648:79;;:::i;:::-;12610:119;12768:1;12793:53;12838:7;12829:6;12818:9;12814:22;12793:53;:::i;:::-;12783:63;;12739:117;12895:2;12921:53;12966:7;12957:6;12946:9;12942:22;12921:53;:::i;:::-;12911:63;;12866:118;12517:474;;;;;:::o;12997:182::-;13137:34;13133:1;13125:6;13121:14;13114:58;12997:182;:::o;13185:366::-;13327:3;13348:67;13412:2;13407:3;13348:67;:::i;:::-;13341:74;;13424:93;13513:3;13424:93;:::i;:::-;13542:2;13537:3;13533:12;13526:19;;13185:366;;;:::o;13557:419::-;13723:4;13761:2;13750:9;13746:18;13738:26;;13810:9;13804:4;13800:20;13796:1;13785:9;13781:17;13774:47;13838:131;13964:4;13838:131;:::i;:::-;13830:139;;13557:419;;;:::o;13982:180::-;14030:77;14027:1;14020:88;14127:4;14124:1;14117:15;14151:4;14148:1;14141:15;14168:180;14216:77;14213:1;14206:88;14313:4;14310:1;14303:15;14337:4;14334:1;14327:15;14354:233;14393:3;14416:24;14434:5;14416:24;:::i;:::-;14407:33;;14462:66;14455:5;14452:77;14449:103;;;14532:18;;:::i;:::-;14449:103;14579:1;14572:5;14568:13;14561:20;;14354:233;;;:::o;14593:348::-;14633:7;14656:20;14674:1;14656:20;:::i;:::-;14651:25;;14690:20;14708:1;14690:20;:::i;:::-;14685:25;;14878:1;14810:66;14806:74;14803:1;14800:81;14795:1;14788:9;14781:17;14777:105;14774:131;;;14885:18;;:::i;:::-;14774:131;14933:1;14930;14926:9;14915:20;;14593:348;;;;:::o;14947:225::-;15087:34;15083:1;15075:6;15071:14;15064:58;15156:8;15151:2;15143:6;15139:15;15132:33;14947:225;:::o;15178:366::-;15320:3;15341:67;15405:2;15400:3;15341:67;:::i;:::-;15334:74;;15417:93;15506:3;15417:93;:::i;:::-;15535:2;15530:3;15526:12;15519:19;;15178:366;;;:::o;15550:419::-;15716:4;15754:2;15743:9;15739:18;15731:26;;15803:9;15797:4;15793:20;15789:1;15778:9;15774:17;15767:47;15831:131;15957:4;15831:131;:::i;:::-;15823:139;;15550:419;;;:::o;15975:223::-;16115:34;16111:1;16103:6;16099:14;16092:58;16184:6;16179:2;16171:6;16167:15;16160:31;15975:223;:::o;16204:366::-;16346:3;16367:67;16431:2;16426:3;16367:67;:::i;:::-;16360:74;;16443:93;16532:3;16443:93;:::i;:::-;16561:2;16556:3;16552:12;16545:19;;16204:366;;;:::o;16576:419::-;16742:4;16780:2;16769:9;16765:18;16757:26;;16829:9;16823:4;16819:20;16815:1;16804:9;16800:17;16793:47;16857:131;16983:4;16857:131;:::i;:::-;16849:139;;16576:419;;;:::o;17001:221::-;17141:34;17137:1;17129:6;17125:14;17118:58;17210:4;17205:2;17197:6;17193:15;17186:29;17001:221;:::o;17228:366::-;17370:3;17391:67;17455:2;17450:3;17391:67;:::i;:::-;17384:74;;17467:93;17556:3;17467:93;:::i;:::-;17585:2;17580:3;17576:12;17569:19;;17228:366;;;:::o;17600:419::-;17766:4;17804:2;17793:9;17789:18;17781:26;;17853:9;17847:4;17843:20;17839:1;17828:9;17824:17;17817:47;17881:131;18007:4;17881:131;:::i;:::-;17873:139;;17600:419;;;:::o;18025:224::-;18165:34;18161:1;18153:6;18149:14;18142:58;18234:7;18229:2;18221:6;18217:15;18210:32;18025:224;:::o;18255:366::-;18397:3;18418:67;18482:2;18477:3;18418:67;:::i;:::-;18411:74;;18494:93;18583:3;18494:93;:::i;:::-;18612:2;18607:3;18603:12;18596:19;;18255:366;;;:::o;18627:419::-;18793:4;18831:2;18820:9;18816:18;18808:26;;18880:9;18874:4;18870:20;18866:1;18855:9;18851:17;18844:47;18908:131;19034:4;18908:131;:::i;:::-;18900:139;;18627:419;;;:::o;19052:222::-;19192:34;19188:1;19180:6;19176:14;19169:58;19261:5;19256:2;19248:6;19244:15;19237:30;19052:222;:::o;19280:366::-;19422:3;19443:67;19507:2;19502:3;19443:67;:::i;:::-;19436:74;;19519:93;19608:3;19519:93;:::i;:::-;19637:2;19632:3;19628:12;19621:19;;19280:366;;;:::o;19652:419::-;19818:4;19856:2;19845:9;19841:18;19833:26;;19905:9;19899:4;19895:20;19891:1;19880:9;19876:17;19869:47;19933:131;20059:4;19933:131;:::i;:::-;19925:139;;19652:419;;;:::o;20077:228::-;20217:34;20213:1;20205:6;20201:14;20194:58;20286:11;20281:2;20273:6;20269:15;20262:36;20077:228;:::o;20311:366::-;20453:3;20474:67;20538:2;20533:3;20474:67;:::i;:::-;20467:74;;20550:93;20639:3;20550:93;:::i;:::-;20668:2;20663:3;20659:12;20652:19;;20311:366;;;:::o;20683:419::-;20849:4;20887:2;20876:9;20872:18;20864:26;;20936:9;20930:4;20926:20;20922:1;20911:9;20907:17;20900:47;20964:131;21090:4;20964:131;:::i;:::-;20956:139;;20683:419;;;:::o;21108:250::-;21248:34;21244:1;21236:6;21232:14;21225:58;21317:33;21312:2;21304:6;21300:15;21293:58;21108:250;:::o;21364:366::-;21506:3;21527:67;21591:2;21586:3;21527:67;:::i;:::-;21520:74;;21603:93;21692:3;21603:93;:::i;:::-;21721:2;21716:3;21712:12;21705:19;;21364:366;;;:::o;21736:419::-;21902:4;21940:2;21929:9;21925:18;21917:26;;21989:9;21983:4;21979:20;21975:1;21964:9;21960:17;21953:47;22017:131;22143:4;22017:131;:::i;:::-;22009:139;;21736:419;;;:::o;22161:178::-;22301:30;22297:1;22289:6;22285:14;22278:54;22161:178;:::o;22345:366::-;22487:3;22508:67;22572:2;22567:3;22508:67;:::i;:::-;22501:74;;22584:93;22673:3;22584:93;:::i;:::-;22702:2;22697:3;22693:12;22686:19;;22345:366;;;:::o;22717:419::-;22883:4;22921:2;22910:9;22906:18;22898:26;;22970:9;22964:4;22960:20;22956:1;22945:9;22941:17;22934:47;22998:131;23124:4;22998:131;:::i;:::-;22990:139;;22717:419;;;:::o;23142:222::-;23282:34;23278:1;23270:6;23266:14;23259:58;23351:5;23346:2;23338:6;23334:15;23327:30;23142:222;:::o;23370:366::-;23512:3;23533:67;23597:2;23592:3;23533:67;:::i;:::-;23526:74;;23609:93;23698:3;23609:93;:::i;:::-;23727:2;23722:3;23718:12;23711:19;;23370:366;;;:::o;23742:419::-;23908:4;23946:2;23935:9;23931:18;23923:26;;23995:9;23989:4;23985:20;23981:1;23970:9;23966:17;23959:47;24023:131;24149:4;24023:131;:::i;:::-;24015:139;;23742:419;;;:::o;24167:305::-;24207:3;24226:20;24244:1;24226:20;:::i;:::-;24221:25;;24260:20;24278:1;24260:20;:::i;:::-;24255:25;;24414:1;24346:66;24342:74;24339:1;24336:81;24333:107;;;24420:18;;:::i;:::-;24333:107;24464:1;24461;24457:9;24450:16;;24167:305;;;;:::o;24478:222::-;24618:34;24614:1;24606:6;24602:14;24595:58;24687:5;24682:2;24674:6;24670:15;24663:30;24478:222;:::o;24706:366::-;24848:3;24869:67;24933:2;24928:3;24869:67;:::i;:::-;24862:74;;24945:93;25034:3;24945:93;:::i;:::-;25063:2;25058:3;25054:12;25047:19;;24706:366;;;:::o;25078:419::-;25244:4;25282:2;25271:9;25267:18;25259:26;;25331:9;25325:4;25321:20;25317:1;25306:9;25302:17;25295:47;25359:131;25485:4;25359:131;:::i;:::-;25351:139;;25078:419;;;:::o;25503:191::-;25543:4;25563:20;25581:1;25563:20;:::i;:::-;25558:25;;25597:20;25615:1;25597:20;:::i;:::-;25592:25;;25636:1;25633;25630:8;25627:34;;;25641:18;;:::i;:::-;25627:34;25686:1;25683;25679:9;25671:17;;25503:191;;;;:::o;25700:229::-;25840:34;25836:1;25828:6;25824:14;25817:58;25909:12;25904:2;25896:6;25892:15;25885:37;25700:229;:::o;25935:366::-;26077:3;26098:67;26162:2;26157:3;26098:67;:::i;:::-;26091:74;;26174:93;26263:3;26174:93;:::i;:::-;26292:2;26287:3;26283:12;26276:19;;25935:366;;;:::o;26307:419::-;26473:4;26511:2;26500:9;26496:18;26488:26;;26560:9;26554:4;26550:20;26546:1;26535:9;26531:17;26524:47;26588:131;26714:4;26588:131;:::i;:::-;26580:139;;26307:419;;;:::o;26732:143::-;26789:5;26820:6;26814:13;26805:22;;26836:33;26863:5;26836:33;:::i;:::-;26732:143;;;;:::o;26881:351::-;26951:6;27000:2;26988:9;26979:7;26975:23;26971:32;26968:119;;;27006:79;;:::i;:::-;26968:119;27126:1;27151:64;27207:7;27198:6;27187:9;27183:22;27151:64;:::i;:::-;27141:74;;27097:128;26881:351;;;;:::o;27238:85::-;27283:7;27312:5;27301:16;;27238:85;;;:::o;27329:158::-;27387:9;27420:61;27438:42;27447:32;27473:5;27447:32;:::i;:::-;27438:42;:::i;:::-;27420:61;:::i;:::-;27407:74;;27329:158;;;:::o;27493:147::-;27588:45;27627:5;27588:45;:::i;:::-;27583:3;27576:58;27493:147;;:::o;27646:114::-;27713:6;27747:5;27741:12;27731:22;;27646:114;;;:::o;27766:184::-;27865:11;27899:6;27894:3;27887:19;27939:4;27934:3;27930:14;27915:29;;27766:184;;;;:::o;27956:132::-;28023:4;28046:3;28038:11;;28076:4;28071:3;28067:14;28059:22;;27956:132;;;:::o;28094:108::-;28171:24;28189:5;28171:24;:::i;:::-;28166:3;28159:37;28094:108;;:::o;28208:179::-;28277:10;28298:46;28340:3;28332:6;28298:46;:::i;:::-;28376:4;28371:3;28367:14;28353:28;;28208:179;;;;:::o;28393:113::-;28463:4;28495;28490:3;28486:14;28478:22;;28393:113;;;:::o;28542:732::-;28661:3;28690:54;28738:5;28690:54;:::i;:::-;28760:86;28839:6;28834:3;28760:86;:::i;:::-;28753:93;;28870:56;28920:5;28870:56;:::i;:::-;28949:7;28980:1;28965:284;28990:6;28987:1;28984:13;28965:284;;;29066:6;29060:13;29093:63;29152:3;29137:13;29093:63;:::i;:::-;29086:70;;29179:60;29232:6;29179:60;:::i;:::-;29169:70;;29025:224;29012:1;29009;29005:9;29000:14;;28965:284;;;28969:14;29265:3;29258:10;;28666:608;;;28542:732;;;;:::o;29280:831::-;29543:4;29581:3;29570:9;29566:19;29558:27;;29595:71;29663:1;29652:9;29648:17;29639:6;29595:71;:::i;:::-;29676:80;29752:2;29741:9;29737:18;29728:6;29676:80;:::i;:::-;29803:9;29797:4;29793:20;29788:2;29777:9;29773:18;29766:48;29831:108;29934:4;29925:6;29831:108;:::i;:::-;29823:116;;29949:72;30017:2;30006:9;30002:18;29993:6;29949:72;:::i;:::-;30031:73;30099:3;30088:9;30084:19;30075:6;30031:73;:::i;:::-;29280:831;;;;;;;;:::o;30117:180::-;30165:77;30162:1;30155:88;30262:4;30259:1;30252:15;30286:4;30283:1;30276:15;30303:185;30343:1;30360:20;30378:1;30360:20;:::i;:::-;30355:25;;30394:20;30412:1;30394:20;:::i;:::-;30389:25;;30433:1;30423:35;;30438:18;;:::i;:::-;30423:35;30480:1;30477;30473:9;30468:14;;30303:185;;;;:::o;30494:177::-;30634:29;30630:1;30622:6;30618:14;30611:53;30494:177;:::o;30677:366::-;30819:3;30840:67;30904:2;30899:3;30840:67;:::i;:::-;30833:74;;30916:93;31005:3;30916:93;:::i;:::-;31034:2;31029:3;31025:12;31018:19;;30677:366;;;:::o;31049:419::-;31215:4;31253:2;31242:9;31238:18;31230:26;;31302:9;31296:4;31292:20;31288:1;31277:9;31273:17;31266:47;31330:131;31456:4;31330:131;:::i;:::-;31322:139;;31049:419;;;:::o;31474:220::-;31614:34;31610:1;31602:6;31598:14;31591:58;31683:3;31678:2;31670:6;31666:15;31659:28;31474:220;:::o;31700:366::-;31842:3;31863:67;31927:2;31922:3;31863:67;:::i;:::-;31856:74;;31939:93;32028:3;31939:93;:::i;:::-;32057:2;32052:3;32048:12;32041:19;;31700:366;;;:::o;32072:419::-;32238:4;32276:2;32265:9;32261:18;32253:26;;32325:9;32319:4;32315:20;32311:1;32300:9;32296:17;32289:47;32353:131;32479:4;32353:131;:::i;:::-;32345:139;;32072:419;;;:::o

Swarm Source

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