ETH Price: $3,647.87 (-6.08%)

Token

ERC-20: TG.Systems (TGS)
 

Overview

Max Total Supply

5,000,000 TGS

Holders

238

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
1,051.217759038473738599 TGS

Value
$0.00
0xcf414a1ca7a40dab6f3b52a92a481c461c333f27
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:
TGSystems

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-09-10
*/

// https://tg.systems
// https://x.com/TG_Systems
// https://t.me/TGSystems

// SPDX-License-Identifier: Unlicensed
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 TGSystems is Context, IERC20, Ownable {
    uint8 private constant _decimals = 18;
    using SafeMath for uint256;
 
    string private constant _name = "TG.Systems";
    string private constant _symbol = "TGS";

 
    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 = 5000000 * 10 ** 18;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;  
    uint256 private _taxFeeOnBuy = 5;  
    uint256 private _redisFeeOnSell = 0;  
    uint256 private _taxFeeOnSell = 5;

    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 _marketingAddress = payable(0x23c6E584B409745aab27E4b95b85CC7CaAb44597);
 
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
 
    bool private tradingOpen = false;
    bool private inSwap = false;
    bool private swapEnabled = true;
 
    uint256 public _maxTxAmount = 50000 * 10 ** 18; 
    uint256 public _maxWalletSize = 50000 * 10 ** 18; 
    uint256 public _swapTokensAtAmount = 50 * 10 ** 18;
 
    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
 
    constructor() {

        _rOwned[_msgSender()] = _rTotal;
 
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
 
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_marketingAddress] = true;
 
        emit Transfer(address(0), _msgSender(), _tTotal);
    }
 
    function name() public pure returns (string memory) {
        return _name;
    }
 
    function symbol() public pure returns (string memory) {
        return _symbol;
    }
 
    function decimals() public pure returns (uint8) {
        return _decimals;
    }
 
    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }
 
    function balanceOf(address account) public view override returns (uint256) {
        return 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() public onlyOwner {
        tradingOpen = true;
        _redisFeeOnBuy = 0;  
        _taxFeeOnBuy = 40;  
        _redisFeeOnSell = 0;  
        _taxFeeOnSell = 50;
    }
 
    function manualswap() external {
        require(_msgSender() == _marketingAddress);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }
 
    function manualsend() external {
        require(_msgSender() == _marketingAddress);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }
 
    function blacklistBot(address[] memory bots_) public onlyOwner {
        for (uint256 i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }
 
    function unBlacklistBot(address notbot) public onlyOwner {
        bots[notbot] = false;
    }
 
    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 {
        require(redisFeeOnBuy >= 0 && redisFeeOnBuy <= 4, "Buy rewards must be between 0% and 4%");
        require(taxFeeOnBuy >= 0 && taxFeeOnBuy <= 98, "Buy tax must be between 0% and 98%");
        require(redisFeeOnSell >= 0 && redisFeeOnSell <= 4, "Sell rewards must be between 0% and 4%");
        require(taxFeeOnSell >= 0 && taxFeeOnSell <= 98, "Sell tax must be between 0% and 98%");

        _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;
    }
 
    //Set maximum transaction
    function setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner {
           _maxTxAmount = maxTxAmount;
        
    }
 
    function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner {
        _maxWalletSize = maxWalletSize;
    }

    function removeLimits() public onlyOwner {
        _maxTxAmount = _tTotal;
        _maxWalletSize = _tTotal;
        _redisFeeOnBuy = 0;  
        _taxFeeOnBuy = 5;  
        _redisFeeOnSell = 0;  
        _taxFeeOnSell = 5;
    }
 
    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":"blacklistBot","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":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"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":"unBlacklistBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526a0422ca8b0a00a4250000006000196200001f919062000699565b6000196200002e919062000700565b600655600060085560056009556000600a556005600b55600a54600c55600b54600d55600c54600e55600d54600f557323c6e584b409745aab27e4b95b85cc7caab44597601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006014806101000a81548160ff0219169083151502179055506000601460156101000a81548160ff0219169083151502179055506001601460166101000a81548160ff021916908315150217905550690a968163f0a57b400000601555690a968163f0a57b4000006016556802b5e3af16b18800006017553480156200013857600080fd5b5060006200014b6200062f60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060065460026000620002006200062f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620002df57600080fd5b505afa158015620002f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200031a9190620007a5565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200037d57600080fd5b505afa15801562000392573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003b89190620007a5565b6040518363ffffffff1660e01b8152600401620003d7929190620007e8565b602060405180830381600087803b158015620003f257600080fd5b505af115801562000407573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200042d9190620007a5565b601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000620004836200063760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620005b66200062f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6a0422ca8b0a00a42500000060405162000620919062000826565b60405180910390a35062000843565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620006a68262000660565b9150620006b38362000660565b925082620006c657620006c56200066a565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200070d8262000660565b91506200071a8362000660565b92508282101562000730576200072f620006d1565b5b828203905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200076d8262000740565b9050919050565b6200077f8162000760565b81146200078b57600080fd5b50565b6000815190506200079f8162000774565b92915050565b600060208284031215620007be57620007bd6200073b565b5b6000620007ce848285016200078e565b91505092915050565b620007e28162000760565b82525050565b6000604082019050620007ff6000830185620007d7565b6200080e6020830184620007d7565b9392505050565b620008208162000660565b82525050565b60006020820190506200083d600083018462000815565b92915050565b6141c780620008536000396000f3fe6080604052600436106101dc5760003560e01c8063751039fc11610102578063a2a957bb11610095578063c492f04611610064578063c492f0461461066d578063dd62ed3e14610696578063ea1644d5146106d3578063f2fde38b146106fc576101e3565b8063a2a957bb146105b3578063a9059cbb146105dc578063bfd7928414610619578063c3c8cd8014610656576101e3565b80638da5cb5b116100d15780638da5cb5b146105095780638f9a55c01461053457806395d89b411461055f57806398a5c3151461058a576101e3565b8063751039fc146104735780637c519ffb1461048a5780637d1db4a5146104a15780637f2feddc146104cc576101e3565b80633da564251161017a5780636fc3eaec116101495780636fc3eaec146103df57806370a08231146103f6578063715018a61461043357806374010ece1461044a576101e3565b80633da564251461033957806349bd5a5e14610362578063676705731461038d5780636d8aa8f8146103b6576101e3565b806318160ddd116101b657806318160ddd1461027b57806323b872dd146102a65780632fd689e3146102e3578063313ce5671461030e576101e3565b806306fdde03146101e8578063095ea7b3146102135780631694505e14610250576101e3565b366101e357005b600080fd5b3480156101f457600080fd5b506101fd610725565b60405161020a9190612dd9565b60405180910390f35b34801561021f57600080fd5b5061023a60048036038101906102359190612ea3565b610762565b6040516102479190612efe565b60405180910390f35b34801561025c57600080fd5b50610265610780565b6040516102729190612f78565b60405180910390f35b34801561028757600080fd5b506102906107a6565b60405161029d9190612fa2565b60405180910390f35b3480156102b257600080fd5b506102cd60048036038101906102c89190612fbd565b6107b9565b6040516102da9190612efe565b60405180910390f35b3480156102ef57600080fd5b506102f8610892565b6040516103059190612fa2565b60405180910390f35b34801561031a57600080fd5b50610323610898565b604051610330919061302c565b60405180910390f35b34801561034557600080fd5b50610360600480360381019061035b9190613047565b6108a1565b005b34801561036e57600080fd5b50610377610991565b6040516103849190613083565b60405180910390f35b34801561039957600080fd5b506103b460048036038101906103af91906131e6565b6109b7565b005b3480156103c257600080fd5b506103dd60048036038101906103d8919061325b565b610ae1565b005b3480156103eb57600080fd5b506103f4610b93565b005b34801561040257600080fd5b5061041d60048036038101906104189190613047565b610c05565b60405161042a9190612fa2565b60405180910390f35b34801561043f57600080fd5b50610448610c56565b005b34801561045657600080fd5b50610471600480360381019061046c9190613288565b610da9565b005b34801561047f57600080fd5b50610488610e48565b005b34801561049657600080fd5b5061049f610f23565b005b3480156104ad57600080fd5b506104b6610ff4565b6040516104c39190612fa2565b60405180910390f35b3480156104d857600080fd5b506104f360048036038101906104ee9190613047565b610ffa565b6040516105009190612fa2565b60405180910390f35b34801561051557600080fd5b5061051e611012565b60405161052b9190613083565b60405180910390f35b34801561054057600080fd5b5061054961103b565b6040516105569190612fa2565b60405180910390f35b34801561056b57600080fd5b50610574611041565b6040516105819190612dd9565b60405180910390f35b34801561059657600080fd5b506105b160048036038101906105ac9190613288565b61107e565b005b3480156105bf57600080fd5b506105da60048036038101906105d591906132b5565b61111d565b005b3480156105e857600080fd5b5061060360048036038101906105fe9190612ea3565b611318565b6040516106109190612efe565b60405180910390f35b34801561062557600080fd5b50610640600480360381019061063b9190613047565b611336565b60405161064d9190612efe565b60405180910390f35b34801561066257600080fd5b5061066b611356565b005b34801561067957600080fd5b50610694600480360381019061068f9190613377565b6113d0565b005b3480156106a257600080fd5b506106bd60048036038101906106b891906133d7565b61150a565b6040516106ca9190612fa2565b60405180910390f35b3480156106df57600080fd5b506106fa60048036038101906106f59190613288565b611591565b005b34801561070857600080fd5b50610723600480360381019061071e9190613047565b611630565b005b60606040518060400160405280600a81526020017f54472e53797374656d7300000000000000000000000000000000000000000000815250905090565b600061077661076f6117f2565b84846117fa565b6001905092915050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006a0422ca8b0a00a425000000905090565b60006107c68484846119c5565b610887846107d26117f2565b6108828560405180606001604052806028815260200161416a60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108386117f2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461224a9092919063ffffffff16565b6117fa565b600190509392505050565b60175481565b60006012905090565b6108a96117f2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610936576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092d90613463565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109bf6117f2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4390613463565b60405180910390fd5b60005b8151811015610add57600160106000848481518110610a7157610a70613483565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610ad5906134e1565b915050610a4f565b5050565b610ae96117f2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6d90613463565b60405180910390fd5b80601460166101000a81548160ff02191690831515021790555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bd46117f2565b73ffffffffffffffffffffffffffffffffffffffff1614610bf457600080fd5b6000479050610c02816122ae565b50565b6000610c4f600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461231a565b9050919050565b610c5e6117f2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ceb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce290613463565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610db16117f2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3590613463565b60405180910390fd5b8060158190555050565b610e506117f2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610edd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed490613463565b60405180910390fd5b6a0422ca8b0a00a4250000006015819055506a0422ca8b0a00a425000000601681905550600060088190555060056009819055506000600a819055506005600b81905550565b610f2b6117f2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610faf90613463565b60405180910390fd5b60016014806101000a81548160ff021916908315150217905550600060088190555060286009819055506000600a819055506032600b81905550565b60155481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60165481565b60606040518060400160405280600381526020017f5447530000000000000000000000000000000000000000000000000000000000815250905090565b6110866117f2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611113576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110a90613463565b60405180910390fd5b8060178190555050565b6111256117f2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a990613463565b60405180910390fd5b600084101580156111c4575060048411155b611203576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111fa9061359c565b60405180910390fd5b60008210158015611215575060628211155b611254576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124b9061362e565b60405180910390fd5b60008310158015611266575060048311155b6112a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129c906136c0565b60405180910390fd5b600081101580156112b7575060628111155b6112f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ed90613752565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b600061132c6113256117f2565b84846119c5565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166113976117f2565b73ffffffffffffffffffffffffffffffffffffffff16146113b757600080fd5b60006113c230610c05565b90506113cd81612388565b50565b6113d86117f2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611465576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145c90613463565b60405180910390fd5b60005b8383905081101561150457816005600086868581811061148b5761148a613483565b5b90506020020160208101906114a09190613047565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806114fc906134e1565b915050611468565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6115996117f2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611626576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161d90613463565b60405180910390fd5b8060168190555050565b6116386117f2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116bc90613463565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611735576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172c906137e4565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561186a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186190613876565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156118da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d190613908565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516119b89190612fa2565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611a35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2c9061399a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611aa5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9c90613a2c565b60405180910390fd5b60008111611ae8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611adf90613abe565b60405180910390fd5b611af0611012565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611b5e5750611b2e611012565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611f495760148054906101000a900460ff16611beb57611b7d611012565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611bea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be190613b50565b60405180910390fd5b5b601554811115611c30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2790613bbc565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611cd45750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611d13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0a90613c4e565b60405180910390fd5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611dc05760165481611d7584610c05565b611d7f9190613c6e565b10611dbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db690613d36565b60405180910390fd5b5b6000611dcb30610c05565b9050600060175482101590506015548210611de65760155491505b808015611e005750601460159054906101000a900460ff16155b8015611e5a5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611e725750601460169054906101000a900460ff165b8015611ec85750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611f1e5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611f4657611f2c82612388565b60004790506000811115611f4457611f43476122ae565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611ff05750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806120a35750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156120a25750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b156120b15760009050612238565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561215c5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561217457600854600c81905550600954600d819055505b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561221f5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561223757600a54600c81905550600b54600d819055505b5b61224484848484612610565b50505050565b6000838311158290612292576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122899190612dd9565b60405180910390fd5b50600083856122a19190613d56565b9050809150509392505050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612316573d6000803e3d6000fd5b5050565b6000600654821115612361576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235890613dfc565b60405180910390fd5b600061236b61263d565b9050612380818461266890919063ffffffff16565b915050919050565b6001601460156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156123c0576123bf6130a3565b5b6040519080825280602002602001820160405280156123ee5781602001602082028036833780820191505090505b509050308160008151811061240657612405613483565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156124a857600080fd5b505afa1580156124bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124e09190613e31565b816001815181106124f4576124f3613483565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061255b30601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846117fa565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016125bf959493929190613f57565b600060405180830381600087803b1580156125d957600080fd5b505af11580156125ed573d6000803e3d6000fd5b50505050506000601460156101000a81548160ff02191690831515021790555050565b8061261e5761261d6126b2565b5b6126298484846126f5565b80612637576126366128c0565b5b50505050565b600080600061264a6128d4565b91509150612661818361266890919063ffffffff16565b9250505090565b60006126aa83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061293c565b905092915050565b6000600c541480156126c657506000600d54145b156126d0576126f3565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b6000806000806000806127078761299f565b95509550955095509550955061276586600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a0790919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506127fa85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a5190919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061284681612aaf565b6128508483612b6c565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516128ad9190612fa2565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b6000806000600654905060006a0422ca8b0a00a425000000905061290e6a0422ca8b0a00a42500000060065461266890919063ffffffff16565b82101561292f576006546a0422ca8b0a00a425000000935093505050612938565b81819350935050505b9091565b60008083118290612983576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297a9190612dd9565b60405180910390fd5b50600083856129929190613fe0565b9050809150509392505050565b60008060008060008060008060006129bc8a600c54600d54612ba6565b92509250925060006129cc61263d565b905060008060006129df8e878787612c3c565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000612a4983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061224a565b905092915050565b6000808284612a609190613c6e565b905083811015612aa5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a9c9061405d565b60405180910390fd5b8091505092915050565b6000612ab961263d565b90506000612ad08284612cc590919063ffffffff16565b9050612b2481600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a5190919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612b8182600654612a0790919063ffffffff16565b600681905550612b9c81600754612a5190919063ffffffff16565b6007819055505050565b600080600080612bd26064612bc4888a612cc590919063ffffffff16565b61266890919063ffffffff16565b90506000612bfc6064612bee888b612cc590919063ffffffff16565b61266890919063ffffffff16565b90506000612c2582612c17858c612a0790919063ffffffff16565b612a0790919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612c558589612cc590919063ffffffff16565b90506000612c6c8689612cc590919063ffffffff16565b90506000612c838789612cc590919063ffffffff16565b90506000612cac82612c9e8587612a0790919063ffffffff16565b612a0790919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080831415612cd85760009050612d3a565b60008284612ce6919061407d565b9050828482612cf59190613fe0565b14612d35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d2c90614149565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612d7a578082015181840152602081019050612d5f565b83811115612d89576000848401525b50505050565b6000601f19601f8301169050919050565b6000612dab82612d40565b612db58185612d4b565b9350612dc5818560208601612d5c565b612dce81612d8f565b840191505092915050565b60006020820190508181036000830152612df38184612da0565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612e3a82612e0f565b9050919050565b612e4a81612e2f565b8114612e5557600080fd5b50565b600081359050612e6781612e41565b92915050565b6000819050919050565b612e8081612e6d565b8114612e8b57600080fd5b50565b600081359050612e9d81612e77565b92915050565b60008060408385031215612eba57612eb9612e05565b5b6000612ec885828601612e58565b9250506020612ed985828601612e8e565b9150509250929050565b60008115159050919050565b612ef881612ee3565b82525050565b6000602082019050612f136000830184612eef565b92915050565b6000819050919050565b6000612f3e612f39612f3484612e0f565b612f19565b612e0f565b9050919050565b6000612f5082612f23565b9050919050565b6000612f6282612f45565b9050919050565b612f7281612f57565b82525050565b6000602082019050612f8d6000830184612f69565b92915050565b612f9c81612e6d565b82525050565b6000602082019050612fb76000830184612f93565b92915050565b600080600060608486031215612fd657612fd5612e05565b5b6000612fe486828701612e58565b9350506020612ff586828701612e58565b925050604061300686828701612e8e565b9150509250925092565b600060ff82169050919050565b61302681613010565b82525050565b6000602082019050613041600083018461301d565b92915050565b60006020828403121561305d5761305c612e05565b5b600061306b84828501612e58565b91505092915050565b61307d81612e2f565b82525050565b60006020820190506130986000830184613074565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6130db82612d8f565b810181811067ffffffffffffffff821117156130fa576130f96130a3565b5b80604052505050565b600061310d612dfb565b905061311982826130d2565b919050565b600067ffffffffffffffff821115613139576131386130a3565b5b602082029050602081019050919050565b600080fd5b600061316261315d8461311e565b613103565b905080838252602082019050602084028301858111156131855761318461314a565b5b835b818110156131ae578061319a8882612e58565b845260208401935050602081019050613187565b5050509392505050565b600082601f8301126131cd576131cc61309e565b5b81356131dd84826020860161314f565b91505092915050565b6000602082840312156131fc576131fb612e05565b5b600082013567ffffffffffffffff81111561321a57613219612e0a565b5b613226848285016131b8565b91505092915050565b61323881612ee3565b811461324357600080fd5b50565b6000813590506132558161322f565b92915050565b60006020828403121561327157613270612e05565b5b600061327f84828501613246565b91505092915050565b60006020828403121561329e5761329d612e05565b5b60006132ac84828501612e8e565b91505092915050565b600080600080608085870312156132cf576132ce612e05565b5b60006132dd87828801612e8e565b94505060206132ee87828801612e8e565b93505060406132ff87828801612e8e565b925050606061331087828801612e8e565b91505092959194509250565b600080fd5b60008083601f8401126133375761333661309e565b5b8235905067ffffffffffffffff8111156133545761335361331c565b5b6020830191508360208202830111156133705761336f61314a565b5b9250929050565b6000806000604084860312156133905761338f612e05565b5b600084013567ffffffffffffffff8111156133ae576133ad612e0a565b5b6133ba86828701613321565b935093505060206133cd86828701613246565b9150509250925092565b600080604083850312156133ee576133ed612e05565b5b60006133fc85828601612e58565b925050602061340d85828601612e58565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061344d602083612d4b565b915061345882613417565b602082019050919050565b6000602082019050818103600083015261347c81613440565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006134ec82612e6d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561351f5761351e6134b2565b5b600182019050919050565b7f4275792072657761726473206d757374206265206265747765656e203025206160008201527f6e64203425000000000000000000000000000000000000000000000000000000602082015250565b6000613586602583612d4b565b91506135918261352a565b604082019050919050565b600060208201905081810360008301526135b581613579565b9050919050565b7f42757920746178206d757374206265206265747765656e20302520616e64203960008201527f3825000000000000000000000000000000000000000000000000000000000000602082015250565b6000613618602283612d4b565b9150613623826135bc565b604082019050919050565b600060208201905081810360008301526136478161360b565b9050919050565b7f53656c6c2072657761726473206d757374206265206265747765656e2030252060008201527f616e642034250000000000000000000000000000000000000000000000000000602082015250565b60006136aa602683612d4b565b91506136b58261364e565b604082019050919050565b600060208201905081810360008301526136d98161369d565b9050919050565b7f53656c6c20746178206d757374206265206265747765656e20302520616e642060008201527f3938250000000000000000000000000000000000000000000000000000000000602082015250565b600061373c602383612d4b565b9150613747826136e0565b604082019050919050565b6000602082019050818103600083015261376b8161372f565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006137ce602683612d4b565b91506137d982613772565b604082019050919050565b600060208201905081810360008301526137fd816137c1565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613860602483612d4b565b915061386b82613804565b604082019050919050565b6000602082019050818103600083015261388f81613853565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006138f2602283612d4b565b91506138fd82613896565b604082019050919050565b60006020820190508181036000830152613921816138e5565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613984602583612d4b565b915061398f82613928565b604082019050919050565b600060208201905081810360008301526139b381613977565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613a16602383612d4b565b9150613a21826139ba565b604082019050919050565b60006020820190508181036000830152613a4581613a09565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613aa8602983612d4b565b9150613ab382613a4c565b604082019050919050565b60006020820190508181036000830152613ad781613a9b565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000613b3a603f83612d4b565b9150613b4582613ade565b604082019050919050565b60006020820190508181036000830152613b6981613b2d565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000613ba6601c83612d4b565b9150613bb182613b70565b602082019050919050565b60006020820190508181036000830152613bd581613b99565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000613c38602383612d4b565b9150613c4382613bdc565b604082019050919050565b60006020820190508181036000830152613c6781613c2b565b9050919050565b6000613c7982612e6d565b9150613c8483612e6d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613cb957613cb86134b2565b5b828201905092915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000613d20602383612d4b565b9150613d2b82613cc4565b604082019050919050565b60006020820190508181036000830152613d4f81613d13565b9050919050565b6000613d6182612e6d565b9150613d6c83612e6d565b925082821015613d7f57613d7e6134b2565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613de6602a83612d4b565b9150613df182613d8a565b604082019050919050565b60006020820190508181036000830152613e1581613dd9565b9050919050565b600081519050613e2b81612e41565b92915050565b600060208284031215613e4757613e46612e05565b5b6000613e5584828501613e1c565b91505092915050565b6000819050919050565b6000613e83613e7e613e7984613e5e565b612f19565b612e6d565b9050919050565b613e9381613e68565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613ece81612e2f565b82525050565b6000613ee08383613ec5565b60208301905092915050565b6000602082019050919050565b6000613f0482613e99565b613f0e8185613ea4565b9350613f1983613eb5565b8060005b83811015613f4a578151613f318882613ed4565b9750613f3c83613eec565b925050600181019050613f1d565b5085935050505092915050565b600060a082019050613f6c6000830188612f93565b613f796020830187613e8a565b8181036040830152613f8b8186613ef9565b9050613f9a6060830185613074565b613fa76080830184612f93565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613feb82612e6d565b9150613ff683612e6d565b92508261400657614005613fb1565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614047601b83612d4b565b915061405282614011565b602082019050919050565b600060208201905081810360008301526140768161403a565b9050919050565b600061408882612e6d565b915061409383612e6d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156140cc576140cb6134b2565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614133602183612d4b565b915061413e826140d7565b604082019050919050565b6000602082019050818103600083015261416281614126565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212207955af8e65a5c92abfa45ff4d062fc9ed306132e3603da7aca0947e7b808db8c64736f6c63430008090033

Deployed Bytecode

0x6080604052600436106101dc5760003560e01c8063751039fc11610102578063a2a957bb11610095578063c492f04611610064578063c492f0461461066d578063dd62ed3e14610696578063ea1644d5146106d3578063f2fde38b146106fc576101e3565b8063a2a957bb146105b3578063a9059cbb146105dc578063bfd7928414610619578063c3c8cd8014610656576101e3565b80638da5cb5b116100d15780638da5cb5b146105095780638f9a55c01461053457806395d89b411461055f57806398a5c3151461058a576101e3565b8063751039fc146104735780637c519ffb1461048a5780637d1db4a5146104a15780637f2feddc146104cc576101e3565b80633da564251161017a5780636fc3eaec116101495780636fc3eaec146103df57806370a08231146103f6578063715018a61461043357806374010ece1461044a576101e3565b80633da564251461033957806349bd5a5e14610362578063676705731461038d5780636d8aa8f8146103b6576101e3565b806318160ddd116101b657806318160ddd1461027b57806323b872dd146102a65780632fd689e3146102e3578063313ce5671461030e576101e3565b806306fdde03146101e8578063095ea7b3146102135780631694505e14610250576101e3565b366101e357005b600080fd5b3480156101f457600080fd5b506101fd610725565b60405161020a9190612dd9565b60405180910390f35b34801561021f57600080fd5b5061023a60048036038101906102359190612ea3565b610762565b6040516102479190612efe565b60405180910390f35b34801561025c57600080fd5b50610265610780565b6040516102729190612f78565b60405180910390f35b34801561028757600080fd5b506102906107a6565b60405161029d9190612fa2565b60405180910390f35b3480156102b257600080fd5b506102cd60048036038101906102c89190612fbd565b6107b9565b6040516102da9190612efe565b60405180910390f35b3480156102ef57600080fd5b506102f8610892565b6040516103059190612fa2565b60405180910390f35b34801561031a57600080fd5b50610323610898565b604051610330919061302c565b60405180910390f35b34801561034557600080fd5b50610360600480360381019061035b9190613047565b6108a1565b005b34801561036e57600080fd5b50610377610991565b6040516103849190613083565b60405180910390f35b34801561039957600080fd5b506103b460048036038101906103af91906131e6565b6109b7565b005b3480156103c257600080fd5b506103dd60048036038101906103d8919061325b565b610ae1565b005b3480156103eb57600080fd5b506103f4610b93565b005b34801561040257600080fd5b5061041d60048036038101906104189190613047565b610c05565b60405161042a9190612fa2565b60405180910390f35b34801561043f57600080fd5b50610448610c56565b005b34801561045657600080fd5b50610471600480360381019061046c9190613288565b610da9565b005b34801561047f57600080fd5b50610488610e48565b005b34801561049657600080fd5b5061049f610f23565b005b3480156104ad57600080fd5b506104b6610ff4565b6040516104c39190612fa2565b60405180910390f35b3480156104d857600080fd5b506104f360048036038101906104ee9190613047565b610ffa565b6040516105009190612fa2565b60405180910390f35b34801561051557600080fd5b5061051e611012565b60405161052b9190613083565b60405180910390f35b34801561054057600080fd5b5061054961103b565b6040516105569190612fa2565b60405180910390f35b34801561056b57600080fd5b50610574611041565b6040516105819190612dd9565b60405180910390f35b34801561059657600080fd5b506105b160048036038101906105ac9190613288565b61107e565b005b3480156105bf57600080fd5b506105da60048036038101906105d591906132b5565b61111d565b005b3480156105e857600080fd5b5061060360048036038101906105fe9190612ea3565b611318565b6040516106109190612efe565b60405180910390f35b34801561062557600080fd5b50610640600480360381019061063b9190613047565b611336565b60405161064d9190612efe565b60405180910390f35b34801561066257600080fd5b5061066b611356565b005b34801561067957600080fd5b50610694600480360381019061068f9190613377565b6113d0565b005b3480156106a257600080fd5b506106bd60048036038101906106b891906133d7565b61150a565b6040516106ca9190612fa2565b60405180910390f35b3480156106df57600080fd5b506106fa60048036038101906106f59190613288565b611591565b005b34801561070857600080fd5b50610723600480360381019061071e9190613047565b611630565b005b60606040518060400160405280600a81526020017f54472e53797374656d7300000000000000000000000000000000000000000000815250905090565b600061077661076f6117f2565b84846117fa565b6001905092915050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006a0422ca8b0a00a425000000905090565b60006107c68484846119c5565b610887846107d26117f2565b6108828560405180606001604052806028815260200161416a60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108386117f2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461224a9092919063ffffffff16565b6117fa565b600190509392505050565b60175481565b60006012905090565b6108a96117f2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610936576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092d90613463565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109bf6117f2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4390613463565b60405180910390fd5b60005b8151811015610add57600160106000848481518110610a7157610a70613483565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610ad5906134e1565b915050610a4f565b5050565b610ae96117f2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6d90613463565b60405180910390fd5b80601460166101000a81548160ff02191690831515021790555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bd46117f2565b73ffffffffffffffffffffffffffffffffffffffff1614610bf457600080fd5b6000479050610c02816122ae565b50565b6000610c4f600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461231a565b9050919050565b610c5e6117f2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ceb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce290613463565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610db16117f2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3590613463565b60405180910390fd5b8060158190555050565b610e506117f2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610edd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed490613463565b60405180910390fd5b6a0422ca8b0a00a4250000006015819055506a0422ca8b0a00a425000000601681905550600060088190555060056009819055506000600a819055506005600b81905550565b610f2b6117f2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610faf90613463565b60405180910390fd5b60016014806101000a81548160ff021916908315150217905550600060088190555060286009819055506000600a819055506032600b81905550565b60155481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60165481565b60606040518060400160405280600381526020017f5447530000000000000000000000000000000000000000000000000000000000815250905090565b6110866117f2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611113576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110a90613463565b60405180910390fd5b8060178190555050565b6111256117f2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a990613463565b60405180910390fd5b600084101580156111c4575060048411155b611203576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111fa9061359c565b60405180910390fd5b60008210158015611215575060628211155b611254576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124b9061362e565b60405180910390fd5b60008310158015611266575060048311155b6112a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129c906136c0565b60405180910390fd5b600081101580156112b7575060628111155b6112f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ed90613752565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b600061132c6113256117f2565b84846119c5565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166113976117f2565b73ffffffffffffffffffffffffffffffffffffffff16146113b757600080fd5b60006113c230610c05565b90506113cd81612388565b50565b6113d86117f2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611465576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145c90613463565b60405180910390fd5b60005b8383905081101561150457816005600086868581811061148b5761148a613483565b5b90506020020160208101906114a09190613047565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806114fc906134e1565b915050611468565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6115996117f2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611626576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161d90613463565b60405180910390fd5b8060168190555050565b6116386117f2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116bc90613463565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611735576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172c906137e4565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561186a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186190613876565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156118da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d190613908565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516119b89190612fa2565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611a35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2c9061399a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611aa5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9c90613a2c565b60405180910390fd5b60008111611ae8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611adf90613abe565b60405180910390fd5b611af0611012565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611b5e5750611b2e611012565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611f495760148054906101000a900460ff16611beb57611b7d611012565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611bea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be190613b50565b60405180910390fd5b5b601554811115611c30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2790613bbc565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611cd45750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611d13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0a90613c4e565b60405180910390fd5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611dc05760165481611d7584610c05565b611d7f9190613c6e565b10611dbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db690613d36565b60405180910390fd5b5b6000611dcb30610c05565b9050600060175482101590506015548210611de65760155491505b808015611e005750601460159054906101000a900460ff16155b8015611e5a5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611e725750601460169054906101000a900460ff165b8015611ec85750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611f1e5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611f4657611f2c82612388565b60004790506000811115611f4457611f43476122ae565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611ff05750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806120a35750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156120a25750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b156120b15760009050612238565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561215c5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561217457600854600c81905550600954600d819055505b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561221f5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561223757600a54600c81905550600b54600d819055505b5b61224484848484612610565b50505050565b6000838311158290612292576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122899190612dd9565b60405180910390fd5b50600083856122a19190613d56565b9050809150509392505050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612316573d6000803e3d6000fd5b5050565b6000600654821115612361576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235890613dfc565b60405180910390fd5b600061236b61263d565b9050612380818461266890919063ffffffff16565b915050919050565b6001601460156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156123c0576123bf6130a3565b5b6040519080825280602002602001820160405280156123ee5781602001602082028036833780820191505090505b509050308160008151811061240657612405613483565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156124a857600080fd5b505afa1580156124bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124e09190613e31565b816001815181106124f4576124f3613483565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061255b30601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846117fa565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016125bf959493929190613f57565b600060405180830381600087803b1580156125d957600080fd5b505af11580156125ed573d6000803e3d6000fd5b50505050506000601460156101000a81548160ff02191690831515021790555050565b8061261e5761261d6126b2565b5b6126298484846126f5565b80612637576126366128c0565b5b50505050565b600080600061264a6128d4565b91509150612661818361266890919063ffffffff16565b9250505090565b60006126aa83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061293c565b905092915050565b6000600c541480156126c657506000600d54145b156126d0576126f3565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b6000806000806000806127078761299f565b95509550955095509550955061276586600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a0790919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506127fa85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a5190919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061284681612aaf565b6128508483612b6c565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516128ad9190612fa2565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b6000806000600654905060006a0422ca8b0a00a425000000905061290e6a0422ca8b0a00a42500000060065461266890919063ffffffff16565b82101561292f576006546a0422ca8b0a00a425000000935093505050612938565b81819350935050505b9091565b60008083118290612983576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297a9190612dd9565b60405180910390fd5b50600083856129929190613fe0565b9050809150509392505050565b60008060008060008060008060006129bc8a600c54600d54612ba6565b92509250925060006129cc61263d565b905060008060006129df8e878787612c3c565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000612a4983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061224a565b905092915050565b6000808284612a609190613c6e565b905083811015612aa5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a9c9061405d565b60405180910390fd5b8091505092915050565b6000612ab961263d565b90506000612ad08284612cc590919063ffffffff16565b9050612b2481600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a5190919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612b8182600654612a0790919063ffffffff16565b600681905550612b9c81600754612a5190919063ffffffff16565b6007819055505050565b600080600080612bd26064612bc4888a612cc590919063ffffffff16565b61266890919063ffffffff16565b90506000612bfc6064612bee888b612cc590919063ffffffff16565b61266890919063ffffffff16565b90506000612c2582612c17858c612a0790919063ffffffff16565b612a0790919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612c558589612cc590919063ffffffff16565b90506000612c6c8689612cc590919063ffffffff16565b90506000612c838789612cc590919063ffffffff16565b90506000612cac82612c9e8587612a0790919063ffffffff16565b612a0790919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080831415612cd85760009050612d3a565b60008284612ce6919061407d565b9050828482612cf59190613fe0565b14612d35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d2c90614149565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612d7a578082015181840152602081019050612d5f565b83811115612d89576000848401525b50505050565b6000601f19601f8301169050919050565b6000612dab82612d40565b612db58185612d4b565b9350612dc5818560208601612d5c565b612dce81612d8f565b840191505092915050565b60006020820190508181036000830152612df38184612da0565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612e3a82612e0f565b9050919050565b612e4a81612e2f565b8114612e5557600080fd5b50565b600081359050612e6781612e41565b92915050565b6000819050919050565b612e8081612e6d565b8114612e8b57600080fd5b50565b600081359050612e9d81612e77565b92915050565b60008060408385031215612eba57612eb9612e05565b5b6000612ec885828601612e58565b9250506020612ed985828601612e8e565b9150509250929050565b60008115159050919050565b612ef881612ee3565b82525050565b6000602082019050612f136000830184612eef565b92915050565b6000819050919050565b6000612f3e612f39612f3484612e0f565b612f19565b612e0f565b9050919050565b6000612f5082612f23565b9050919050565b6000612f6282612f45565b9050919050565b612f7281612f57565b82525050565b6000602082019050612f8d6000830184612f69565b92915050565b612f9c81612e6d565b82525050565b6000602082019050612fb76000830184612f93565b92915050565b600080600060608486031215612fd657612fd5612e05565b5b6000612fe486828701612e58565b9350506020612ff586828701612e58565b925050604061300686828701612e8e565b9150509250925092565b600060ff82169050919050565b61302681613010565b82525050565b6000602082019050613041600083018461301d565b92915050565b60006020828403121561305d5761305c612e05565b5b600061306b84828501612e58565b91505092915050565b61307d81612e2f565b82525050565b60006020820190506130986000830184613074565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6130db82612d8f565b810181811067ffffffffffffffff821117156130fa576130f96130a3565b5b80604052505050565b600061310d612dfb565b905061311982826130d2565b919050565b600067ffffffffffffffff821115613139576131386130a3565b5b602082029050602081019050919050565b600080fd5b600061316261315d8461311e565b613103565b905080838252602082019050602084028301858111156131855761318461314a565b5b835b818110156131ae578061319a8882612e58565b845260208401935050602081019050613187565b5050509392505050565b600082601f8301126131cd576131cc61309e565b5b81356131dd84826020860161314f565b91505092915050565b6000602082840312156131fc576131fb612e05565b5b600082013567ffffffffffffffff81111561321a57613219612e0a565b5b613226848285016131b8565b91505092915050565b61323881612ee3565b811461324357600080fd5b50565b6000813590506132558161322f565b92915050565b60006020828403121561327157613270612e05565b5b600061327f84828501613246565b91505092915050565b60006020828403121561329e5761329d612e05565b5b60006132ac84828501612e8e565b91505092915050565b600080600080608085870312156132cf576132ce612e05565b5b60006132dd87828801612e8e565b94505060206132ee87828801612e8e565b93505060406132ff87828801612e8e565b925050606061331087828801612e8e565b91505092959194509250565b600080fd5b60008083601f8401126133375761333661309e565b5b8235905067ffffffffffffffff8111156133545761335361331c565b5b6020830191508360208202830111156133705761336f61314a565b5b9250929050565b6000806000604084860312156133905761338f612e05565b5b600084013567ffffffffffffffff8111156133ae576133ad612e0a565b5b6133ba86828701613321565b935093505060206133cd86828701613246565b9150509250925092565b600080604083850312156133ee576133ed612e05565b5b60006133fc85828601612e58565b925050602061340d85828601612e58565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061344d602083612d4b565b915061345882613417565b602082019050919050565b6000602082019050818103600083015261347c81613440565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006134ec82612e6d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561351f5761351e6134b2565b5b600182019050919050565b7f4275792072657761726473206d757374206265206265747765656e203025206160008201527f6e64203425000000000000000000000000000000000000000000000000000000602082015250565b6000613586602583612d4b565b91506135918261352a565b604082019050919050565b600060208201905081810360008301526135b581613579565b9050919050565b7f42757920746178206d757374206265206265747765656e20302520616e64203960008201527f3825000000000000000000000000000000000000000000000000000000000000602082015250565b6000613618602283612d4b565b9150613623826135bc565b604082019050919050565b600060208201905081810360008301526136478161360b565b9050919050565b7f53656c6c2072657761726473206d757374206265206265747765656e2030252060008201527f616e642034250000000000000000000000000000000000000000000000000000602082015250565b60006136aa602683612d4b565b91506136b58261364e565b604082019050919050565b600060208201905081810360008301526136d98161369d565b9050919050565b7f53656c6c20746178206d757374206265206265747765656e20302520616e642060008201527f3938250000000000000000000000000000000000000000000000000000000000602082015250565b600061373c602383612d4b565b9150613747826136e0565b604082019050919050565b6000602082019050818103600083015261376b8161372f565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006137ce602683612d4b565b91506137d982613772565b604082019050919050565b600060208201905081810360008301526137fd816137c1565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613860602483612d4b565b915061386b82613804565b604082019050919050565b6000602082019050818103600083015261388f81613853565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006138f2602283612d4b565b91506138fd82613896565b604082019050919050565b60006020820190508181036000830152613921816138e5565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613984602583612d4b565b915061398f82613928565b604082019050919050565b600060208201905081810360008301526139b381613977565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613a16602383612d4b565b9150613a21826139ba565b604082019050919050565b60006020820190508181036000830152613a4581613a09565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613aa8602983612d4b565b9150613ab382613a4c565b604082019050919050565b60006020820190508181036000830152613ad781613a9b565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000613b3a603f83612d4b565b9150613b4582613ade565b604082019050919050565b60006020820190508181036000830152613b6981613b2d565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000613ba6601c83612d4b565b9150613bb182613b70565b602082019050919050565b60006020820190508181036000830152613bd581613b99565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000613c38602383612d4b565b9150613c4382613bdc565b604082019050919050565b60006020820190508181036000830152613c6781613c2b565b9050919050565b6000613c7982612e6d565b9150613c8483612e6d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613cb957613cb86134b2565b5b828201905092915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000613d20602383612d4b565b9150613d2b82613cc4565b604082019050919050565b60006020820190508181036000830152613d4f81613d13565b9050919050565b6000613d6182612e6d565b9150613d6c83612e6d565b925082821015613d7f57613d7e6134b2565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613de6602a83612d4b565b9150613df182613d8a565b604082019050919050565b60006020820190508181036000830152613e1581613dd9565b9050919050565b600081519050613e2b81612e41565b92915050565b600060208284031215613e4757613e46612e05565b5b6000613e5584828501613e1c565b91505092915050565b6000819050919050565b6000613e83613e7e613e7984613e5e565b612f19565b612e6d565b9050919050565b613e9381613e68565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613ece81612e2f565b82525050565b6000613ee08383613ec5565b60208301905092915050565b6000602082019050919050565b6000613f0482613e99565b613f0e8185613ea4565b9350613f1983613eb5565b8060005b83811015613f4a578151613f318882613ed4565b9750613f3c83613eec565b925050600181019050613f1d565b5085935050505092915050565b600060a082019050613f6c6000830188612f93565b613f796020830187613e8a565b8181036040830152613f8b8186613ef9565b9050613f9a6060830185613074565b613fa76080830184612f93565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613feb82612e6d565b9150613ff683612e6d565b92508261400657614005613fb1565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614047601b83612d4b565b915061405282614011565b602082019050919050565b600060208201905081810360008301526140768161403a565b9050919050565b600061408882612e6d565b915061409383612e6d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156140cc576140cb6134b2565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614133602183612d4b565b915061413e826140d7565b604082019050919050565b6000602082019050818103600083015261416281614126565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212207955af8e65a5c92abfa45ff4d062fc9ed306132e3603da7aca0947e7b808db8c64736f6c63430008090033

Deployed Bytecode Sourcemap

4176:14079:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6519:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7451:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5410:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6799:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7653:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5720:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6707:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12925:96;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5458:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12744:172;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17376:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12539:196;;;;;;;;;;;;;:::i;:::-;;6903:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1649:148;;;;;;;;;;;;;:::i;:::-;;17517:121;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17770:237;;;;;;;;;;;;;:::i;:::-;;12126:198;;;;;;;;;;;;;:::i;:::-;;5610:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5252:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1433:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5664:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6611:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17184:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16438:693;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7050:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5214:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12333:197;;;;;;;;;;;;;:::i;:::-;;18016:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7258:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17647:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1806:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6519:83;6556:13;6589:5;;;;;;;;;;;;;;;;;6582:12;;6519:83;:::o;7451:193::-;7553:4;7575:39;7584:12;:10;:12::i;:::-;7598:7;7607:6;7575:8;:39::i;:::-;7632:4;7625:11;;7451:193;;;;:::o;5410:41::-;;;;;;;;;;;;;:::o;6799:95::-;6852:7;4728:18;6872:14;;6799:95;:::o;7653:446::-;7785:4;7802:36;7812:6;7820:9;7831:6;7802:9;:36::i;:::-;7849:220;7872:6;7893:12;:10;:12::i;:::-;7920:138;7976:6;7920:138;;;;;;;;;;;;;;;;;:11;:19;7932:6;7920:19;;;;;;;;;;;;;;;:33;7940:12;:10;:12::i;:::-;7920:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;7849:8;:220::i;:::-;8087:4;8080:11;;7653:446;;;;;:::o;5720:50::-;;;;:::o;6707:83::-;6748:5;4265:2;6766:16;;6707:83;:::o;12925:96::-;1571:12;:10;:12::i;:::-;1561:22;;:6;;;;;;;;;;:22;;;1553:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13008:5:::1;12993:4;:12;12998:6;12993:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;12925:96:::0;:::o;5458:28::-;;;;;;;;;;;;;:::o;12744:172::-;1571:12;:10;:12::i;:::-;1561:22;;:6;;;;;;;;;;:22;;;1553:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12823:9:::1;12818:91;12842:5;:12;12838:1;:16;12818:91;;;12893:4;12876;:14;12881:5;12887:1;12881:8;;;;;;;;:::i;:::-;;;;;;;;12876:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;12856:3;;;;;:::i;:::-;;;;12818:91;;;;12744:172:::0;:::o;17376:101::-;1571:12;:10;:12::i;:::-;1561:22;;:6;;;;;;;;;;:22;;;1553:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17457:12:::1;17443:11;;:26;;;;;;;;;;;;;;;;;;17376:101:::0;:::o;12539:196::-;12605:17;;;;;;;;;;;12589:33;;:12;:10;:12::i;:::-;:33;;;12581:42;;;;;;12634:26;12663:21;12634:50;;12695:32;12708:18;12695:12;:32::i;:::-;12570:165;12539:196::o;6903:138::-;6969:7;6996:37;7016:7;:16;7024:7;7016:16;;;;;;;;;;;;;;;;6996:19;:37::i;:::-;6989:44;;6903:138;;;:::o;1649:148::-;1571:12;:10;:12::i;:::-;1561:22;;:6;;;;;;;;;;:22;;;1553:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1756:1:::1;1719:40;;1740:6;::::0;::::1;;;;;;;;1719:40;;;;;;;;;;;;1787:1;1770:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1649:148::o:0;17517:121::-;1571:12;:10;:12::i;:::-;1561:22;;:6;;;;;;;;;;:22;;;1553:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17609:11:::1;17594:12;:26;;;;17517:121:::0;:::o;17770:237::-;1571:12;:10;:12::i;:::-;1561:22;;:6;;;;;;;;;;:22;;;1553:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4728:18:::1;17822:12;:22;;;;4728:18;17855:14;:24;;;;17907:1;17890:14;:18;;;;17936:1;17921:12;:16;;;;17968:1;17950:15;:19;;;;17998:1;17982:13;:17;;;;17770:237::o:0;12126:198::-;1571:12;:10;:12::i;:::-;1561:22;;:6;;;;;;;;;;:22;;;1553:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12190:4:::1;12176:11;::::0;:18:::1;;;;;;;;;;;;;;;;;;12222:1;12205:14;:18;;;;12251:2;12236:12;:17;;;;12284:1;12266:15;:19;;;;12314:2;12298:13;:18;;;;12126:198::o:0;5610:46::-;;;;:::o;5252:43::-;;;;;;;;;;;;;;;;;:::o;1433:79::-;1471:7;1498:6;;;;;;;;;;;1491:13;;1433:79;:::o;5664:48::-;;;;:::o;6611:87::-;6650:13;6683:7;;;;;;;;;;;;;;;;;6676:14;;6611:87;:::o;17184:139::-;1571:12;:10;:12::i;:::-;1561:22;;:6;;;;;;;;;;:22;;;1553:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17297:18:::1;17275:19;:40;;;;17184:139:::0;:::o;16438:693::-;1571:12;:10;:12::i;:::-;1561:22;;:6;;;;;;;;;;:22;;;1553:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16597:1:::1;16580:13;:18;;:40;;;;;16619:1;16602:13;:18;;16580:40;16572:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;16696:1;16681:11;:16;;:37;;;;;16716:2;16701:11;:17;;16681:37;16673:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;16794:1;16776:14;:19;;:42;;;;;16817:1;16799:14;:19;;16776:42;16768:93;;;;;;;;;;;;:::i;:::-;;;;;;;;;16896:1;16880:12;:17;;:39;;;;;16917:2;16901:12;:18;;16880:39;16872:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;16989:13;16972:14;:30;;;;17031:14;17013:15;:32;;;;17071:11;17056:12;:26;;;;17109:12;17093:13;:28;;;;16438:693:::0;;;;:::o;7050:199::-;7155:4;7177:42;7187:12;:10;:12::i;:::-;7201:9;7212:6;7177:9;:42::i;:::-;7237:4;7230:11;;7050:199;;;;:::o;5214:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;12333:197::-;12399:17;;;;;;;;;;;12383:33;;:12;:10;:12::i;:::-;:33;;;12375:42;;;;;;12428:23;12454:24;12472:4;12454:9;:24::i;:::-;12428:50;;12489:33;12506:15;12489:16;:33::i;:::-;12364:166;12333:197::o;18016:234::-;1571:12;:10;:12::i;:::-;1561:22;;:6;;;;;;;;;;:22;;;1553:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18133:9:::1;18129:114;18152:8;;:15;;18148:1;:19;18129:114;;;18223:8;18189:18;:31;18208:8;;18217:1;18208:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;18189:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;18169:3;;;;;:::i;:::-;;;;18129:114;;;;18016:234:::0;;;:::o;7258:184::-;7375:7;7407:11;:18;7419:5;7407:18;;;;;;;;;;;;;;;:27;7426:7;7407:27;;;;;;;;;;;;;;;;7400:34;;7258:184;;;;:::o;17647:115::-;1571:12;:10;:12::i;:::-;1561:22;;:6;;;;;;;;;;:22;;;1553:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17741:13:::1;17724:14;:30;;;;17647:115:::0;:::o;1806:244::-;1571:12;:10;:12::i;:::-;1561:22;;:6;;;;;;;;;;:22;;;1553:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1915:1:::1;1895:22;;:8;:22;;;;1887:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2005:8;1976:38;;1997:6;::::0;::::1;;;;;;;;1976:38;;;;;;;;;;;;2034:8;2025:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1806:244:::0;:::o;182:98::-;235:7;262:10;255:17;;182:98;:::o;8796:369::-;8940:1;8923:19;;:5;:19;;;;8915:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9021:1;9002:21;;:7;:21;;;;8994:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9103:6;9073:11;:18;9085:5;9073:18;;;;;;;;;;;;;;;:27;9092:7;9073:27;;;;;;;;;;;;;;;:36;;;;9141:7;9125:32;;9134:5;9125:32;;;9150:6;9125:32;;;;;;:::i;:::-;;;;;;;;8796:369;;;:::o;9174:2343::-;9312:1;9296:18;;:4;:18;;;;9288:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9389:1;9375:16;;:2;:16;;;;9367:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9459:1;9450:6;:10;9442:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9532:7;:5;:7::i;:::-;9524:15;;:4;:15;;;;:32;;;;;9549:7;:5;:7::i;:::-;9543:13;;:2;:13;;;;9524:32;9520:1265;;;9614:11;;;;;;;;;;9609:144;;9662:7;:5;:7::i;:::-;9654:15;;:4;:15;;;9646:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;9609:144;9788:12;;9778:6;:22;;9770:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;9857:4;:10;9862:4;9857:10;;;;;;;;;;;;;;;;;;;;;;;;;9856:11;:24;;;;;9872:4;:8;9877:2;9872:8;;;;;;;;;;;;;;;;;;;;;;;;;9871:9;9856:24;9848:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;9947:13;;;;;;;;;;;9941:19;;:2;:19;;;9938:146;;10014:14;;10005:6;9989:13;9999:2;9989:9;:13::i;:::-;:22;;;;:::i;:::-;:39;9981:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;9938:146;10101:28;10132:24;10150:4;10132:9;:24::i;:::-;10101:55;;10171:12;10210:19;;10186:20;:43;;10171:58;;10274:12;;10250:20;:36;10247:124;;10343:12;;10320:35;;10247:124;10392:7;:18;;;;;10404:6;;;;;;;;;;;10403:7;10392:18;:43;;;;;10422:13;;;;;;;;;;;10414:21;;:4;:21;;;;10392:43;:58;;;;;10439:11;;;;;;;;;;;10392:58;:87;;;;;10455:18;:24;10474:4;10455:24;;;;;;;;;;;;;;;;;;;;;;;;;10454:25;10392:87;:114;;;;;10484:18;:22;10503:2;10484:22;;;;;;;;;;;;;;;;;;;;;;;;;10483:23;10392:114;10388:386;;;10527:38;10544:20;10527:16;:38::i;:::-;10584:26;10613:21;10584:50;;10678:1;10657:18;:22;10653:106;;;10704:35;10717:21;10704:12;:35::i;:::-;10653:106;10508:266;10388:386;9558:1227;;9520:1265;10798:12;10813:4;10798:19;;10863:18;:24;10882:4;10863:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;10891:18;:22;10910:2;10891:22;;;;;;;;;;;;;;;;;;;;;;;;;10863:50;10862:102;;;;10927:13;;;;;;;;;;;10919:21;;:4;:21;;;;:44;;;;;10950:13;;;;;;;;;;;10944:19;;:2;:19;;;;10919:44;10862:102;10858:597;;;10991:5;10981:15;;10858:597;;;11075:13;;;;;;;;;;;11067:21;;:4;:21;;;:55;;;;;11106:15;;;;;;;;;;;11092:30;;:2;:30;;;;11067:55;11064:162;;;11155:14;;11143:9;:26;;;;11198:12;;11188:7;:22;;;;11064:162;11286:13;;;;;;;;;;;11280:19;;:2;:19;;;:55;;;;;11319:15;;;;;;;;;;;11303:32;;:4;:32;;;;11280:55;11276:165;;;11368:15;;11356:9;:27;;;;11412:13;;11402:7;:23;;;;11276:165;10858:597;11468:41;11483:4;11489:2;11493:6;11501:7;11468:14;:41::i;:::-;9277:2240;9174:2343;;;:::o;2418:224::-;2538:7;2571:1;2566;:6;;2574:12;2558:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2598:9;2614:1;2610;:5;;;;:::i;:::-;2598:17;;2633:1;2626:8;;;2418:224;;;;;:::o;12018:99::-;12075:17;;;;;;;;;;;:26;;:34;12102:6;12075:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12018:99;:::o;8108:323::-;8203:7;8261;;8250;:18;;8228:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8349:19;8371:10;:8;:10::i;:::-;8349:32;;8399:24;8411:11;8399:7;:11;;:24;;;;:::i;:::-;8392:31;;;8108:323;;;:::o;11526:483::-;5874:4;5865:6;;:13;;;;;;;;;;;;;;;;;;11604:21:::1;11642:1;11628:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11604:40;;11673:4;11655;11660:1;11655:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11699:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11689:4;11694:1;11689:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11732:62;11749:4;11764:15;;;;;;;;;;;11782:11;11732:8;:62::i;:::-;11805:15;;;;;;;;;;;:66;;;11886:11;11912:1;11928:4;11955;11975:15;11805:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11593:416;5910:5:::0;5901:6;;:14;;;;;;;;;;;;;;;;;;11526:483;:::o;13030:282::-;13186:7;13181:28;;13195:14;:12;:14::i;:::-;13181:28;13220:44;13238:6;13246:9;13257:6;13220:17;:44::i;:::-;13280:7;13275:29;;13289:15;:13;:15::i;:::-;13275:29;13030:282;;;;:::o;15999:164::-;16041:7;16062:15;16079;16098:19;:17;:19::i;:::-;16061:56;;;;16135:20;16147:7;16135;:11;;:20;;;;:::i;:::-;16128:27;;;;15999:164;:::o;2906:132::-;2964:7;2991:39;2995:1;2998;2991:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2984:46;;2906:132;;;;:::o;8440:221::-;8500:1;8487:9;;:14;:30;;;;;8516:1;8505:7;;:12;8487:30;8483:43;;;8519:7;;8483:43;8559:9;;8539:17;:29;;;;8597:7;;8579:15;:25;;;;8630:1;8618:9;:13;;;;8652:1;8642:7;:11;;;;8440:221;:::o;13321:610::-;13468:15;13498:23;13536:12;13563:23;13601:12;13628:13;13655:19;13666:7;13655:10;:19::i;:::-;13453:221;;;;;;;;;;;;13703:28;13723:7;13703;:15;13711:6;13703:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13685:7;:15;13693:6;13685:15;;;;;;;;;;;;;;;:46;;;;13763:39;13786:15;13763:7;:18;13771:9;13763:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13742:7;:18;13750:9;13742:18;;;;;;;;;;;;;;;:60;;;;13813:16;13823:5;13813:9;:16::i;:::-;13840:23;13852:4;13858;13840:11;:23::i;:::-;13896:9;13879:44;;13888:6;13879:44;;;13907:15;13879:44;;;;;;:::i;:::-;;;;;;;;13442:489;;;;;;13321:610;;;:::o;8670:117::-;8726:17;;8714:9;:29;;;;8764:15;;8754:7;:25;;;;8670:117::o;16172:257::-;16223:7;16232;16252:15;16270:7;;16252:25;;16288:15;4728:18;16288:25;;16338:20;4728:18;16338:7;;:11;;:20;;;;:::i;:::-;16328:7;:30;16324:61;;;16368:7;;4728:18;16360:25;;;;;;;;16324:61;16404:7;16413;16396:25;;;;;;16172:257;;;:::o;3047:223::-;3167:7;3199:1;3195;:5;3202:12;3187:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3226:9;3242:1;3238;:5;;;;:::i;:::-;3226:17;;3261:1;3254:8;;;3047:223;;;;;:::o;14354:615::-;14454:7;14476;14498;14520;14542;14564;14600:23;14625:12;14639:13;14669:40;14681:7;14690:9;;14701:7;;14669:11;:40::i;:::-;14599:110;;;;;;14720:19;14742:10;:8;:10::i;:::-;14720:32;;14764:15;14781:23;14806:12;14835:46;14847:7;14856:4;14862:5;14869:11;14835;:46::i;:::-;14763:118;;;;;;14900:7;14909:15;14926:4;14932:15;14949:4;14955:5;14892:69;;;;;;;;;;;;;;;;;;;14354:615;;;;;;;:::o;2273:136::-;2331:7;2358:43;2362:1;2365;2358:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2351:50;;2273:136;;;;:::o;2085:179::-;2143:7;2163:9;2179:1;2175;:5;;;;:::i;:::-;2163:17;;2204:1;2199;:6;;2191:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2255:1;2248:8;;;2085:179;;;;:::o;13940:211::-;13993:19;14015:10;:8;:10::i;:::-;13993:32;;14036:13;14052:22;14062:11;14052:5;:9;;:22;;;;:::i;:::-;14036:38;;14110:33;14137:5;14110:7;:22;14126:4;14110:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14085:7;:22;14101:4;14085:22;;;;;;;;;;;;;;;:58;;;;13982:169;;13940:211;:::o;14160:147::-;14238:17;14250:4;14238:7;;:11;;:17;;;;:::i;:::-;14228:7;:27;;;;14279:20;14294:4;14279:10;;:14;;:20;;;;:::i;:::-;14266:10;:33;;;;14160:147;;:::o;14978:469::-;15147:7;15169;15191;15226:12;15241:30;15267:3;15241:21;15253:8;15241:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;15226:45;;15282:13;15298:28;15322:3;15298:19;15310:6;15298:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15282:44;;15337:23;15363:28;15385:5;15363:17;15375:4;15363:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15337:54;;15410:15;15427:4;15433:5;15402:37;;;;;;;;;14978:469;;;;;;;:::o;15456:534::-;15650:7;15672;15694;15729:15;15747:24;15759:11;15747:7;:11;;:24;;;;:::i;:::-;15729:42;;15782:12;15797:21;15806:11;15797:4;:8;;:21;;;;:::i;:::-;15782:36;;15829:13;15845:22;15855:11;15845:5;:9;;:22;;;;:::i;:::-;15829:38;;15878:23;15904:28;15926:5;15904:17;15916:4;15904:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15878:54;;15951:7;15960:15;15977:4;15943:39;;;;;;;;;;15456:534;;;;;;;;:::o;2651:246::-;2709:7;2738:1;2733;:6;2729:47;;;2763:1;2756:8;;;;2729:47;2786:9;2802:1;2798;:5;;;;:::i;:::-;2786:17;;2831:1;2826;2822;:5;;;;:::i;:::-;:10;2814:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2888:1;2881:8;;;2651:246;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1397:75::-;1430:6;1463:2;1457:9;1447:19;;1397:75;:::o;1478:117::-;1587:1;1584;1577:12;1601:117;1710:1;1707;1700:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:60::-;3522:3;3543:5;3536:12;;3494:60;;;:::o;3560:142::-;3610:9;3643:53;3661:34;3670:24;3688:5;3670:24;:::i;:::-;3661:34;:::i;:::-;3643:53;:::i;:::-;3630:66;;3560:142;;;:::o;3708:126::-;3758:9;3791:37;3822:5;3791:37;:::i;:::-;3778:50;;3708:126;;;:::o;3840:152::-;3916:9;3949:37;3980:5;3949:37;:::i;:::-;3936:50;;3840:152;;;:::o;3998:183::-;4111:63;4168:5;4111:63;:::i;:::-;4106:3;4099:76;3998:183;;:::o;4187:274::-;4306:4;4344:2;4333:9;4329:18;4321:26;;4357:97;4451:1;4440:9;4436:17;4427:6;4357:97;:::i;:::-;4187:274;;;;:::o;4467:118::-;4554:24;4572:5;4554:24;:::i;:::-;4549:3;4542:37;4467:118;;:::o;4591:222::-;4684:4;4722:2;4711:9;4707:18;4699:26;;4735:71;4803:1;4792:9;4788:17;4779:6;4735:71;:::i;:::-;4591:222;;;;:::o;4819:619::-;4896:6;4904;4912;4961:2;4949:9;4940:7;4936:23;4932:32;4929:119;;;4967:79;;:::i;:::-;4929:119;5087:1;5112:53;5157:7;5148:6;5137:9;5133:22;5112:53;:::i;:::-;5102:63;;5058:117;5214:2;5240:53;5285:7;5276:6;5265:9;5261:22;5240:53;:::i;:::-;5230:63;;5185:118;5342:2;5368:53;5413:7;5404:6;5393:9;5389:22;5368:53;:::i;:::-;5358:63;;5313:118;4819:619;;;;;:::o;5444:86::-;5479:7;5519:4;5512:5;5508:16;5497:27;;5444:86;;;:::o;5536:112::-;5619:22;5635:5;5619:22;:::i;:::-;5614:3;5607:35;5536:112;;:::o;5654:214::-;5743:4;5781:2;5770:9;5766:18;5758:26;;5794:67;5858:1;5847:9;5843:17;5834:6;5794:67;:::i;:::-;5654:214;;;;:::o;5874:329::-;5933:6;5982:2;5970:9;5961:7;5957:23;5953:32;5950:119;;;5988:79;;:::i;:::-;5950:119;6108:1;6133:53;6178:7;6169:6;6158:9;6154:22;6133:53;:::i;:::-;6123:63;;6079:117;5874:329;;;;:::o;6209:118::-;6296:24;6314:5;6296:24;:::i;:::-;6291:3;6284:37;6209:118;;:::o;6333:222::-;6426:4;6464:2;6453:9;6449:18;6441:26;;6477:71;6545:1;6534:9;6530:17;6521:6;6477:71;:::i;:::-;6333:222;;;;:::o;6561:117::-;6670:1;6667;6660:12;6684:180;6732:77;6729:1;6722:88;6829:4;6826:1;6819:15;6853:4;6850:1;6843:15;6870:281;6953:27;6975:4;6953:27;:::i;:::-;6945:6;6941:40;7083:6;7071:10;7068:22;7047:18;7035:10;7032:34;7029:62;7026:88;;;7094:18;;:::i;:::-;7026:88;7134:10;7130:2;7123:22;6913:238;6870:281;;:::o;7157:129::-;7191:6;7218:20;;:::i;:::-;7208:30;;7247:33;7275:4;7267:6;7247:33;:::i;:::-;7157:129;;;:::o;7292:311::-;7369:4;7459:18;7451:6;7448:30;7445:56;;;7481:18;;:::i;:::-;7445:56;7531:4;7523:6;7519:17;7511:25;;7591:4;7585;7581:15;7573:23;;7292:311;;;:::o;7609:117::-;7718:1;7715;7708:12;7749:710;7845:5;7870:81;7886:64;7943:6;7886:64;:::i;:::-;7870:81;:::i;:::-;7861:90;;7971:5;8000:6;7993:5;7986:21;8034:4;8027:5;8023:16;8016:23;;8087:4;8079:6;8075:17;8067:6;8063:30;8116:3;8108:6;8105:15;8102:122;;;8135:79;;:::i;:::-;8102:122;8250:6;8233:220;8267:6;8262:3;8259:15;8233:220;;;8342:3;8371:37;8404:3;8392:10;8371:37;:::i;:::-;8366:3;8359:50;8438:4;8433:3;8429:14;8422:21;;8309:144;8293:4;8288:3;8284:14;8277:21;;8233:220;;;8237:21;7851:608;;7749:710;;;;;:::o;8482:370::-;8553:5;8602:3;8595:4;8587:6;8583:17;8579:27;8569:122;;8610:79;;:::i;:::-;8569:122;8727:6;8714:20;8752:94;8842:3;8834:6;8827:4;8819:6;8815:17;8752:94;:::i;:::-;8743:103;;8559:293;8482:370;;;;:::o;8858:539::-;8942:6;8991:2;8979:9;8970:7;8966:23;8962:32;8959:119;;;8997:79;;:::i;:::-;8959:119;9145:1;9134:9;9130:17;9117:31;9175:18;9167:6;9164:30;9161:117;;;9197:79;;:::i;:::-;9161:117;9302:78;9372:7;9363:6;9352:9;9348:22;9302:78;:::i;:::-;9292:88;;9088:302;8858:539;;;;:::o;9403:116::-;9473:21;9488:5;9473:21;:::i;:::-;9466:5;9463:32;9453:60;;9509:1;9506;9499:12;9453:60;9403:116;:::o;9525:133::-;9568:5;9606:6;9593:20;9584:29;;9622:30;9646:5;9622:30;:::i;:::-;9525:133;;;;:::o;9664:323::-;9720:6;9769:2;9757:9;9748:7;9744:23;9740:32;9737:119;;;9775:79;;:::i;:::-;9737:119;9895:1;9920:50;9962:7;9953:6;9942:9;9938:22;9920:50;:::i;:::-;9910:60;;9866:114;9664:323;;;;:::o;9993:329::-;10052:6;10101:2;10089:9;10080:7;10076:23;10072:32;10069:119;;;10107:79;;:::i;:::-;10069:119;10227:1;10252:53;10297:7;10288:6;10277:9;10273:22;10252:53;:::i;:::-;10242:63;;10198:117;9993:329;;;;:::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:224::-;14733:34;14729:1;14721:6;14717:14;14710:58;14802:7;14797:2;14789:6;14785:15;14778:32;14593:224;:::o;14823:366::-;14965:3;14986:67;15050:2;15045:3;14986:67;:::i;:::-;14979:74;;15062:93;15151:3;15062:93;:::i;:::-;15180:2;15175:3;15171:12;15164:19;;14823:366;;;:::o;15195:419::-;15361:4;15399:2;15388:9;15384:18;15376:26;;15448:9;15442:4;15438:20;15434:1;15423:9;15419:17;15412:47;15476:131;15602:4;15476:131;:::i;:::-;15468:139;;15195:419;;;:::o;15620:221::-;15760:34;15756:1;15748:6;15744:14;15737:58;15829:4;15824:2;15816:6;15812:15;15805:29;15620:221;:::o;15847:366::-;15989:3;16010:67;16074:2;16069:3;16010:67;:::i;:::-;16003:74;;16086:93;16175:3;16086:93;:::i;:::-;16204:2;16199:3;16195:12;16188:19;;15847:366;;;:::o;16219:419::-;16385:4;16423:2;16412:9;16408:18;16400:26;;16472:9;16466:4;16462:20;16458:1;16447:9;16443:17;16436:47;16500:131;16626:4;16500:131;:::i;:::-;16492:139;;16219:419;;;:::o;16644:225::-;16784:34;16780:1;16772:6;16768:14;16761:58;16853:8;16848:2;16840:6;16836:15;16829:33;16644:225;:::o;16875:366::-;17017:3;17038:67;17102:2;17097:3;17038:67;:::i;:::-;17031:74;;17114:93;17203:3;17114:93;:::i;:::-;17232:2;17227:3;17223:12;17216:19;;16875:366;;;:::o;17247:419::-;17413:4;17451:2;17440:9;17436:18;17428:26;;17500:9;17494:4;17490:20;17486:1;17475:9;17471:17;17464:47;17528:131;17654:4;17528:131;:::i;:::-;17520:139;;17247:419;;;:::o;17672:222::-;17812:34;17808:1;17800:6;17796:14;17789:58;17881:5;17876:2;17868:6;17864:15;17857:30;17672:222;:::o;17900:366::-;18042:3;18063:67;18127:2;18122:3;18063:67;:::i;:::-;18056:74;;18139:93;18228:3;18139:93;:::i;:::-;18257:2;18252:3;18248:12;18241:19;;17900:366;;;:::o;18272:419::-;18438:4;18476:2;18465:9;18461:18;18453:26;;18525:9;18519:4;18515:20;18511:1;18500:9;18496:17;18489:47;18553:131;18679:4;18553:131;:::i;:::-;18545:139;;18272:419;;;:::o;18697:225::-;18837:34;18833:1;18825:6;18821:14;18814:58;18906:8;18901:2;18893:6;18889:15;18882:33;18697:225;:::o;18928:366::-;19070:3;19091:67;19155:2;19150:3;19091:67;:::i;:::-;19084:74;;19167:93;19256:3;19167:93;:::i;:::-;19285:2;19280:3;19276:12;19269:19;;18928:366;;;:::o;19300:419::-;19466:4;19504:2;19493:9;19489:18;19481:26;;19553:9;19547:4;19543:20;19539:1;19528:9;19524:17;19517:47;19581:131;19707:4;19581:131;:::i;:::-;19573:139;;19300:419;;;:::o;19725:223::-;19865:34;19861:1;19853:6;19849:14;19842:58;19934:6;19929:2;19921:6;19917:15;19910:31;19725:223;:::o;19954:366::-;20096:3;20117:67;20181:2;20176:3;20117:67;:::i;:::-;20110:74;;20193:93;20282:3;20193:93;:::i;:::-;20311:2;20306:3;20302:12;20295:19;;19954:366;;;:::o;20326:419::-;20492:4;20530:2;20519:9;20515:18;20507:26;;20579:9;20573:4;20569:20;20565:1;20554:9;20550:17;20543:47;20607:131;20733:4;20607:131;:::i;:::-;20599:139;;20326:419;;;:::o;20751:221::-;20891:34;20887:1;20879:6;20875:14;20868:58;20960:4;20955:2;20947:6;20943:15;20936:29;20751:221;:::o;20978:366::-;21120:3;21141:67;21205:2;21200:3;21141:67;:::i;:::-;21134:74;;21217:93;21306:3;21217:93;:::i;:::-;21335:2;21330:3;21326:12;21319:19;;20978:366;;;:::o;21350:419::-;21516:4;21554:2;21543:9;21539:18;21531:26;;21603:9;21597:4;21593:20;21589:1;21578:9;21574:17;21567:47;21631:131;21757:4;21631:131;:::i;:::-;21623:139;;21350:419;;;:::o;21775:224::-;21915:34;21911:1;21903:6;21899:14;21892:58;21984:7;21979:2;21971:6;21967:15;21960:32;21775:224;:::o;22005:366::-;22147:3;22168:67;22232:2;22227:3;22168:67;:::i;:::-;22161:74;;22244:93;22333:3;22244:93;:::i;:::-;22362:2;22357:3;22353:12;22346:19;;22005:366;;;:::o;22377:419::-;22543:4;22581:2;22570:9;22566:18;22558:26;;22630:9;22624:4;22620:20;22616:1;22605:9;22601:17;22594:47;22658:131;22784:4;22658:131;:::i;:::-;22650:139;;22377:419;;;:::o;22802:222::-;22942:34;22938:1;22930:6;22926:14;22919:58;23011:5;23006:2;22998:6;22994:15;22987:30;22802:222;:::o;23030:366::-;23172:3;23193:67;23257:2;23252:3;23193:67;:::i;:::-;23186:74;;23269:93;23358:3;23269:93;:::i;:::-;23387:2;23382:3;23378:12;23371:19;;23030:366;;;:::o;23402:419::-;23568:4;23606:2;23595:9;23591:18;23583:26;;23655:9;23649:4;23645:20;23641:1;23630:9;23626:17;23619:47;23683:131;23809:4;23683:131;:::i;:::-;23675:139;;23402:419;;;:::o;23827:228::-;23967:34;23963:1;23955:6;23951:14;23944:58;24036:11;24031:2;24023:6;24019:15;24012:36;23827:228;:::o;24061:366::-;24203:3;24224:67;24288:2;24283:3;24224:67;:::i;:::-;24217:74;;24300:93;24389:3;24300:93;:::i;:::-;24418:2;24413:3;24409:12;24402:19;;24061:366;;;:::o;24433:419::-;24599:4;24637:2;24626:9;24622:18;24614:26;;24686:9;24680:4;24676:20;24672:1;24661:9;24657:17;24650:47;24714:131;24840:4;24714:131;:::i;:::-;24706:139;;24433:419;;;:::o;24858:250::-;24998:34;24994:1;24986:6;24982:14;24975:58;25067:33;25062:2;25054:6;25050:15;25043:58;24858:250;:::o;25114:366::-;25256:3;25277:67;25341:2;25336:3;25277:67;:::i;:::-;25270:74;;25353:93;25442:3;25353:93;:::i;:::-;25471:2;25466:3;25462:12;25455:19;;25114:366;;;:::o;25486:419::-;25652:4;25690:2;25679:9;25675:18;25667:26;;25739:9;25733:4;25729:20;25725:1;25714:9;25710:17;25703:47;25767:131;25893:4;25767:131;:::i;:::-;25759:139;;25486:419;;;:::o;25911:178::-;26051:30;26047:1;26039:6;26035:14;26028:54;25911:178;:::o;26095:366::-;26237:3;26258:67;26322:2;26317:3;26258:67;:::i;:::-;26251:74;;26334:93;26423:3;26334:93;:::i;:::-;26452:2;26447:3;26443:12;26436:19;;26095:366;;;:::o;26467:419::-;26633:4;26671:2;26660:9;26656:18;26648:26;;26720:9;26714:4;26710:20;26706:1;26695:9;26691:17;26684:47;26748:131;26874:4;26748:131;:::i;:::-;26740:139;;26467:419;;;:::o;26892:222::-;27032:34;27028:1;27020:6;27016:14;27009:58;27101:5;27096:2;27088:6;27084:15;27077:30;26892:222;:::o;27120:366::-;27262:3;27283:67;27347:2;27342:3;27283:67;:::i;:::-;27276:74;;27359:93;27448:3;27359:93;:::i;:::-;27477:2;27472:3;27468:12;27461:19;;27120:366;;;:::o;27492:419::-;27658:4;27696:2;27685:9;27681:18;27673:26;;27745:9;27739:4;27735:20;27731:1;27720:9;27716:17;27709:47;27773:131;27899:4;27773:131;:::i;:::-;27765:139;;27492:419;;;:::o;27917:305::-;27957:3;27976:20;27994:1;27976:20;:::i;:::-;27971:25;;28010:20;28028:1;28010:20;:::i;:::-;28005:25;;28164:1;28096:66;28092:74;28089:1;28086:81;28083:107;;;28170:18;;:::i;:::-;28083:107;28214:1;28211;28207:9;28200:16;;27917:305;;;;:::o;28228:222::-;28368:34;28364:1;28356:6;28352:14;28345:58;28437:5;28432:2;28424:6;28420:15;28413:30;28228:222;:::o;28456:366::-;28598:3;28619:67;28683:2;28678:3;28619:67;:::i;:::-;28612:74;;28695:93;28784:3;28695:93;:::i;:::-;28813:2;28808:3;28804:12;28797:19;;28456:366;;;:::o;28828:419::-;28994:4;29032:2;29021:9;29017:18;29009:26;;29081:9;29075:4;29071:20;29067:1;29056:9;29052:17;29045:47;29109:131;29235:4;29109:131;:::i;:::-;29101:139;;28828:419;;;:::o;29253:191::-;29293:4;29313:20;29331:1;29313:20;:::i;:::-;29308:25;;29347:20;29365:1;29347:20;:::i;:::-;29342:25;;29386:1;29383;29380:8;29377:34;;;29391:18;;:::i;:::-;29377:34;29436:1;29433;29429:9;29421:17;;29253:191;;;;:::o;29450:229::-;29590:34;29586:1;29578:6;29574:14;29567:58;29659:12;29654:2;29646:6;29642:15;29635:37;29450:229;:::o;29685:366::-;29827:3;29848:67;29912:2;29907:3;29848:67;:::i;:::-;29841:74;;29924:93;30013:3;29924:93;:::i;:::-;30042:2;30037:3;30033:12;30026:19;;29685:366;;;:::o;30057:419::-;30223:4;30261:2;30250:9;30246:18;30238:26;;30310:9;30304:4;30300:20;30296:1;30285:9;30281:17;30274:47;30338:131;30464:4;30338:131;:::i;:::-;30330:139;;30057:419;;;:::o;30482:143::-;30539:5;30570:6;30564:13;30555:22;;30586:33;30613:5;30586:33;:::i;:::-;30482:143;;;;:::o;30631:351::-;30701:6;30750:2;30738:9;30729:7;30725:23;30721:32;30718:119;;;30756:79;;:::i;:::-;30718:119;30876:1;30901:64;30957:7;30948:6;30937:9;30933:22;30901:64;:::i;:::-;30891:74;;30847:128;30631:351;;;;:::o;30988:85::-;31033:7;31062:5;31051:16;;30988:85;;;:::o;31079:158::-;31137:9;31170:61;31188:42;31197:32;31223:5;31197:32;:::i;:::-;31188:42;:::i;:::-;31170:61;:::i;:::-;31157:74;;31079:158;;;:::o;31243:147::-;31338:45;31377:5;31338:45;:::i;:::-;31333:3;31326:58;31243:147;;:::o;31396:114::-;31463:6;31497:5;31491:12;31481:22;;31396:114;;;:::o;31516:184::-;31615:11;31649:6;31644:3;31637:19;31689:4;31684:3;31680:14;31665:29;;31516:184;;;;:::o;31706:132::-;31773:4;31796:3;31788:11;;31826:4;31821:3;31817:14;31809:22;;31706:132;;;:::o;31844:108::-;31921:24;31939:5;31921:24;:::i;:::-;31916:3;31909:37;31844:108;;:::o;31958:179::-;32027:10;32048:46;32090:3;32082:6;32048:46;:::i;:::-;32126:4;32121:3;32117:14;32103:28;;31958:179;;;;:::o;32143:113::-;32213:4;32245;32240:3;32236:14;32228:22;;32143:113;;;:::o;32292:732::-;32411:3;32440:54;32488:5;32440:54;:::i;:::-;32510:86;32589:6;32584:3;32510:86;:::i;:::-;32503:93;;32620:56;32670:5;32620:56;:::i;:::-;32699:7;32730:1;32715:284;32740:6;32737:1;32734:13;32715:284;;;32816:6;32810:13;32843:63;32902:3;32887:13;32843:63;:::i;:::-;32836:70;;32929:60;32982:6;32929:60;:::i;:::-;32919:70;;32775:224;32762:1;32759;32755:9;32750:14;;32715:284;;;32719:14;33015:3;33008:10;;32416:608;;;32292:732;;;;:::o;33030:831::-;33293:4;33331:3;33320:9;33316:19;33308:27;;33345:71;33413:1;33402:9;33398:17;33389:6;33345:71;:::i;:::-;33426:80;33502:2;33491:9;33487:18;33478:6;33426:80;:::i;:::-;33553:9;33547:4;33543:20;33538:2;33527:9;33523:18;33516:48;33581:108;33684:4;33675:6;33581:108;:::i;:::-;33573:116;;33699:72;33767:2;33756:9;33752:18;33743:6;33699:72;:::i;:::-;33781:73;33849:3;33838:9;33834:19;33825:6;33781:73;:::i;:::-;33030:831;;;;;;;;:::o;33867:180::-;33915:77;33912:1;33905:88;34012:4;34009:1;34002:15;34036:4;34033:1;34026:15;34053:185;34093:1;34110:20;34128:1;34110:20;:::i;:::-;34105:25;;34144:20;34162:1;34144:20;:::i;:::-;34139:25;;34183:1;34173:35;;34188:18;;:::i;:::-;34173:35;34230:1;34227;34223:9;34218:14;;34053:185;;;;:::o;34244:177::-;34384:29;34380:1;34372:6;34368:14;34361:53;34244:177;:::o;34427:366::-;34569:3;34590:67;34654:2;34649:3;34590:67;:::i;:::-;34583:74;;34666:93;34755:3;34666:93;:::i;:::-;34784:2;34779:3;34775:12;34768:19;;34427:366;;;:::o;34799:419::-;34965:4;35003:2;34992:9;34988:18;34980:26;;35052:9;35046:4;35042:20;35038:1;35027:9;35023:17;35016:47;35080:131;35206:4;35080:131;:::i;:::-;35072:139;;34799:419;;;:::o;35224:348::-;35264:7;35287:20;35305:1;35287:20;:::i;:::-;35282:25;;35321:20;35339:1;35321:20;:::i;:::-;35316:25;;35509:1;35441:66;35437:74;35434:1;35431:81;35426:1;35419:9;35412:17;35408:105;35405:131;;;35516:18;;:::i;:::-;35405:131;35564:1;35561;35557:9;35546:20;;35224:348;;;;:::o;35578:220::-;35718:34;35714:1;35706:6;35702:14;35695:58;35787:3;35782:2;35774:6;35770:15;35763:28;35578:220;:::o;35804:366::-;35946:3;35967:67;36031:2;36026:3;35967:67;:::i;:::-;35960:74;;36043:93;36132:3;36043:93;:::i;:::-;36161:2;36156:3;36152:12;36145:19;;35804:366;;;:::o;36176:419::-;36342:4;36380:2;36369:9;36365:18;36357:26;;36429:9;36423:4;36419:20;36415:1;36404:9;36400:17;36393:47;36457:131;36583:4;36457:131;:::i;:::-;36449:139;;36176:419;;;:::o

Swarm Source

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