ETH Price: $3,610.97 (+6.21%)

Token

G͈͓ͥ͆͢L̩̖̦̠͐͢I̛̳̝̘͎͍̓́ͩͅT̬̣̰̲͐͂͟Ć̯̬͇̞̩̣́̾̿͟ͅH̛ͦ̔͊... (GLITCH)
 

Overview

Max Total Supply

6,969,696,969 GLITCH

Holders

44

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
89,919,054.372687999 GLITCH

Value
$0.00
0xdf59d379e729c031075fa61b57f4acf20143396b
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:
GLITCH

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-05-24
*/

/// SPDX-License-Identifier: Unlicensed

/*

https://twitter.com/Glitch_erc

https://t.me/Glitchv1

https://www.Glitchv1.com

*/

pragma solidity ^0.8.20;



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 GLITCH is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private constant _name = unicode"G͈͓ͥ͆͢L̩̖̦̠͐͢I̛̳̝̘͎͍̓́ͩͅT̬̣̰̲͐͂͟Ć̯̬͇̞̩̣́̾̿͟ͅH̛̰͍ͦ̔͊";
    string private constant _symbol = "GLITCH";
    uint8 private constant _decimals = 9;

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

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

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

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

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

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

    uint256 public _maxTxAmount = 140000000 * 10**9;
    uint256 public _maxWalletSize = 140000000 * 10**9;
    uint256 public _swapTokensAtAmount = 7000000 * 10**9;

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

    constructor() {

        _rOwned[_msgSender()] = _rTotal;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;

        _redisFee = 0;
        _taxFee = 0;
    }

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

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

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

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

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

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

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

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

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

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

        bool takeFee = true;

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

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

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

        }

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

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

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

    function activateTrading() public onlyOwner {
        tradingOpen = true;
    }

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

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

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

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

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

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

    receive() external payable {}

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

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

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

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

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

    function updateFees(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner {

        require((redisFeeOnBuy + taxFeeOnBuy) <= 40);
        require((redisFeeOnSell + taxFeeOnSell) <= 40);
        _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 setLimits(uint256 maxTxAmount, uint maxWalletSize) public onlyOwner {
        _maxTxAmount = maxTxAmount;
        _maxWalletSize = maxWalletSize;
    }

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

    function removeLimits() public onlyOwner{

        _maxTxAmount = _tTotal;
        _maxWalletSize = _tTotal;
    } 

}

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":[],"name":"activateTrading","outputs":[],"stateMutability":"nonpayable","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":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"clearETH","outputs":[],"stateMutability":"nonpayable","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":"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":"maxTxAmount","type":"uint256"},{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","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":[],"name":"unclogg","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526760b956775d5c9a005f196200001b9190620006ff565b5f1962000029919062000763565b6006555f60085560146009555f600a55603c600b55600a54600c55600b54600d55600c54600e55600d54600f55733f4b9860c8a2654a04553ce211e8d95de6b3a28960125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073aad3d73eca13aaf21e66dd588508c621d2c2799360135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f601560146101000a81548160ff0219169083151502179055505f6015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff0219169083151502179055506701f161421c8e00006016556701f161421c8e00006017556618de76816d80006018553480156200017b575f80fd5b505f6200018d6200069b60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060065460025f6200023f6200069b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f737a250d5630b4cf539739df2c5dacb4c659f2488d90508060145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200031e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000344919062000802565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003aa573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003d0919062000802565b6040518363ffffffff1660e01b8152600401620003ef92919062000843565b6020604051808303815f875af11580156200040c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000432919062000802565b60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160055f62000486620006a260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550620006266200069b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6760b956775d5c9a006040516200068c91906200087f565b60405180910390a3506200089a565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6200070b82620006c9565b91506200071883620006c9565b9250826200072b576200072a620006d2565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6200076f82620006c9565b91506200077c83620006c9565b925082820390508181111562000797576200079662000736565b5b92915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620007cc82620007a1565b9050919050565b620007de81620007c0565b8114620007e9575f80fd5b50565b5f81519050620007fc81620007d3565b92915050565b5f602082840312156200081a57620008196200079d565b5b5f6200082984828501620007ec565b91505092915050565b6200083d81620007c0565b82525050565b5f604082019050620008585f83018562000832565b62000867602083018462000832565b9392505050565b6200087981620006c9565b82525050565b5f602082019050620008945f8301846200086e565b92915050565b6138f680620008a85f395ff3fe6080604052600436106101ba575f3560e01c8063751039fc116100eb578063a9059cbb11610089578063c492f04611610063578063c492f046146105b7578063c6616ba1146105df578063dd62ed3e14610607578063f2fde38b14610643576101c1565b8063a9059cbb14610517578063bfd7928414610553578063c4590d3f1461058f576101c1565b80638da5cb5b116100c55780638da5cb5b146104715780638f9a55c01461049b57806395d89b41146104c557806398a5c315146104ef576101c1565b8063751039fc146103f55780637d1db4a51461040b5780637f2feddc14610435576101c1565b80632fd689e311610158578063616eb63811610132578063616eb638146103655780636d8aa8f81461037b57806370a08231146103a3578063715018a6146103df576101c1565b80632fd689e3146102e7578063313ce5671461031157806349bd5a5e1461033b576101c1565b80631694505e116101945780631694505e1461024157806318160ddd1461026b57806323b872dd146102955780632522958f146102d1576101c1565b806306fdde03146101c5578063095ea7b3146101ef5780630bd05b691461022b576101c1565b366101c157005b5f80fd5b3480156101d0575f80fd5b506101d961066b565b6040516101e691906128d4565b60405180910390f35b3480156101fa575f80fd5b5061021560048036038101906102109190612989565b61068b565b60405161022291906129e1565b60405180910390f35b348015610236575f80fd5b5061023f6106a8565b005b34801561024c575f80fd5b50610255610759565b6040516102629190612a55565b60405180910390f35b348015610276575f80fd5b5061027f61077e565b60405161028c9190612a7d565b60405180910390f35b3480156102a0575f80fd5b506102bb60048036038101906102b69190612a96565b61078d565b6040516102c891906129e1565b60405180910390f35b3480156102dc575f80fd5b506102e5610861565b005b3480156102f2575f80fd5b506102fb610936565b6040516103089190612a7d565b60405180910390f35b34801561031c575f80fd5b5061032561093c565b6040516103329190612b01565b60405180910390f35b348015610346575f80fd5b5061034f610944565b60405161035c9190612b29565b60405180910390f35b348015610370575f80fd5b50610379610969565b005b348015610386575f80fd5b506103a1600480360381019061039c9190612b6c565b610a36565b005b3480156103ae575f80fd5b506103c960048036038101906103c49190612b97565b610ae7565b6040516103d69190612a7d565b60405180910390f35b3480156103ea575f80fd5b506103f3610b35565b005b348015610400575f80fd5b50610409610c83565b005b348015610416575f80fd5b5061041f610d37565b60405161042c9190612a7d565b60405180910390f35b348015610440575f80fd5b5061045b60048036038101906104569190612b97565b610d3d565b6040516104689190612a7d565b60405180910390f35b34801561047c575f80fd5b50610485610d52565b6040516104929190612b29565b60405180910390f35b3480156104a6575f80fd5b506104af610d79565b6040516104bc9190612a7d565b60405180910390f35b3480156104d0575f80fd5b506104d9610d7f565b6040516104e691906128d4565b60405180910390f35b3480156104fa575f80fd5b5061051560048036038101906105109190612bc2565b610dbc565b005b348015610522575f80fd5b5061053d60048036038101906105389190612989565b610e5a565b60405161054a91906129e1565b60405180910390f35b34801561055e575f80fd5b5061057960048036038101906105749190612b97565b610e77565b60405161058691906129e1565b60405180910390f35b34801561059a575f80fd5b506105b560048036038101906105b09190612bed565b610e94565b005b3480156105c2575f80fd5b506105dd60048036038101906105d89190612c8c565b610f3a565b005b3480156105ea575f80fd5b5061060560048036038101906106009190612ce9565b61106f565b005b348015610612575f80fd5b5061062d60048036038101906106289190612d4d565b611155565b60405161063a9190612a7d565b60405180910390f35b34801561064e575f80fd5b5061066960048036038101906106649190612b97565b6111d7565b005b60606040518060a001604052806062815260200161383760629139905090565b5f61069e610697611394565b848461139b565b6001905092915050565b6106b0611394565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461073c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073390612dd5565b60405180910390fd5b6001601560146101000a81548160ff021916908315150217905550565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6760b956775d5c9a00905090565b5f61079984848461155e565b610856846107a5611394565b610851856040518060600160405280602881526020016138996028913960045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610808611394565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611dbe9092919063ffffffff16565b61139b565b600190509392505050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108a1611394565b73ffffffffffffffffffffffffffffffffffffffff161480610916575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fe611394565b73ffffffffffffffffffffffffffffffffffffffff16145b61091e575f80fd5b5f61092830610ae7565b905061093381611e20565b50565b60185481565b5f6009905090565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109a9611394565b73ffffffffffffffffffffffffffffffffffffffff161480610a1e575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a06611394565b73ffffffffffffffffffffffffffffffffffffffff16145b610a26575f80fd5b5f479050610a3381612089565b50565b610a3e611394565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610aca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac190612dd5565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b5f610b2e60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546120f1565b9050919050565b610b3d611394565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc090612dd5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610c8b611394565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0e90612dd5565b60405180910390fd5b6760b956775d5c9a006016819055506760b956775d5c9a00601781905550565b60165481565b6011602052805f5260405f205f915090505481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600681526020017f474c495443480000000000000000000000000000000000000000000000000000815250905090565b610dc4611394565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4790612dd5565b60405180910390fd5b8060188190555050565b5f610e6d610e66611394565b848461155e565b6001905092915050565b6010602052805f5260405f205f915054906101000a900460ff1681565b610e9c611394565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1f90612dd5565b60405180910390fd5b81601681905550806017819055505050565b610f42611394565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc590612dd5565b60405180910390fd5b5f5b83839050811015611069578160055f868685818110610ff257610ff1612df3565b5b90506020020160208101906110079190612b97565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808061106190612e4d565b915050610fd0565b50505050565b611077611394565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611103576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110fa90612dd5565b60405180910390fd5b602882856111119190612e94565b111561111b575f80fd5b602881846111299190612e94565b1115611133575f80fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6111df611394565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461126b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126290612dd5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036112d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d090612f37565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611409576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140090612fc5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611477576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146e90613053565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516115519190612a7d565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c3906130e1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361163a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116319061316f565b60405180910390fd5b5f811161167c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611673906131fd565b60405180910390fd5b611684610d52565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156116f257506116c2610d52565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611acb57601560149054906101000a900460ff1661178157611713610d52565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611780576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117779061328b565b60405180910390fd5b5b6016548111156117c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117bd906132f3565b60405180910390fd5b60105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611864575060105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b6118a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189a90613381565b60405180910390fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461194f576017548161190484610ae7565b61190e9190612e94565b1061194e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119459061340f565b60405180910390fd5b5b5f61195930610ae7565b90505f601854821015905060165482106119735760165491505b80801561198b575060158054906101000a900460ff16155b80156119e4575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156119fc5750601560169054906101000a900460ff165b8015611a4f575060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611aa2575060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611ac857611ab082611e20565b5f4790505f811115611ac657611ac547612089565b5b505b50505b5f6001905060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611b6b575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611c1c575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611c1b575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611c29575f9050611dac565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611cd2575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611cea57600854600c81905550600954600d819055505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611d93575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611dab57600a54600c81905550600b54600d819055505b5b611db88484848461215d565b50505050565b5f838311158290611e05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dfc91906128d4565b60405180910390fd5b505f8385611e13919061342d565b9050809150509392505050565b60016015806101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611e5657611e55613460565b5b604051908082528060200260200182016040528015611e845781602001602082028036833780820191505090505b50905030815f81518110611e9b57611e9a612df3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f3f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f6391906134a1565b81600181518110611f7757611f76612df3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611fdd3060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461139b565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161203f9594939291906135bc565b5f604051808303815f87803b158015612056575f80fd5b505af1158015612068573d5f803e3d5ffd5b50505050505f6015806101000a81548160ff02191690831515021790555050565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156120ed573d5f803e3d5ffd5b5050565b5f600654821115612137576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212e90613684565b60405180910390fd5b5f61214061218a565b905061215581846121b390919063ffffffff16565b915050919050565b8061216b5761216a6121fc565b5b612176848484612235565b80612184576121836123f5565b5b50505050565b5f805f612195612409565b915091506121ac81836121b390919063ffffffff16565b9250505090565b5f6121f483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612465565b905092915050565b5f600c5414801561220e57505f600d54145b61223357600c54600e81905550600d54600f819055505f600c819055505f600d819055505b565b5f805f805f80612244876124c6565b9550955095509550955095506122a08660025f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461252690919063ffffffff16565b60025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506123318560025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461256f90919063ffffffff16565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061237b816125cc565b6123858483612683565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516123e29190612a7d565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b5f805f60065490505f6760b956775d5c9a00905061243a6760b956775d5c9a006006546121b390919063ffffffff16565b821015612458576006546760b956775d5c9a00935093505050612461565b81819350935050505b9091565b5f80831182906124ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124a291906128d4565b60405180910390fd5b505f83856124b991906136cf565b9050809150509392505050565b5f805f805f805f805f6124de8a600c54600d546126bd565b9250925092505f6124ed61218a565b90505f805f6124fe8e87878761274f565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f61256783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611dbe565b905092915050565b5f80828461257d9190612e94565b9050838110156125c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125b990613749565b60405180910390fd5b8091505092915050565b5f6125d561218a565b90505f6125eb82846127d390919063ffffffff16565b905061263d8160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461256f90919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b6126988260065461252690919063ffffffff16565b6006819055506126b38160075461256f90919063ffffffff16565b6007819055505050565b5f805f806126e760646126d9888a6127d390919063ffffffff16565b6121b390919063ffffffff16565b90505f6127106064612702888b6127d390919063ffffffff16565b6121b390919063ffffffff16565b90505f6127388261272a858c61252690919063ffffffff16565b61252690919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f8061276685896127d390919063ffffffff16565b90505f61277c86896127d390919063ffffffff16565b90505f61279287896127d390919063ffffffff16565b90505f6127ba826127ac858761252690919063ffffffff16565b61252690919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f8083036127e3575f9050612844565b5f82846127f09190613767565b90508284826127ff91906136cf565b1461283f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161283690613818565b60405180910390fd5b809150505b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612881578082015181840152602081019050612866565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6128a68261284a565b6128b08185612854565b93506128c0818560208601612864565b6128c98161288c565b840191505092915050565b5f6020820190508181035f8301526128ec818461289c565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612925826128fc565b9050919050565b6129358161291b565b811461293f575f80fd5b50565b5f813590506129508161292c565b92915050565b5f819050919050565b61296881612956565b8114612972575f80fd5b50565b5f813590506129838161295f565b92915050565b5f806040838503121561299f5761299e6128f4565b5b5f6129ac85828601612942565b92505060206129bd85828601612975565b9150509250929050565b5f8115159050919050565b6129db816129c7565b82525050565b5f6020820190506129f45f8301846129d2565b92915050565b5f819050919050565b5f612a1d612a18612a13846128fc565b6129fa565b6128fc565b9050919050565b5f612a2e82612a03565b9050919050565b5f612a3f82612a24565b9050919050565b612a4f81612a35565b82525050565b5f602082019050612a685f830184612a46565b92915050565b612a7781612956565b82525050565b5f602082019050612a905f830184612a6e565b92915050565b5f805f60608486031215612aad57612aac6128f4565b5b5f612aba86828701612942565b9350506020612acb86828701612942565b9250506040612adc86828701612975565b9150509250925092565b5f60ff82169050919050565b612afb81612ae6565b82525050565b5f602082019050612b145f830184612af2565b92915050565b612b238161291b565b82525050565b5f602082019050612b3c5f830184612b1a565b92915050565b612b4b816129c7565b8114612b55575f80fd5b50565b5f81359050612b6681612b42565b92915050565b5f60208284031215612b8157612b806128f4565b5b5f612b8e84828501612b58565b91505092915050565b5f60208284031215612bac57612bab6128f4565b5b5f612bb984828501612942565b91505092915050565b5f60208284031215612bd757612bd66128f4565b5b5f612be484828501612975565b91505092915050565b5f8060408385031215612c0357612c026128f4565b5b5f612c1085828601612975565b9250506020612c2185828601612975565b9150509250929050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112612c4c57612c4b612c2b565b5b8235905067ffffffffffffffff811115612c6957612c68612c2f565b5b602083019150836020820283011115612c8557612c84612c33565b5b9250929050565b5f805f60408486031215612ca357612ca26128f4565b5b5f84013567ffffffffffffffff811115612cc057612cbf6128f8565b5b612ccc86828701612c37565b93509350506020612cdf86828701612b58565b9150509250925092565b5f805f8060808587031215612d0157612d006128f4565b5b5f612d0e87828801612975565b9450506020612d1f87828801612975565b9350506040612d3087828801612975565b9250506060612d4187828801612975565b91505092959194509250565b5f8060408385031215612d6357612d626128f4565b5b5f612d7085828601612942565b9250506020612d8185828601612942565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612dbf602083612854565b9150612dca82612d8b565b602082019050919050565b5f6020820190508181035f830152612dec81612db3565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612e5782612956565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612e8957612e88612e20565b5b600182019050919050565b5f612e9e82612956565b9150612ea983612956565b9250828201905080821115612ec157612ec0612e20565b5b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612f21602683612854565b9150612f2c82612ec7565b604082019050919050565b5f6020820190508181035f830152612f4e81612f15565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612faf602483612854565b9150612fba82612f55565b604082019050919050565b5f6020820190508181035f830152612fdc81612fa3565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61303d602283612854565b915061304882612fe3565b604082019050919050565b5f6020820190508181035f83015261306a81613031565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6130cb602583612854565b91506130d682613071565b604082019050919050565b5f6020820190508181035f8301526130f8816130bf565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613159602383612854565b9150613164826130ff565b604082019050919050565b5f6020820190508181035f8301526131868161314d565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6131e7602983612854565b91506131f28261318d565b604082019050919050565b5f6020820190508181035f830152613214816131db565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e64205f8201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b5f613275603f83612854565b91506132808261321b565b604082019050919050565b5f6020820190508181035f8301526132a281613269565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000005f82015250565b5f6132dd601c83612854565b91506132e8826132a9565b602082019050919050565b5f6020820190508181035f83015261330a816132d1565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c6973745f8201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b5f61336b602383612854565b915061337682613311565b604082019050919050565b5f6020820190508181035f8301526133988161335f565b9050919050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f6133f9602383612854565b91506134048261339f565b604082019050919050565b5f6020820190508181035f830152613426816133ed565b9050919050565b5f61343782612956565b915061344283612956565b925082820390508181111561345a57613459612e20565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f8151905061349b8161292c565b92915050565b5f602082840312156134b6576134b56128f4565b5b5f6134c38482850161348d565b91505092915050565b5f819050919050565b5f6134ef6134ea6134e5846134cc565b6129fa565b612956565b9050919050565b6134ff816134d5565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6135378161291b565b82525050565b5f613548838361352e565b60208301905092915050565b5f602082019050919050565b5f61356a82613505565b613574818561350f565b935061357f8361351f565b805f5b838110156135af578151613596888261353d565b97506135a183613554565b925050600181019050613582565b5085935050505092915050565b5f60a0820190506135cf5f830188612a6e565b6135dc60208301876134f6565b81810360408301526135ee8186613560565b90506135fd6060830185612b1a565b61360a6080830184612a6e565b9695505050505050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f61366e602a83612854565b915061367982613614565b604082019050919050565b5f6020820190508181035f83015261369b81613662565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6136d982612956565b91506136e483612956565b9250826136f4576136f36136a2565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613733601b83612854565b915061373e826136ff565b602082019050919050565b5f6020820190508181035f83015261376081613727565b9050919050565b5f61377182612956565b915061377c83612956565b925082820261378a81612956565b915082820484148315176137a1576137a0612e20565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613802602183612854565b915061380d826137a8565b604082019050919050565b5f6020820190508181035f83015261382f816137f6565b905091905056fe47cda5cd86cda2cd88cd934ccd90cda2cca9cc96cca6cca049cc93cc81cda9cc9bccb3cc9dcd85cc98cd8ecd8d54cd90cd82cd9fccaccca3ccb0ccb243cc81cc81ccbeccbfcd9fccafcd85ccaccd87cc9ecca9cca348cda6cc94cd8acc9bccb0cd8d45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122027cd675ace6ded6a2714fc1836f89a34807fb8b0186c09b2f14c6ad64a9bae0264736f6c63430008140033

Deployed Bytecode

0x6080604052600436106101ba575f3560e01c8063751039fc116100eb578063a9059cbb11610089578063c492f04611610063578063c492f046146105b7578063c6616ba1146105df578063dd62ed3e14610607578063f2fde38b14610643576101c1565b8063a9059cbb14610517578063bfd7928414610553578063c4590d3f1461058f576101c1565b80638da5cb5b116100c55780638da5cb5b146104715780638f9a55c01461049b57806395d89b41146104c557806398a5c315146104ef576101c1565b8063751039fc146103f55780637d1db4a51461040b5780637f2feddc14610435576101c1565b80632fd689e311610158578063616eb63811610132578063616eb638146103655780636d8aa8f81461037b57806370a08231146103a3578063715018a6146103df576101c1565b80632fd689e3146102e7578063313ce5671461031157806349bd5a5e1461033b576101c1565b80631694505e116101945780631694505e1461024157806318160ddd1461026b57806323b872dd146102955780632522958f146102d1576101c1565b806306fdde03146101c5578063095ea7b3146101ef5780630bd05b691461022b576101c1565b366101c157005b5f80fd5b3480156101d0575f80fd5b506101d961066b565b6040516101e691906128d4565b60405180910390f35b3480156101fa575f80fd5b5061021560048036038101906102109190612989565b61068b565b60405161022291906129e1565b60405180910390f35b348015610236575f80fd5b5061023f6106a8565b005b34801561024c575f80fd5b50610255610759565b6040516102629190612a55565b60405180910390f35b348015610276575f80fd5b5061027f61077e565b60405161028c9190612a7d565b60405180910390f35b3480156102a0575f80fd5b506102bb60048036038101906102b69190612a96565b61078d565b6040516102c891906129e1565b60405180910390f35b3480156102dc575f80fd5b506102e5610861565b005b3480156102f2575f80fd5b506102fb610936565b6040516103089190612a7d565b60405180910390f35b34801561031c575f80fd5b5061032561093c565b6040516103329190612b01565b60405180910390f35b348015610346575f80fd5b5061034f610944565b60405161035c9190612b29565b60405180910390f35b348015610370575f80fd5b50610379610969565b005b348015610386575f80fd5b506103a1600480360381019061039c9190612b6c565b610a36565b005b3480156103ae575f80fd5b506103c960048036038101906103c49190612b97565b610ae7565b6040516103d69190612a7d565b60405180910390f35b3480156103ea575f80fd5b506103f3610b35565b005b348015610400575f80fd5b50610409610c83565b005b348015610416575f80fd5b5061041f610d37565b60405161042c9190612a7d565b60405180910390f35b348015610440575f80fd5b5061045b60048036038101906104569190612b97565b610d3d565b6040516104689190612a7d565b60405180910390f35b34801561047c575f80fd5b50610485610d52565b6040516104929190612b29565b60405180910390f35b3480156104a6575f80fd5b506104af610d79565b6040516104bc9190612a7d565b60405180910390f35b3480156104d0575f80fd5b506104d9610d7f565b6040516104e691906128d4565b60405180910390f35b3480156104fa575f80fd5b5061051560048036038101906105109190612bc2565b610dbc565b005b348015610522575f80fd5b5061053d60048036038101906105389190612989565b610e5a565b60405161054a91906129e1565b60405180910390f35b34801561055e575f80fd5b5061057960048036038101906105749190612b97565b610e77565b60405161058691906129e1565b60405180910390f35b34801561059a575f80fd5b506105b560048036038101906105b09190612bed565b610e94565b005b3480156105c2575f80fd5b506105dd60048036038101906105d89190612c8c565b610f3a565b005b3480156105ea575f80fd5b5061060560048036038101906106009190612ce9565b61106f565b005b348015610612575f80fd5b5061062d60048036038101906106289190612d4d565b611155565b60405161063a9190612a7d565b60405180910390f35b34801561064e575f80fd5b5061066960048036038101906106649190612b97565b6111d7565b005b60606040518060a001604052806062815260200161383760629139905090565b5f61069e610697611394565b848461139b565b6001905092915050565b6106b0611394565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461073c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073390612dd5565b60405180910390fd5b6001601560146101000a81548160ff021916908315150217905550565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6760b956775d5c9a00905090565b5f61079984848461155e565b610856846107a5611394565b610851856040518060600160405280602881526020016138996028913960045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610808611394565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611dbe9092919063ffffffff16565b61139b565b600190509392505050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108a1611394565b73ffffffffffffffffffffffffffffffffffffffff161480610916575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fe611394565b73ffffffffffffffffffffffffffffffffffffffff16145b61091e575f80fd5b5f61092830610ae7565b905061093381611e20565b50565b60185481565b5f6009905090565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109a9611394565b73ffffffffffffffffffffffffffffffffffffffff161480610a1e575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a06611394565b73ffffffffffffffffffffffffffffffffffffffff16145b610a26575f80fd5b5f479050610a3381612089565b50565b610a3e611394565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610aca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac190612dd5565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b5f610b2e60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546120f1565b9050919050565b610b3d611394565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc090612dd5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610c8b611394565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0e90612dd5565b60405180910390fd5b6760b956775d5c9a006016819055506760b956775d5c9a00601781905550565b60165481565b6011602052805f5260405f205f915090505481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600681526020017f474c495443480000000000000000000000000000000000000000000000000000815250905090565b610dc4611394565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4790612dd5565b60405180910390fd5b8060188190555050565b5f610e6d610e66611394565b848461155e565b6001905092915050565b6010602052805f5260405f205f915054906101000a900460ff1681565b610e9c611394565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1f90612dd5565b60405180910390fd5b81601681905550806017819055505050565b610f42611394565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc590612dd5565b60405180910390fd5b5f5b83839050811015611069578160055f868685818110610ff257610ff1612df3565b5b90506020020160208101906110079190612b97565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808061106190612e4d565b915050610fd0565b50505050565b611077611394565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611103576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110fa90612dd5565b60405180910390fd5b602882856111119190612e94565b111561111b575f80fd5b602881846111299190612e94565b1115611133575f80fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6111df611394565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461126b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126290612dd5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036112d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d090612f37565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611409576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140090612fc5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611477576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146e90613053565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516115519190612a7d565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c3906130e1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361163a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116319061316f565b60405180910390fd5b5f811161167c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611673906131fd565b60405180910390fd5b611684610d52565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156116f257506116c2610d52565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611acb57601560149054906101000a900460ff1661178157611713610d52565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611780576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117779061328b565b60405180910390fd5b5b6016548111156117c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117bd906132f3565b60405180910390fd5b60105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611864575060105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b6118a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189a90613381565b60405180910390fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461194f576017548161190484610ae7565b61190e9190612e94565b1061194e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119459061340f565b60405180910390fd5b5b5f61195930610ae7565b90505f601854821015905060165482106119735760165491505b80801561198b575060158054906101000a900460ff16155b80156119e4575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156119fc5750601560169054906101000a900460ff165b8015611a4f575060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611aa2575060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611ac857611ab082611e20565b5f4790505f811115611ac657611ac547612089565b5b505b50505b5f6001905060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611b6b575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611c1c575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611c1b575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611c29575f9050611dac565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611cd2575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611cea57600854600c81905550600954600d819055505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611d93575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611dab57600a54600c81905550600b54600d819055505b5b611db88484848461215d565b50505050565b5f838311158290611e05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dfc91906128d4565b60405180910390fd5b505f8385611e13919061342d565b9050809150509392505050565b60016015806101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611e5657611e55613460565b5b604051908082528060200260200182016040528015611e845781602001602082028036833780820191505090505b50905030815f81518110611e9b57611e9a612df3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f3f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f6391906134a1565b81600181518110611f7757611f76612df3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611fdd3060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461139b565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161203f9594939291906135bc565b5f604051808303815f87803b158015612056575f80fd5b505af1158015612068573d5f803e3d5ffd5b50505050505f6015806101000a81548160ff02191690831515021790555050565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156120ed573d5f803e3d5ffd5b5050565b5f600654821115612137576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212e90613684565b60405180910390fd5b5f61214061218a565b905061215581846121b390919063ffffffff16565b915050919050565b8061216b5761216a6121fc565b5b612176848484612235565b80612184576121836123f5565b5b50505050565b5f805f612195612409565b915091506121ac81836121b390919063ffffffff16565b9250505090565b5f6121f483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612465565b905092915050565b5f600c5414801561220e57505f600d54145b61223357600c54600e81905550600d54600f819055505f600c819055505f600d819055505b565b5f805f805f80612244876124c6565b9550955095509550955095506122a08660025f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461252690919063ffffffff16565b60025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506123318560025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461256f90919063ffffffff16565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061237b816125cc565b6123858483612683565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516123e29190612a7d565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b5f805f60065490505f6760b956775d5c9a00905061243a6760b956775d5c9a006006546121b390919063ffffffff16565b821015612458576006546760b956775d5c9a00935093505050612461565b81819350935050505b9091565b5f80831182906124ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124a291906128d4565b60405180910390fd5b505f83856124b991906136cf565b9050809150509392505050565b5f805f805f805f805f6124de8a600c54600d546126bd565b9250925092505f6124ed61218a565b90505f805f6124fe8e87878761274f565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f61256783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611dbe565b905092915050565b5f80828461257d9190612e94565b9050838110156125c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125b990613749565b60405180910390fd5b8091505092915050565b5f6125d561218a565b90505f6125eb82846127d390919063ffffffff16565b905061263d8160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461256f90919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b6126988260065461252690919063ffffffff16565b6006819055506126b38160075461256f90919063ffffffff16565b6007819055505050565b5f805f806126e760646126d9888a6127d390919063ffffffff16565b6121b390919063ffffffff16565b90505f6127106064612702888b6127d390919063ffffffff16565b6121b390919063ffffffff16565b90505f6127388261272a858c61252690919063ffffffff16565b61252690919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f8061276685896127d390919063ffffffff16565b90505f61277c86896127d390919063ffffffff16565b90505f61279287896127d390919063ffffffff16565b90505f6127ba826127ac858761252690919063ffffffff16565b61252690919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f8083036127e3575f9050612844565b5f82846127f09190613767565b90508284826127ff91906136cf565b1461283f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161283690613818565b60405180910390fd5b809150505b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612881578082015181840152602081019050612866565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6128a68261284a565b6128b08185612854565b93506128c0818560208601612864565b6128c98161288c565b840191505092915050565b5f6020820190508181035f8301526128ec818461289c565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612925826128fc565b9050919050565b6129358161291b565b811461293f575f80fd5b50565b5f813590506129508161292c565b92915050565b5f819050919050565b61296881612956565b8114612972575f80fd5b50565b5f813590506129838161295f565b92915050565b5f806040838503121561299f5761299e6128f4565b5b5f6129ac85828601612942565b92505060206129bd85828601612975565b9150509250929050565b5f8115159050919050565b6129db816129c7565b82525050565b5f6020820190506129f45f8301846129d2565b92915050565b5f819050919050565b5f612a1d612a18612a13846128fc565b6129fa565b6128fc565b9050919050565b5f612a2e82612a03565b9050919050565b5f612a3f82612a24565b9050919050565b612a4f81612a35565b82525050565b5f602082019050612a685f830184612a46565b92915050565b612a7781612956565b82525050565b5f602082019050612a905f830184612a6e565b92915050565b5f805f60608486031215612aad57612aac6128f4565b5b5f612aba86828701612942565b9350506020612acb86828701612942565b9250506040612adc86828701612975565b9150509250925092565b5f60ff82169050919050565b612afb81612ae6565b82525050565b5f602082019050612b145f830184612af2565b92915050565b612b238161291b565b82525050565b5f602082019050612b3c5f830184612b1a565b92915050565b612b4b816129c7565b8114612b55575f80fd5b50565b5f81359050612b6681612b42565b92915050565b5f60208284031215612b8157612b806128f4565b5b5f612b8e84828501612b58565b91505092915050565b5f60208284031215612bac57612bab6128f4565b5b5f612bb984828501612942565b91505092915050565b5f60208284031215612bd757612bd66128f4565b5b5f612be484828501612975565b91505092915050565b5f8060408385031215612c0357612c026128f4565b5b5f612c1085828601612975565b9250506020612c2185828601612975565b9150509250929050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112612c4c57612c4b612c2b565b5b8235905067ffffffffffffffff811115612c6957612c68612c2f565b5b602083019150836020820283011115612c8557612c84612c33565b5b9250929050565b5f805f60408486031215612ca357612ca26128f4565b5b5f84013567ffffffffffffffff811115612cc057612cbf6128f8565b5b612ccc86828701612c37565b93509350506020612cdf86828701612b58565b9150509250925092565b5f805f8060808587031215612d0157612d006128f4565b5b5f612d0e87828801612975565b9450506020612d1f87828801612975565b9350506040612d3087828801612975565b9250506060612d4187828801612975565b91505092959194509250565b5f8060408385031215612d6357612d626128f4565b5b5f612d7085828601612942565b9250506020612d8185828601612942565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612dbf602083612854565b9150612dca82612d8b565b602082019050919050565b5f6020820190508181035f830152612dec81612db3565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612e5782612956565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612e8957612e88612e20565b5b600182019050919050565b5f612e9e82612956565b9150612ea983612956565b9250828201905080821115612ec157612ec0612e20565b5b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612f21602683612854565b9150612f2c82612ec7565b604082019050919050565b5f6020820190508181035f830152612f4e81612f15565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612faf602483612854565b9150612fba82612f55565b604082019050919050565b5f6020820190508181035f830152612fdc81612fa3565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61303d602283612854565b915061304882612fe3565b604082019050919050565b5f6020820190508181035f83015261306a81613031565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6130cb602583612854565b91506130d682613071565b604082019050919050565b5f6020820190508181035f8301526130f8816130bf565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613159602383612854565b9150613164826130ff565b604082019050919050565b5f6020820190508181035f8301526131868161314d565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6131e7602983612854565b91506131f28261318d565b604082019050919050565b5f6020820190508181035f830152613214816131db565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e64205f8201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b5f613275603f83612854565b91506132808261321b565b604082019050919050565b5f6020820190508181035f8301526132a281613269565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000005f82015250565b5f6132dd601c83612854565b91506132e8826132a9565b602082019050919050565b5f6020820190508181035f83015261330a816132d1565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c6973745f8201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b5f61336b602383612854565b915061337682613311565b604082019050919050565b5f6020820190508181035f8301526133988161335f565b9050919050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f6133f9602383612854565b91506134048261339f565b604082019050919050565b5f6020820190508181035f830152613426816133ed565b9050919050565b5f61343782612956565b915061344283612956565b925082820390508181111561345a57613459612e20565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f8151905061349b8161292c565b92915050565b5f602082840312156134b6576134b56128f4565b5b5f6134c38482850161348d565b91505092915050565b5f819050919050565b5f6134ef6134ea6134e5846134cc565b6129fa565b612956565b9050919050565b6134ff816134d5565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6135378161291b565b82525050565b5f613548838361352e565b60208301905092915050565b5f602082019050919050565b5f61356a82613505565b613574818561350f565b935061357f8361351f565b805f5b838110156135af578151613596888261353d565b97506135a183613554565b925050600181019050613582565b5085935050505092915050565b5f60a0820190506135cf5f830188612a6e565b6135dc60208301876134f6565b81810360408301526135ee8186613560565b90506135fd6060830185612b1a565b61360a6080830184612a6e565b9695505050505050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f61366e602a83612854565b915061367982613614565b604082019050919050565b5f6020820190508181035f83015261369b81613662565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6136d982612956565b91506136e483612956565b9250826136f4576136f36136a2565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613733601b83612854565b915061373e826136ff565b602082019050919050565b5f6020820190508181035f83015261376081613727565b9050919050565b5f61377182612956565b915061377c83612956565b925082820261378a81612956565b915082820484148315176137a1576137a0612e20565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613802602183612854565b915061380d826137a8565b604082019050919050565b5f6020820190508181035f83015261382f816137f6565b905091905056fe47cda5cd86cda2cd88cd934ccd90cda2cca9cc96cca6cca049cc93cc81cda9cc9bccb3cc9dcd85cc98cd8ecd8d54cd90cd82cd9fccaccca3ccb0ccb243cc81cc81ccbeccbfcd9fccafcd85ccaccd87cc9ecca9cca348cda6cc94cd8acc9bccb0cd8d45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122027cd675ace6ded6a2714fc1836f89a34807fb8b0186c09b2f14c6ad64a9bae0264736f6c63430008140033

Deployed Bytecode Sourcemap

4175:13475:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6776:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7701:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12352:81;;;;;;;;;;;;;:::i;:::-;;5615:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7053:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7902:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12441:233;;;;;;;;;;;;;:::i;:::-;;5922:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6962:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5663:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12682:233;;;;;;;;;;;;;:::i;:::-;;16973:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7156:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1662:148;;;;;;;;;;;;;:::i;:::-;;17526:118;;;;;;;;;;;;;:::i;:::-;;5812:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5357:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1448:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5866:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6867:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16782:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7302:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5319:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17113:163;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17284:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16321:409;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7509:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1818:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6776:83;6813:13;6846:5;;;;;;;;;;;;;;;;;6839:12;;6776:83;:::o;7701:193::-;7803:4;7825:39;7834:12;:10;:12::i;:::-;7848:7;7857:6;7825:8;:39::i;:::-;7882:4;7875:11;;7701:193;;;;:::o;12352:81::-;1585:12;:10;:12::i;:::-;1575:22;;:6;;;;;;;;;;:22;;;1567:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12421:4:::1;12407:11;;:18;;;;;;;;;;;;;;;;;;12352:81::o:0;5615:41::-;;;;;;;;;;;;;:::o;7053:95::-;7106:7;4819:18;7126:14;;7053:95;:::o;7902:446::-;8034:4;8051:36;8061:6;8069:9;8080:6;8051:9;:36::i;:::-;8098:220;8121:6;8142:12;:10;:12::i;:::-;8169:138;8225:6;8169:138;;;;;;;;;;;;;;;;;:11;:19;8181:6;8169:19;;;;;;;;;;;;;;;:33;8189:12;:10;:12::i;:::-;8169:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;8098:8;:220::i;:::-;8336:4;8329:11;;7902:446;;;;;:::o;12441:233::-;12504:19;;;;;;;;;;;12488:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12543:17;;;;;;;;;;;12527:33;;:12;:10;:12::i;:::-;:33;;;12488:72;12480:81;;;;;;12572:23;12598:24;12616:4;12598:9;:24::i;:::-;12572:50;;12633:33;12650:15;12633:16;:33::i;:::-;12469:205;12441:233::o;5922:52::-;;;;:::o;6962:83::-;7003:5;4493:1;7021:16;;6962:83;:::o;5663:28::-;;;;;;;;;;;;;:::o;12682:233::-;12746:19;;;;;;;;;;;12730:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12785:17;;;;;;;;;;;12769:33;;:12;:10;:12::i;:::-;:33;;;12730:72;12722:81;;;;;;12814:26;12843:21;12814:50;;12875:32;12888:18;12875:12;:32::i;:::-;12711:204;12682:233::o;16973:101::-;1585:12;:10;:12::i;:::-;1575:22;;:6;;;;;;;;;;:22;;;1567:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17054:12:::1;17040:11;;:26;;;;;;;;;;;;;;;;;;16973:101:::0;:::o;7156:138::-;7222:7;7249:37;7269:7;:16;7277:7;7269:16;;;;;;;;;;;;;;;;7249:19;:37::i;:::-;7242:44;;7156:138;;;:::o;1662:148::-;1585:12;:10;:12::i;:::-;1575:22;;:6;;;;;;;;;;:22;;;1567:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1769:1:::1;1732:40;;1753:6;::::0;::::1;;;;;;;;1732:40;;;;;;;;;;;;1800:1;1783:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1662:148::o:0;17526:118::-;1585:12;:10;:12::i;:::-;1575:22;;:6;;;;;;;;;;:22;;;1567:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4819:18:::1;17579:12;:22;;;;4819:18;17612:14;:24;;;;17526:118::o:0;5812:47::-;;;;:::o;5357:43::-;;;;;;;;;;;;;;;;;:::o;1448:79::-;1486:7;1513:6;;;;;;;;;;;1506:13;;1448:79;:::o;5866:49::-;;;;:::o;6867:87::-;6906:13;6939:7;;;;;;;;;;;;;;;;;6932:14;;6867:87;:::o;16782:139::-;1585:12;:10;:12::i;:::-;1575:22;;:6;;;;;;;;;;:22;;;1567:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16895:18:::1;16873:19;:40;;;;16782:139:::0;:::o;7302:199::-;7407:4;7429:42;7439:12;:10;:12::i;:::-;7453:9;7464:6;7429:9;:42::i;:::-;7489:4;7482:11;;7302:199;;;;:::o;5319:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;17113:163::-;1585:12;:10;:12::i;:::-;1575:22;;:6;;;;;;;;;;:22;;;1567:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17216:11:::1;17201:12;:26;;;;17255:13;17238:14;:30;;;;17113:163:::0;;:::o;17284:234::-;1585:12;:10;:12::i;:::-;1575:22;;:6;;;;;;;;;;:22;;;1567:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17401:9:::1;17397:114;17420:8;;:15;;17416:1;:19;17397:114;;;17491:8;17457:18;:31;17476:8;;17485:1;17476:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;17457:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;17437:3;;;;;:::i;:::-;;;;17397:114;;;;17284:234:::0;;;:::o;16321:409::-;1585:12;:10;:12::i;:::-;1575:22;;:6;;;;;;;;;;:22;;;1567:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16502:2:::1;16486:11;16470:13;:27;;;;:::i;:::-;16469:35;;16461:44;;;::::0;::::1;;16559:2;16542:12;16525:14;:29;;;;:::i;:::-;16524:37;;16516:46;;;::::0;::::1;;16590:13;16573:14;:30;;;;16632:14;16614:15;:32;;;;16672:11;16657:12;:26;;;;16710:12;16694:13;:28;;;;16321:409:::0;;;;:::o;7509:184::-;7626:7;7658:11;:18;7670:5;7658:18;;;;;;;;;;;;;;;:27;7677:7;7658:27;;;;;;;;;;;;;;;;7651:34;;7509:184;;;;:::o;1818:244::-;1585:12;:10;:12::i;:::-;1575:22;;:6;;;;;;;;;;:22;;;1567:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1927:1:::1;1907:22;;:8;:22;;::::0;1899:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2017:8;1988:38;;2009:6;::::0;::::1;;;;;;;;1988:38;;;;;;;;;;;;2046:8;2037:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1818:244:::0;:::o;207:98::-;260:7;287:10;280:17;;207:98;:::o;9039:369::-;9183:1;9166:19;;:5;:19;;;9158:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9264:1;9245:21;;:7;:21;;;9237:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9346:6;9316:11;:18;9328:5;9316:18;;;;;;;;;;;;;;;:27;9335:7;9316:27;;;;;;;;;;;;;;;:36;;;;9384:7;9368:32;;9377:5;9368:32;;;9393:6;9368:32;;;;;;:::i;:::-;;;;;;;;9039:369;;;:::o;9416:2330::-;9554:1;9538:18;;:4;:18;;;9530:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9631:1;9617:16;;:2;:16;;;9609:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9701:1;9692:6;:10;9684:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9773:7;:5;:7::i;:::-;9765:15;;:4;:15;;;;:32;;;;;9790:7;:5;:7::i;:::-;9784:13;;:2;:13;;;;9765:32;9761:1259;;;9854:11;;;;;;;;;;;9849:144;;9902:7;:5;:7::i;:::-;9894:15;;:4;:15;;;9886:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;9849:144;10027:12;;10017:6;:22;;10009:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10096:4;:10;10101:4;10096:10;;;;;;;;;;;;;;;;;;;;;;;;;10095:11;:24;;;;;10111:4;:8;10116:2;10111:8;;;;;;;;;;;;;;;;;;;;;;;;;10110:9;10095:24;10087:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;10185:13;;;;;;;;;;;10179:19;;:2;:19;;;10176:146;;10252:14;;10243:6;10227:13;10237:2;10227:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10219:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;10176:146;10338:28;10369:24;10387:4;10369:9;:24::i;:::-;10338:55;;10408:12;10447:19;;10423:20;:43;;10408:58;;10510:12;;10486:20;:36;10483:124;;10579:12;;10556:35;;10483:124;10627:7;:18;;;;;10639:6;;;;;;;;;;10638:7;10627:18;:43;;;;;10657:13;;;;;;;;;;;10649:21;;:4;:21;;;;10627:43;:58;;;;;10674:11;;;;;;;;;;;10627:58;:87;;;;;10690:18;:24;10709:4;10690:24;;;;;;;;;;;;;;;;;;;;;;;;;10689:25;10627:87;:114;;;;;10719:18;:22;10738:2;10719:22;;;;;;;;;;;;;;;;;;;;;;;;;10718:23;10627:114;10623:386;;;10762:38;10779:20;10762:16;:38::i;:::-;10819:26;10848:21;10819:50;;10913:1;10892:18;:22;10888:106;;;10939:35;10952:21;10939:12;:35::i;:::-;10888:106;10743:266;10623:386;9799:1221;;9761:1259;11032:12;11047:4;11032:19;;11096:18;:24;11115:4;11096:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11124:18;:22;11143:2;11124:22;;;;;;;;;;;;;;;;;;;;;;;;;11096:50;11095:102;;;;11160:13;;;;;;;;;;;11152:21;;:4;:21;;;;:44;;;;;11183:13;;;;;;;;;;;11177:19;;:2;:19;;;;11152:44;11095:102;11091:594;;;11224:5;11214:15;;11091:594;;;11307:13;;;;;;;;;;;11299:21;;:4;:21;;;:55;;;;;11338:15;;;;;;;;;;;11324:30;;:2;:30;;;;11299:55;11296:162;;;11387:14;;11375:9;:26;;;;11430:12;;11420:7;:22;;;;11296:162;11517:13;;;;;;;;;;;11511:19;;:2;:19;;;:55;;;;;11550:15;;;;;;;;;;;11534:32;;:4;:32;;;;11511:55;11507:165;;;11599:15;;11587:9;:27;;;;11643:13;;11633:7;:23;;;;11507:165;11091:594;11697:41;11712:4;11718:2;11722:6;11730:7;11697:14;:41::i;:::-;9519:2227;9416:2330;;;:::o;2426:224::-;2546:7;2579:1;2574;:6;;2582:12;2566:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2606:9;2622:1;2618;:5;;;;:::i;:::-;2606:17;;2641:1;2634:8;;;2426:224;;;;;:::o;11754:483::-;6077:4;6068:6;;:13;;;;;;;;;;;;;;;;;;11832:21:::1;11870:1;11856:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11832:40;;11901:4;11883;11888:1;11883:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11927:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11917:4;11922:1;11917:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11960:62;11977:4;11992:15;;;;;;;;;;;12010:11;11960:8;:62::i;:::-;12033:15;;;;;;;;;;;:66;;;12114:11;12140:1;12156:4;12183;12203:15;12033:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11821:416;6113:5:::0;6104:6;;:14;;;;;;;;;;;;;;;;;;11754:483;:::o;12245:99::-;12302:17;;;;;;;;;;;:26;;:34;12329:6;12302:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12245:99;:::o;8356:323::-;8451:7;8509;;8498;:18;;8476:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8597:19;8619:10;:8;:10::i;:::-;8597:32;;8647:24;8659:11;8647:7;:11;;:24;;;;:::i;:::-;8640:31;;;8356:323;;;:::o;12923:282::-;13079:7;13074:28;;13088:14;:12;:14::i;:::-;13074:28;13113:44;13131:6;13139:9;13150:6;13113:17;:44::i;:::-;13173:7;13168:29;;13182:15;:13;:15::i;:::-;13168:29;12923:282;;;;:::o;15884:164::-;15926:7;15947:15;15964;15983:19;:17;:19::i;:::-;15946:56;;;;16020:20;16032:7;16020;:11;;:20;;;;:::i;:::-;16013:27;;;;15884:164;:::o;2912:132::-;2970:7;2997:39;3001:1;3004;2997:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2990:46;;2912:132;;;;:::o;8687:219::-;8747:1;8734:9;;:14;:30;;;;;8763:1;8752:7;;:12;8734:30;8766:7;8730:43;8805:9;;8785:17;:29;;;;8843:7;;8825:15;:25;;;;8875:1;8863:9;:13;;;;8897:1;8887:7;:11;;;;8687:219;:::o;13213:610::-;13360:15;13390:23;13428:12;13455:23;13493:12;13520:13;13547:19;13558:7;13547:10;:19::i;:::-;13345:221;;;;;;;;;;;;13595:28;13615:7;13595;:15;13603:6;13595:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13577:7;:15;13585:6;13577:15;;;;;;;;;;;;;;;:46;;;;13655:39;13678:15;13655:7;:18;13663:9;13655:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13634:7;:18;13642:9;13634:18;;;;;;;;;;;;;;;:60;;;;13705:16;13715:5;13705:9;:16::i;:::-;13732:23;13744:4;13750;13732:11;:23::i;:::-;13788:9;13771:44;;13780:6;13771:44;;;13799:15;13771:44;;;;;;:::i;:::-;;;;;;;;13334:489;;;;;;13213:610;;;:::o;8914:117::-;8970:17;;8958:9;:29;;;;9008:15;;8998:7;:25;;;;8914:117::o;16056:257::-;16107:7;16116;16136:15;16154:7;;16136:25;;16172:15;4819:18;16172:25;;16222:20;4819:18;16222:7;;:11;;:20;;;;:::i;:::-;16212:7;:30;16208:61;;;16252:7;;4819:18;16244:25;;;;;;;;16208:61;16288:7;16297;16280:25;;;;;;16056:257;;;:::o;3052:223::-;3172:7;3204:1;3200;:5;3207:12;3192:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3231:9;3247:1;3243;:5;;;;:::i;:::-;3231:17;;3266:1;3259:8;;;3052:223;;;;;:::o;14242:615::-;14342:7;14364;14386;14408;14430;14452;14488:23;14513:12;14527:13;14557:40;14569:7;14578:9;;14589:7;;14557:11;:40::i;:::-;14487:110;;;;;;14608:19;14630:10;:8;:10::i;:::-;14608:32;;14652:15;14669:23;14694:12;14723:46;14735:7;14744:4;14750:5;14757:11;14723;:46::i;:::-;14651:118;;;;;;14788:7;14797:15;14814:4;14820:15;14837:4;14843:5;14780:69;;;;;;;;;;;;;;;;;;;14242:615;;;;;;;:::o;2282:136::-;2340:7;2367:43;2371:1;2374;2367:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2360:50;;2282:136;;;;:::o;2095:179::-;2153:7;2173:9;2189:1;2185;:5;;;;:::i;:::-;2173:17;;2214:1;2209;:6;;2201:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2265:1;2258:8;;;2095:179;;;;:::o;13831:211::-;13884:19;13906:10;:8;:10::i;:::-;13884:32;;13927:13;13943:22;13953:11;13943:5;:9;;:22;;;;:::i;:::-;13927:38;;14001:33;14028:5;14001:7;:22;14017:4;14001:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;13976:7;:22;13992:4;13976:22;;;;;;;;;;;;;;;:58;;;;13873:169;;13831:211;:::o;14050:147::-;14128:17;14140:4;14128:7;;:11;;:17;;;;:::i;:::-;14118:7;:27;;;;14169:20;14184:4;14169:10;;:14;;:20;;;;:::i;:::-;14156:10;:33;;;;14050:147;;:::o;14865:469::-;15034:7;15056;15078;15113:12;15128:30;15154:3;15128:21;15140:8;15128:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;15113:45;;15169:13;15185:28;15209:3;15185:19;15197:6;15185:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15169:44;;15224:23;15250:28;15272:5;15250:17;15262:4;15250:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15224:54;;15297:15;15314:4;15320:5;15289:37;;;;;;;;;14865:469;;;;;;;:::o;15342:534::-;15536:7;15558;15580;15615:15;15633:24;15645:11;15633:7;:11;;:24;;;;:::i;:::-;15615:42;;15668:12;15683:21;15692:11;15683:4;:8;;:21;;;;:::i;:::-;15668:36;;15715:13;15731:22;15741:11;15731:5;:9;;:22;;;;:::i;:::-;15715:38;;15764:23;15790:28;15812:5;15790:17;15802:4;15790:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15764:54;;15837:7;15846:15;15863:4;15829:39;;;;;;;;;;15342:534;;;;;;;;:::o;2658:246::-;2716:7;2745:1;2740;:6;2736:47;;2770:1;2763:8;;;;2736:47;2793:9;2809:1;2805;:5;;;;:::i;:::-;2793:17;;2838:1;2833;2829;:5;;;;:::i;:::-;:10;2821:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2895:1;2888:8;;;2658:246;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:60::-;3474:3;3495:5;3488:12;;3446:60;;;:::o;3512:142::-;3562:9;3595:53;3613:34;3622:24;3640:5;3622:24;:::i;:::-;3613:34;:::i;:::-;3595:53;:::i;:::-;3582:66;;3512:142;;;:::o;3660:126::-;3710:9;3743:37;3774:5;3743:37;:::i;:::-;3730:50;;3660:126;;;:::o;3792:152::-;3868:9;3901:37;3932:5;3901:37;:::i;:::-;3888:50;;3792:152;;;:::o;3950:183::-;4063:63;4120:5;4063:63;:::i;:::-;4058:3;4051:76;3950:183;;:::o;4139:274::-;4258:4;4296:2;4285:9;4281:18;4273:26;;4309:97;4403:1;4392:9;4388:17;4379:6;4309:97;:::i;:::-;4139:274;;;;:::o;4419:118::-;4506:24;4524:5;4506:24;:::i;:::-;4501:3;4494:37;4419:118;;:::o;4543:222::-;4636:4;4674:2;4663:9;4659:18;4651:26;;4687:71;4755:1;4744:9;4740:17;4731:6;4687:71;:::i;:::-;4543:222;;;;:::o;4771:619::-;4848:6;4856;4864;4913:2;4901:9;4892:7;4888:23;4884:32;4881:119;;;4919:79;;:::i;:::-;4881:119;5039:1;5064:53;5109:7;5100:6;5089:9;5085:22;5064:53;:::i;:::-;5054:63;;5010:117;5166:2;5192:53;5237:7;5228:6;5217:9;5213:22;5192:53;:::i;:::-;5182:63;;5137:118;5294:2;5320:53;5365:7;5356:6;5345:9;5341:22;5320:53;:::i;:::-;5310:63;;5265:118;4771:619;;;;;:::o;5396:86::-;5431:7;5471:4;5464:5;5460:16;5449:27;;5396:86;;;:::o;5488:112::-;5571:22;5587:5;5571:22;:::i;:::-;5566:3;5559:35;5488:112;;:::o;5606:214::-;5695:4;5733:2;5722:9;5718:18;5710:26;;5746:67;5810:1;5799:9;5795:17;5786:6;5746:67;:::i;:::-;5606:214;;;;:::o;5826:118::-;5913:24;5931:5;5913:24;:::i;:::-;5908:3;5901:37;5826:118;;:::o;5950:222::-;6043:4;6081:2;6070:9;6066:18;6058:26;;6094:71;6162:1;6151:9;6147:17;6138:6;6094:71;:::i;:::-;5950:222;;;;:::o;6178:116::-;6248:21;6263:5;6248:21;:::i;:::-;6241:5;6238:32;6228:60;;6284:1;6281;6274:12;6228:60;6178:116;:::o;6300:133::-;6343:5;6381:6;6368:20;6359:29;;6397:30;6421:5;6397:30;:::i;:::-;6300:133;;;;:::o;6439:323::-;6495:6;6544:2;6532:9;6523:7;6519:23;6515:32;6512:119;;;6550:79;;:::i;:::-;6512:119;6670:1;6695:50;6737:7;6728:6;6717:9;6713:22;6695:50;:::i;:::-;6685:60;;6641:114;6439:323;;;;:::o;6768:329::-;6827:6;6876:2;6864:9;6855:7;6851:23;6847:32;6844:119;;;6882:79;;:::i;:::-;6844:119;7002:1;7027:53;7072:7;7063:6;7052:9;7048:22;7027:53;:::i;:::-;7017:63;;6973:117;6768:329;;;;:::o;7103:::-;7162:6;7211:2;7199:9;7190:7;7186:23;7182:32;7179:119;;;7217:79;;:::i;:::-;7179:119;7337:1;7362:53;7407:7;7398:6;7387:9;7383:22;7362:53;:::i;:::-;7352:63;;7308:117;7103:329;;;;:::o;7438:474::-;7506:6;7514;7563:2;7551:9;7542:7;7538:23;7534:32;7531:119;;;7569:79;;:::i;:::-;7531:119;7689:1;7714:53;7759:7;7750:6;7739:9;7735:22;7714:53;:::i;:::-;7704:63;;7660:117;7816:2;7842:53;7887:7;7878:6;7867:9;7863:22;7842:53;:::i;:::-;7832:63;;7787:118;7438:474;;;;;:::o;7918:117::-;8027:1;8024;8017:12;8041:117;8150:1;8147;8140:12;8164:117;8273:1;8270;8263:12;8304:568;8377:8;8387:6;8437:3;8430:4;8422:6;8418:17;8414:27;8404:122;;8445:79;;:::i;:::-;8404:122;8558:6;8545:20;8535:30;;8588:18;8580:6;8577:30;8574:117;;;8610:79;;:::i;:::-;8574:117;8724:4;8716:6;8712:17;8700:29;;8778:3;8770:4;8762:6;8758:17;8748:8;8744:32;8741:41;8738:128;;;8785:79;;:::i;:::-;8738:128;8304:568;;;;;:::o;8878:698::-;8970:6;8978;8986;9035:2;9023:9;9014:7;9010:23;9006:32;9003:119;;;9041:79;;:::i;:::-;9003:119;9189:1;9178:9;9174:17;9161:31;9219:18;9211:6;9208:30;9205:117;;;9241:79;;:::i;:::-;9205:117;9354:80;9426:7;9417:6;9406:9;9402:22;9354:80;:::i;:::-;9336:98;;;;9132:312;9483:2;9509:50;9551:7;9542:6;9531:9;9527:22;9509:50;:::i;:::-;9499:60;;9454:115;8878:698;;;;;:::o;9582:765::-;9668:6;9676;9684;9692;9741:3;9729:9;9720:7;9716:23;9712:33;9709:120;;;9748:79;;:::i;:::-;9709:120;9868:1;9893:53;9938:7;9929:6;9918:9;9914:22;9893:53;:::i;:::-;9883:63;;9839:117;9995:2;10021:53;10066:7;10057:6;10046:9;10042:22;10021:53;:::i;:::-;10011:63;;9966:118;10123:2;10149:53;10194:7;10185:6;10174:9;10170:22;10149:53;:::i;:::-;10139:63;;10094:118;10251:2;10277:53;10322:7;10313:6;10302:9;10298:22;10277:53;:::i;:::-;10267:63;;10222:118;9582:765;;;;;;;:::o;10353:474::-;10421:6;10429;10478:2;10466:9;10457:7;10453:23;10449:32;10446:119;;;10484:79;;:::i;:::-;10446:119;10604:1;10629:53;10674:7;10665:6;10654:9;10650:22;10629:53;:::i;:::-;10619:63;;10575:117;10731:2;10757:53;10802:7;10793:6;10782:9;10778:22;10757:53;:::i;:::-;10747:63;;10702:118;10353:474;;;;;:::o;10833:182::-;10973:34;10969:1;10961:6;10957:14;10950:58;10833:182;:::o;11021:366::-;11163:3;11184:67;11248:2;11243:3;11184:67;:::i;:::-;11177:74;;11260:93;11349:3;11260:93;:::i;:::-;11378:2;11373:3;11369:12;11362:19;;11021:366;;;:::o;11393:419::-;11559:4;11597:2;11586:9;11582:18;11574:26;;11646:9;11640:4;11636:20;11632:1;11621:9;11617:17;11610:47;11674:131;11800:4;11674:131;:::i;:::-;11666:139;;11393:419;;;:::o;11818:180::-;11866:77;11863:1;11856:88;11963:4;11960:1;11953:15;11987:4;11984:1;11977:15;12004:180;12052:77;12049:1;12042:88;12149:4;12146:1;12139:15;12173:4;12170:1;12163:15;12190:233;12229:3;12252:24;12270:5;12252:24;:::i;:::-;12243:33;;12298:66;12291:5;12288:77;12285:103;;12368:18;;:::i;:::-;12285:103;12415:1;12408:5;12404:13;12397:20;;12190:233;;;:::o;12429:191::-;12469:3;12488:20;12506:1;12488:20;:::i;:::-;12483:25;;12522:20;12540:1;12522:20;:::i;:::-;12517:25;;12565:1;12562;12558:9;12551:16;;12586:3;12583:1;12580:10;12577:36;;;12593:18;;:::i;:::-;12577:36;12429:191;;;;:::o;12626:225::-;12766:34;12762:1;12754:6;12750:14;12743:58;12835:8;12830:2;12822:6;12818:15;12811:33;12626:225;:::o;12857:366::-;12999:3;13020:67;13084:2;13079:3;13020:67;:::i;:::-;13013:74;;13096:93;13185:3;13096:93;:::i;:::-;13214:2;13209:3;13205:12;13198:19;;12857:366;;;:::o;13229:419::-;13395:4;13433:2;13422:9;13418:18;13410:26;;13482:9;13476:4;13472:20;13468:1;13457:9;13453:17;13446:47;13510:131;13636:4;13510:131;:::i;:::-;13502:139;;13229:419;;;:::o;13654:223::-;13794:34;13790:1;13782:6;13778:14;13771:58;13863:6;13858:2;13850:6;13846:15;13839:31;13654:223;:::o;13883:366::-;14025:3;14046:67;14110:2;14105:3;14046:67;:::i;:::-;14039:74;;14122:93;14211:3;14122:93;:::i;:::-;14240:2;14235:3;14231:12;14224:19;;13883:366;;;:::o;14255:419::-;14421:4;14459:2;14448:9;14444:18;14436:26;;14508:9;14502:4;14498:20;14494:1;14483:9;14479:17;14472:47;14536:131;14662:4;14536:131;:::i;:::-;14528:139;;14255:419;;;:::o;14680:221::-;14820:34;14816:1;14808:6;14804:14;14797:58;14889:4;14884:2;14876:6;14872:15;14865:29;14680:221;:::o;14907:366::-;15049:3;15070:67;15134:2;15129:3;15070:67;:::i;:::-;15063:74;;15146:93;15235:3;15146:93;:::i;:::-;15264:2;15259:3;15255:12;15248:19;;14907:366;;;:::o;15279:419::-;15445:4;15483:2;15472:9;15468:18;15460:26;;15532:9;15526:4;15522:20;15518:1;15507:9;15503:17;15496:47;15560:131;15686:4;15560:131;:::i;:::-;15552:139;;15279:419;;;:::o;15704:224::-;15844:34;15840:1;15832:6;15828:14;15821:58;15913:7;15908:2;15900:6;15896:15;15889:32;15704:224;:::o;15934:366::-;16076:3;16097:67;16161:2;16156:3;16097:67;:::i;:::-;16090:74;;16173:93;16262:3;16173:93;:::i;:::-;16291:2;16286:3;16282:12;16275:19;;15934:366;;;:::o;16306:419::-;16472:4;16510:2;16499:9;16495:18;16487:26;;16559:9;16553:4;16549:20;16545:1;16534:9;16530:17;16523:47;16587:131;16713:4;16587:131;:::i;:::-;16579:139;;16306:419;;;:::o;16731:222::-;16871:34;16867:1;16859:6;16855:14;16848:58;16940:5;16935:2;16927:6;16923:15;16916:30;16731:222;:::o;16959:366::-;17101:3;17122:67;17186:2;17181:3;17122:67;:::i;:::-;17115:74;;17198:93;17287:3;17198:93;:::i;:::-;17316:2;17311:3;17307:12;17300:19;;16959:366;;;:::o;17331:419::-;17497:4;17535:2;17524:9;17520:18;17512:26;;17584:9;17578:4;17574:20;17570:1;17559:9;17555:17;17548:47;17612:131;17738:4;17612:131;:::i;:::-;17604:139;;17331:419;;;:::o;17756:228::-;17896:34;17892:1;17884:6;17880:14;17873:58;17965:11;17960:2;17952:6;17948:15;17941:36;17756:228;:::o;17990:366::-;18132:3;18153:67;18217:2;18212:3;18153:67;:::i;:::-;18146:74;;18229:93;18318:3;18229:93;:::i;:::-;18347:2;18342:3;18338:12;18331:19;;17990:366;;;:::o;18362:419::-;18528:4;18566:2;18555:9;18551:18;18543:26;;18615:9;18609:4;18605:20;18601:1;18590:9;18586:17;18579:47;18643:131;18769:4;18643:131;:::i;:::-;18635:139;;18362:419;;;:::o;18787:250::-;18927:34;18923:1;18915:6;18911:14;18904:58;18996:33;18991:2;18983:6;18979:15;18972:58;18787:250;:::o;19043:366::-;19185:3;19206:67;19270:2;19265:3;19206:67;:::i;:::-;19199:74;;19282:93;19371:3;19282:93;:::i;:::-;19400:2;19395:3;19391:12;19384:19;;19043:366;;;:::o;19415:419::-;19581:4;19619:2;19608:9;19604:18;19596:26;;19668:9;19662:4;19658:20;19654:1;19643:9;19639:17;19632:47;19696:131;19822:4;19696:131;:::i;:::-;19688:139;;19415:419;;;:::o;19840:178::-;19980:30;19976:1;19968:6;19964:14;19957:54;19840:178;:::o;20024:366::-;20166:3;20187:67;20251:2;20246:3;20187:67;:::i;:::-;20180:74;;20263:93;20352:3;20263:93;:::i;:::-;20381:2;20376:3;20372:12;20365:19;;20024:366;;;:::o;20396:419::-;20562:4;20600:2;20589:9;20585:18;20577:26;;20649:9;20643:4;20639:20;20635:1;20624:9;20620:17;20613:47;20677:131;20803:4;20677:131;:::i;:::-;20669:139;;20396:419;;;:::o;20821:222::-;20961:34;20957:1;20949:6;20945:14;20938:58;21030:5;21025:2;21017:6;21013:15;21006:30;20821:222;:::o;21049:366::-;21191:3;21212:67;21276:2;21271:3;21212:67;:::i;:::-;21205:74;;21288:93;21377:3;21288:93;:::i;:::-;21406:2;21401:3;21397:12;21390:19;;21049:366;;;:::o;21421:419::-;21587:4;21625:2;21614:9;21610:18;21602:26;;21674:9;21668:4;21664:20;21660:1;21649:9;21645:17;21638:47;21702:131;21828:4;21702:131;:::i;:::-;21694:139;;21421:419;;;:::o;21846:222::-;21986:34;21982:1;21974:6;21970:14;21963:58;22055:5;22050:2;22042:6;22038:15;22031:30;21846:222;:::o;22074:366::-;22216:3;22237:67;22301:2;22296:3;22237:67;:::i;:::-;22230:74;;22313:93;22402:3;22313:93;:::i;:::-;22431:2;22426:3;22422:12;22415:19;;22074:366;;;:::o;22446:419::-;22612:4;22650:2;22639:9;22635:18;22627:26;;22699:9;22693:4;22689:20;22685:1;22674:9;22670:17;22663:47;22727:131;22853:4;22727:131;:::i;:::-;22719:139;;22446:419;;;:::o;22871:194::-;22911:4;22931:20;22949:1;22931:20;:::i;:::-;22926:25;;22965:20;22983:1;22965:20;:::i;:::-;22960:25;;23009:1;23006;23002:9;22994:17;;23033:1;23027:4;23024:11;23021:37;;;23038:18;;:::i;:::-;23021:37;22871:194;;;;:::o;23071:180::-;23119:77;23116:1;23109:88;23216:4;23213:1;23206:15;23240:4;23237:1;23230:15;23257:143;23314:5;23345:6;23339:13;23330:22;;23361:33;23388:5;23361:33;:::i;:::-;23257:143;;;;:::o;23406:351::-;23476:6;23525:2;23513:9;23504:7;23500:23;23496:32;23493:119;;;23531:79;;:::i;:::-;23493:119;23651:1;23676:64;23732:7;23723:6;23712:9;23708:22;23676:64;:::i;:::-;23666:74;;23622:128;23406:351;;;;:::o;23763:85::-;23808:7;23837:5;23826:16;;23763:85;;;:::o;23854:158::-;23912:9;23945:61;23963:42;23972:32;23998:5;23972:32;:::i;:::-;23963:42;:::i;:::-;23945:61;:::i;:::-;23932:74;;23854:158;;;:::o;24018:147::-;24113:45;24152:5;24113:45;:::i;:::-;24108:3;24101:58;24018:147;;:::o;24171:114::-;24238:6;24272:5;24266:12;24256:22;;24171:114;;;:::o;24291:184::-;24390:11;24424:6;24419:3;24412:19;24464:4;24459:3;24455:14;24440:29;;24291:184;;;;:::o;24481:132::-;24548:4;24571:3;24563:11;;24601:4;24596:3;24592:14;24584:22;;24481:132;;;:::o;24619:108::-;24696:24;24714:5;24696:24;:::i;:::-;24691:3;24684:37;24619:108;;:::o;24733:179::-;24802:10;24823:46;24865:3;24857:6;24823:46;:::i;:::-;24901:4;24896:3;24892:14;24878:28;;24733:179;;;;:::o;24918:113::-;24988:4;25020;25015:3;25011:14;25003:22;;24918:113;;;:::o;25067:732::-;25186:3;25215:54;25263:5;25215:54;:::i;:::-;25285:86;25364:6;25359:3;25285:86;:::i;:::-;25278:93;;25395:56;25445:5;25395:56;:::i;:::-;25474:7;25505:1;25490:284;25515:6;25512:1;25509:13;25490:284;;;25591:6;25585:13;25618:63;25677:3;25662:13;25618:63;:::i;:::-;25611:70;;25704:60;25757:6;25704:60;:::i;:::-;25694:70;;25550:224;25537:1;25534;25530:9;25525:14;;25490:284;;;25494:14;25790:3;25783:10;;25191:608;;;25067:732;;;;:::o;25805:831::-;26068:4;26106:3;26095:9;26091:19;26083:27;;26120:71;26188:1;26177:9;26173:17;26164:6;26120:71;:::i;:::-;26201:80;26277:2;26266:9;26262:18;26253:6;26201:80;:::i;:::-;26328:9;26322:4;26318:20;26313:2;26302:9;26298:18;26291:48;26356:108;26459:4;26450:6;26356:108;:::i;:::-;26348:116;;26474:72;26542:2;26531:9;26527:18;26518:6;26474:72;:::i;:::-;26556:73;26624:3;26613:9;26609:19;26600:6;26556:73;:::i;:::-;25805:831;;;;;;;;:::o;26642:229::-;26782:34;26778:1;26770:6;26766:14;26759:58;26851:12;26846:2;26838:6;26834:15;26827:37;26642:229;:::o;26877:366::-;27019:3;27040:67;27104:2;27099:3;27040:67;:::i;:::-;27033:74;;27116:93;27205:3;27116:93;:::i;:::-;27234:2;27229:3;27225:12;27218:19;;26877:366;;;:::o;27249:419::-;27415:4;27453:2;27442:9;27438:18;27430:26;;27502:9;27496:4;27492:20;27488:1;27477:9;27473:17;27466:47;27530:131;27656:4;27530:131;:::i;:::-;27522:139;;27249:419;;;:::o;27674:180::-;27722:77;27719:1;27712:88;27819:4;27816:1;27809:15;27843:4;27840:1;27833:15;27860:185;27900:1;27917:20;27935:1;27917:20;:::i;:::-;27912:25;;27951:20;27969:1;27951:20;:::i;:::-;27946:25;;27990:1;27980:35;;27995:18;;:::i;:::-;27980:35;28037:1;28034;28030:9;28025:14;;27860:185;;;;:::o;28051:177::-;28191:29;28187:1;28179:6;28175:14;28168:53;28051:177;:::o;28234:366::-;28376:3;28397:67;28461:2;28456:3;28397:67;:::i;:::-;28390:74;;28473:93;28562:3;28473:93;:::i;:::-;28591:2;28586:3;28582:12;28575:19;;28234:366;;;:::o;28606:419::-;28772:4;28810:2;28799:9;28795:18;28787:26;;28859:9;28853:4;28849:20;28845:1;28834:9;28830:17;28823:47;28887:131;29013:4;28887:131;:::i;:::-;28879:139;;28606:419;;;:::o;29031:410::-;29071:7;29094:20;29112:1;29094:20;:::i;:::-;29089:25;;29128:20;29146:1;29128:20;:::i;:::-;29123:25;;29183:1;29180;29176:9;29205:30;29223:11;29205:30;:::i;:::-;29194:41;;29384:1;29375:7;29371:15;29368:1;29365:22;29345:1;29338:9;29318:83;29295:139;;29414:18;;:::i;:::-;29295:139;29079:362;29031:410;;;;:::o;29447:220::-;29587:34;29583:1;29575:6;29571:14;29564:58;29656:3;29651:2;29643:6;29639:15;29632:28;29447:220;:::o;29673:366::-;29815:3;29836:67;29900:2;29895:3;29836:67;:::i;:::-;29829:74;;29912:93;30001:3;29912:93;:::i;:::-;30030:2;30025:3;30021:12;30014:19;;29673:366;;;:::o;30045:419::-;30211:4;30249:2;30238:9;30234:18;30226:26;;30298:9;30292:4;30288:20;30284:1;30273:9;30269:17;30262:47;30326:131;30452:4;30326:131;:::i;:::-;30318:139;;30045:419;;;:::o

Swarm Source

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