ETH Price: $3,889.01 (-1.58%)

Token

ERC-20: The Chapter of Naga (NAGA)
 

Overview

Max Total Supply

1,000,000,000 NAGA

Holders

82

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.40889448 NAGA

Value
$0.00
0x8f89949dd45fb3de8db1a85106ce88135b447be5
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:
NAGA

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-12-20
*/

// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.9;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

}

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

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

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

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

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

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

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

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

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

contract NAGA is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private constant _name = "The Chapter of Naga";
    string private constant _symbol = "NAGA";
    uint8 private constant _decimals = 9;

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

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

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

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

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

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

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

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

    constructor() {

        _rOwned[_msgSender()] = _rTotal;

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

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

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

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

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

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

     function buytax() public view  returns (uint256) {
        return _taxFeeOnBuy;
    }

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

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

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

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

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

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

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

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

        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;

        _redisFee = 0;
        _taxFee = 0;
    }

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

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

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

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

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

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

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

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

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

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

        bool takeFee = true;

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

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

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

        }

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

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

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

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

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

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

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

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

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

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

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

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

    receive() external payable {}

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

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

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

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

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

    function setnewTaxes(uint256 redisBuyT, uint256 redisSellT, uint256 taxBuyT, uint256 taxSellT) public onlyOwner {
        _redisFeeOnBuy = redisBuyT;
        _redisFeeOnSell = redisSellT;
        _taxFeeOnBuy = taxBuyT;
        _taxFeeOnSell = taxSellT;
    }

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

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

    //Set maximum transaction
    

    function setmaxtxwamt(uint256 maxt,uint256 maxw) public onlyOwner {
        _maxTxAmount = maxt;
        _maxWalletSize = maxw;
        
    }

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

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_buyMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"blockBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buytax","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":"bool","name":"_tradingOpen","type":"bool"}],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualclaim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxt","type":"uint256"},{"internalType":"uint256","name":"maxw","type":"uint256"}],"name":"setmaxtxwamt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setminSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisBuyT","type":"uint256"},{"internalType":"uint256","name":"redisSellT","type":"uint256"},{"internalType":"uint256","name":"taxBuyT","type":"uint256"},{"internalType":"uint256","name":"taxSellT","type":"uint256"}],"name":"setnewTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"unblockBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052670de0b6b3a76400006000196200001c919062000759565b6000196200002b9190620007c0565b6006556000600855600a6009556000600a556019600b55600a54600c55600b54600d55600c54600e55600d54600f557346cf368c15f24291e17c40baaff623a6a3c040bd601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507346cf368c15f24291e17c40baaff623a6a3c040bd601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601560146101000a81548160ff02191690831515021790555060006015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff02191690831515021790555066470de4df82000060165566470de4df8200006017556509184e72a0006018553480156200018157600080fd5b50600062000194620006ef60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506006546002600062000249620006ef60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200032857600080fd5b505afa1580156200033d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000363919062000865565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620003c657600080fd5b505afa158015620003db573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000401919062000865565b6040518363ffffffff1660e01b815260040162000420929190620008a8565b602060405180830381600087803b1580156200043b57600080fd5b505af115801562000450573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000476919062000865565b601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000620004cc620006f760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000679620006ef60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a7640000604051620006e09190620008e6565b60405180910390a35062000903565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620007668262000720565b9150620007738362000720565b9250826200078657620007856200072a565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620007cd8262000720565b9150620007da8362000720565b925082821015620007f057620007ef62000791565b5b828203905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200082d8262000800565b9050919050565b6200083f8162000820565b81146200084b57600080fd5b50565b6000815190506200085f8162000834565b92915050565b6000602082840312156200087e576200087d620007fb565b5b60006200088e848285016200084e565b91505092915050565b620008a28162000820565b82525050565b6000604082019050620008bf600083018562000897565b620008ce602083018462000897565b9392505050565b620008e08162000720565b82525050565b6000602082019050620008fd6000830184620008d5565b92915050565b613d9580620009136000396000f3fe6080604052600436106101d05760003560e01c8063715018a6116100f7578063b360711d11610095578063dceb5d1111610064578063dceb5d111461065e578063dd62ed3e14610687578063f275f64b146106c4578063f2fde38b146106ed576101d7565b8063b360711d146105ca578063bfd79284146105e1578063c3c8cd801461061e578063c492f04614610635576101d7565b80638da5cb5b116100d15780638da5cb5b1461050c5780638f9a55c01461053757806395d89b4114610562578063a9059cbb1461058d576101d7565b8063715018a61461048d5780637d1db4a5146104a45780637f2feddc146104cf576101d7565b8063313ce5671161016f5780634a1263f31161013e5780634a1263f3146103d35780636b999053146103fe5780636d8aa8f81461042757806370a0823114610450576101d7565b8063313ce5671461032b5780633ee0f5f5146103565780633f5f29611461037f57806349bd5a5e146103a8576101d7565b80631694505e116101ab5780631694505e1461026d57806318160ddd1461029857806323b872dd146102c35780632fd689e314610300576101d7565b8062b8cf2a146101dc57806306fdde0314610205578063095ea7b314610230576101d7565b366101d757005b600080fd5b3480156101e857600080fd5b5061020360048036038101906101fe9190612ce1565b610716565b005b34801561021157600080fd5b5061021a610840565b6040516102279190612db2565b60405180910390f35b34801561023c57600080fd5b5061025760048036038101906102529190612e0a565b61087d565b6040516102649190612e65565b60405180910390f35b34801561027957600080fd5b5061028261089b565b60405161028f9190612edf565b60405180910390f35b3480156102a457600080fd5b506102ad6108c1565b6040516102ba9190612f09565b60405180910390f35b3480156102cf57600080fd5b506102ea60048036038101906102e59190612f24565b6108d1565b6040516102f79190612e65565b60405180910390f35b34801561030c57600080fd5b506103156109aa565b6040516103229190612f09565b60405180910390f35b34801561033757600080fd5b506103406109b0565b60405161034d9190612f93565b60405180910390f35b34801561036257600080fd5b5061037d60048036038101906103789190612fae565b6109b9565b005b34801561038b57600080fd5b506103a660048036038101906103a19190612fdb565b610a58565b005b3480156103b457600080fd5b506103bd610aff565b6040516103ca919061302a565b60405180910390f35b3480156103df57600080fd5b506103e8610b25565b6040516103f59190612f09565b60405180910390f35b34801561040a57600080fd5b5061042560048036038101906104209190613045565b610b2f565b005b34801561043357600080fd5b5061044e6004803603810190610449919061309e565b610c1f565b005b34801561045c57600080fd5b5061047760048036038101906104729190613045565b610cd1565b6040516104849190612f09565b60405180910390f35b34801561049957600080fd5b506104a2610d22565b005b3480156104b057600080fd5b506104b9610e75565b6040516104c69190612f09565b60405180910390f35b3480156104db57600080fd5b506104f660048036038101906104f19190613045565b610e7b565b6040516105039190612f09565b60405180910390f35b34801561051857600080fd5b50610521610e93565b60405161052e919061302a565b60405180910390f35b34801561054357600080fd5b5061054c610ebc565b6040516105599190612f09565b60405180910390f35b34801561056e57600080fd5b50610577610ec2565b6040516105849190612db2565b60405180910390f35b34801561059957600080fd5b506105b460048036038101906105af9190612e0a565b610eff565b6040516105c19190612e65565b60405180910390f35b3480156105d657600080fd5b506105df610f1d565b005b3480156105ed57600080fd5b5061060860048036038101906106039190613045565b610fee565b6040516106159190612e65565b60405180910390f35b34801561062a57600080fd5b5061063361100e565b005b34801561064157600080fd5b5061065c60048036038101906106579190613126565b6110e7565b005b34801561066a57600080fd5b5061068560048036038101906106809190613186565b611221565b005b34801561069357600080fd5b506106ae60048036038101906106a991906131ed565b6112d8565b6040516106bb9190612f09565b60405180910390f35b3480156106d057600080fd5b506106eb60048036038101906106e6919061309e565b61135f565b005b3480156106f957600080fd5b50610714600480360381019061070f9190613045565b611411565b005b61071e6115d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a290613279565b60405180910390fd5b60005b815181101561083c576001601060008484815181106107d0576107cf613299565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610834906132f7565b9150506107ae565b5050565b60606040518060400160405280601381526020017f5468652043686170746572206f66204e61676100000000000000000000000000815250905090565b600061089161088a6115d3565b84846115db565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b60006108de8484846117a6565b61099f846108ea6115d3565b61099a85604051806060016040528060288152602001613d3860289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006109506115d3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461202b9092919063ffffffff16565b6115db565b600190509392505050565b60185481565b60006009905090565b6109c16115d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4590613279565b60405180910390fd5b8060188190555050565b610a606115d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610aed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae490613279565b60405180910390fd5b81601681905550806017819055505050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600954905090565b610b376115d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bbb90613279565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610c276115d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cab90613279565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b6000610d1b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461208f565b9050919050565b610d2a6115d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610db7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dae90613279565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60165481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600481526020017f4e41474100000000000000000000000000000000000000000000000000000000815250905090565b6000610f13610f0c6115d3565b84846117a6565b6001905092915050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f5e6115d3565b73ffffffffffffffffffffffffffffffffffffffff161480610fd45750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610fbc6115d3565b73ffffffffffffffffffffffffffffffffffffffff16145b610fdd57600080fd5b6000479050610feb816120fd565b50565b60106020528060005260406000206000915054906101000a900460ff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661104f6115d3565b73ffffffffffffffffffffffffffffffffffffffff1614806110c55750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166110ad6115d3565b73ffffffffffffffffffffffffffffffffffffffff16145b6110ce57600080fd5b60006110d930610cd1565b90506110e481612169565b50565b6110ef6115d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461117c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117390613279565b60405180910390fd5b60005b8383905081101561121b5781600560008686858181106111a2576111a1613299565b5b90506020020160208101906111b79190613045565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611213906132f7565b91505061117f565b50505050565b6112296115d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ad90613279565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6113676115d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113eb90613279565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b6114196115d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149d90613279565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611516576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150d906133b2565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561164b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164290613444565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b2906134d6565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117999190612f09565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611816576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180d90613568565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611886576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187d906135fa565b60405180910390fd5b600081116118c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c09061368c565b60405180910390fd5b6118d1610e93565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561193f575061190f610e93565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611d2a57601560149054906101000a900460ff166119ce57611960610e93565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146119cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c49061371e565b60405180910390fd5b5b601654811115611a13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0a9061378a565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611ab75750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611af6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aed9061381c565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611ba35760175481611b5884610cd1565b611b62919061383c565b10611ba2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9990613904565b60405180910390fd5b5b6000611bae30610cd1565b9050600060185482101590506016548210611bc95760165491505b808015611be1575060158054906101000a900460ff16155b8015611c3b5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611c535750601560169054906101000a900460ff165b8015611ca95750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611cff5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611d2757611d0d82612169565b60004790506000811115611d2557611d24476120fd565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611dd15750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611e845750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611e835750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611e925760009050612019565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611f3d5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611f5557600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156120005750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561201857600a54600c81905550600b54600d819055505b5b612025848484846123ef565b50505050565b6000838311158290612073576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206a9190612db2565b60405180910390fd5b50600083856120829190613924565b9050809150509392505050565b60006006548211156120d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120cd906139ca565b60405180910390fd5b60006120e061241c565b90506120f5818461244790919063ffffffff16565b915050919050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612165573d6000803e3d6000fd5b5050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156121a05761219f612b40565b5b6040519080825280602002602001820160405280156121ce5781602001602082028036833780820191505090505b50905030816000815181106121e6576121e5613299565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561228857600080fd5b505afa15801561229c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122c091906139ff565b816001815181106122d4576122d3613299565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061233b30601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846115db565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161239f959493929190613b25565b600060405180830381600087803b1580156123b957600080fd5b505af11580156123cd573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b806123fd576123fc612491565b5b6124088484846124d4565b806124165761241561269f565b5b50505050565b60008060006124296126b3565b91509150612440818361244790919063ffffffff16565b9250505090565b600061248983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612712565b905092915050565b6000600c541480156124a557506000600d54145b156124af576124d2565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b6000806000806000806124e687612775565b95509550955095509550955061254486600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127dd90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506125d985600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461282790919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061262581612885565b61262f8483612942565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161268c9190612f09565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000670de0b6b3a764000090506126e7670de0b6b3a764000060065461244790919063ffffffff16565b82101561270557600654670de0b6b3a764000093509350505061270e565b81819350935050505b9091565b60008083118290612759576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127509190612db2565b60405180910390fd5b50600083856127689190613bae565b9050809150509392505050565b60008060008060008060008060006127928a600c54600d5461297c565b92509250925060006127a261241c565b905060008060006127b58e878787612a12565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061281f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061202b565b905092915050565b6000808284612836919061383c565b90508381101561287b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287290613c2b565b60405180910390fd5b8091505092915050565b600061288f61241c565b905060006128a68284612a9b90919063ffffffff16565b90506128fa81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461282790919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612957826006546127dd90919063ffffffff16565b6006819055506129728160075461282790919063ffffffff16565b6007819055505050565b6000806000806129a8606461299a888a612a9b90919063ffffffff16565b61244790919063ffffffff16565b905060006129d260646129c4888b612a9b90919063ffffffff16565b61244790919063ffffffff16565b905060006129fb826129ed858c6127dd90919063ffffffff16565b6127dd90919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612a2b8589612a9b90919063ffffffff16565b90506000612a428689612a9b90919063ffffffff16565b90506000612a598789612a9b90919063ffffffff16565b90506000612a8282612a7485876127dd90919063ffffffff16565b6127dd90919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080831415612aae5760009050612b10565b60008284612abc9190613c4b565b9050828482612acb9190613bae565b14612b0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0290613d17565b60405180910390fd5b809150505b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612b7882612b2f565b810181811067ffffffffffffffff82111715612b9757612b96612b40565b5b80604052505050565b6000612baa612b16565b9050612bb68282612b6f565b919050565b600067ffffffffffffffff821115612bd657612bd5612b40565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c1782612bec565b9050919050565b612c2781612c0c565b8114612c3257600080fd5b50565b600081359050612c4481612c1e565b92915050565b6000612c5d612c5884612bbb565b612ba0565b90508083825260208201905060208402830185811115612c8057612c7f612be7565b5b835b81811015612ca95780612c958882612c35565b845260208401935050602081019050612c82565b5050509392505050565b600082601f830112612cc857612cc7612b2a565b5b8135612cd8848260208601612c4a565b91505092915050565b600060208284031215612cf757612cf6612b20565b5b600082013567ffffffffffffffff811115612d1557612d14612b25565b5b612d2184828501612cb3565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612d64578082015181840152602081019050612d49565b83811115612d73576000848401525b50505050565b6000612d8482612d2a565b612d8e8185612d35565b9350612d9e818560208601612d46565b612da781612b2f565b840191505092915050565b60006020820190508181036000830152612dcc8184612d79565b905092915050565b6000819050919050565b612de781612dd4565b8114612df257600080fd5b50565b600081359050612e0481612dde565b92915050565b60008060408385031215612e2157612e20612b20565b5b6000612e2f85828601612c35565b9250506020612e4085828601612df5565b9150509250929050565b60008115159050919050565b612e5f81612e4a565b82525050565b6000602082019050612e7a6000830184612e56565b92915050565b6000819050919050565b6000612ea5612ea0612e9b84612bec565b612e80565b612bec565b9050919050565b6000612eb782612e8a565b9050919050565b6000612ec982612eac565b9050919050565b612ed981612ebe565b82525050565b6000602082019050612ef46000830184612ed0565b92915050565b612f0381612dd4565b82525050565b6000602082019050612f1e6000830184612efa565b92915050565b600080600060608486031215612f3d57612f3c612b20565b5b6000612f4b86828701612c35565b9350506020612f5c86828701612c35565b9250506040612f6d86828701612df5565b9150509250925092565b600060ff82169050919050565b612f8d81612f77565b82525050565b6000602082019050612fa86000830184612f84565b92915050565b600060208284031215612fc457612fc3612b20565b5b6000612fd284828501612df5565b91505092915050565b60008060408385031215612ff257612ff1612b20565b5b600061300085828601612df5565b925050602061301185828601612df5565b9150509250929050565b61302481612c0c565b82525050565b600060208201905061303f600083018461301b565b92915050565b60006020828403121561305b5761305a612b20565b5b600061306984828501612c35565b91505092915050565b61307b81612e4a565b811461308657600080fd5b50565b60008135905061309881613072565b92915050565b6000602082840312156130b4576130b3612b20565b5b60006130c284828501613089565b91505092915050565b600080fd5b60008083601f8401126130e6576130e5612b2a565b5b8235905067ffffffffffffffff811115613103576131026130cb565b5b60208301915083602082028301111561311f5761311e612be7565b5b9250929050565b60008060006040848603121561313f5761313e612b20565b5b600084013567ffffffffffffffff81111561315d5761315c612b25565b5b613169868287016130d0565b9350935050602061317c86828701613089565b9150509250925092565b600080600080608085870312156131a05761319f612b20565b5b60006131ae87828801612df5565b94505060206131bf87828801612df5565b93505060406131d087828801612df5565b92505060606131e187828801612df5565b91505092959194509250565b6000806040838503121561320457613203612b20565b5b600061321285828601612c35565b925050602061322385828601612c35565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613263602083612d35565b915061326e8261322d565b602082019050919050565b6000602082019050818103600083015261329281613256565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061330282612dd4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613335576133346132c8565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061339c602683612d35565b91506133a782613340565b604082019050919050565b600060208201905081810360008301526133cb8161338f565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061342e602483612d35565b9150613439826133d2565b604082019050919050565b6000602082019050818103600083015261345d81613421565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006134c0602283612d35565b91506134cb82613464565b604082019050919050565b600060208201905081810360008301526134ef816134b3565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613552602583612d35565b915061355d826134f6565b604082019050919050565b6000602082019050818103600083015261358181613545565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006135e4602383612d35565b91506135ef82613588565b604082019050919050565b60006020820190508181036000830152613613816135d7565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613676602983612d35565b91506136818261361a565b604082019050919050565b600060208201905081810360008301526136a581613669565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000613708603f83612d35565b9150613713826136ac565b604082019050919050565b60006020820190508181036000830152613737816136fb565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000613774601c83612d35565b915061377f8261373e565b602082019050919050565b600060208201905081810360008301526137a381613767565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000613806602383612d35565b9150613811826137aa565b604082019050919050565b60006020820190508181036000830152613835816137f9565b9050919050565b600061384782612dd4565b915061385283612dd4565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613887576138866132c8565b5b828201905092915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b60006138ee602383612d35565b91506138f982613892565b604082019050919050565b6000602082019050818103600083015261391d816138e1565b9050919050565b600061392f82612dd4565b915061393a83612dd4565b92508282101561394d5761394c6132c8565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b60006139b4602a83612d35565b91506139bf82613958565b604082019050919050565b600060208201905081810360008301526139e3816139a7565b9050919050565b6000815190506139f981612c1e565b92915050565b600060208284031215613a1557613a14612b20565b5b6000613a23848285016139ea565b91505092915050565b6000819050919050565b6000613a51613a4c613a4784613a2c565b612e80565b612dd4565b9050919050565b613a6181613a36565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613a9c81612c0c565b82525050565b6000613aae8383613a93565b60208301905092915050565b6000602082019050919050565b6000613ad282613a67565b613adc8185613a72565b9350613ae783613a83565b8060005b83811015613b18578151613aff8882613aa2565b9750613b0a83613aba565b925050600181019050613aeb565b5085935050505092915050565b600060a082019050613b3a6000830188612efa565b613b476020830187613a58565b8181036040830152613b598186613ac7565b9050613b68606083018561301b565b613b756080830184612efa565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613bb982612dd4565b9150613bc483612dd4565b925082613bd457613bd3613b7f565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613c15601b83612d35565b9150613c2082613bdf565b602082019050919050565b60006020820190508181036000830152613c4481613c08565b9050919050565b6000613c5682612dd4565b9150613c6183612dd4565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613c9a57613c996132c8565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613d01602183612d35565b9150613d0c82613ca5565b604082019050919050565b60006020820190508181036000830152613d3081613cf4565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220c421091f14ef73dcb6b7e4666a7db6937e2e3af0bcac2a7b334ed72469a2626264736f6c63430008090033

Deployed Bytecode

0x6080604052600436106101d05760003560e01c8063715018a6116100f7578063b360711d11610095578063dceb5d1111610064578063dceb5d111461065e578063dd62ed3e14610687578063f275f64b146106c4578063f2fde38b146106ed576101d7565b8063b360711d146105ca578063bfd79284146105e1578063c3c8cd801461061e578063c492f04614610635576101d7565b80638da5cb5b116100d15780638da5cb5b1461050c5780638f9a55c01461053757806395d89b4114610562578063a9059cbb1461058d576101d7565b8063715018a61461048d5780637d1db4a5146104a45780637f2feddc146104cf576101d7565b8063313ce5671161016f5780634a1263f31161013e5780634a1263f3146103d35780636b999053146103fe5780636d8aa8f81461042757806370a0823114610450576101d7565b8063313ce5671461032b5780633ee0f5f5146103565780633f5f29611461037f57806349bd5a5e146103a8576101d7565b80631694505e116101ab5780631694505e1461026d57806318160ddd1461029857806323b872dd146102c35780632fd689e314610300576101d7565b8062b8cf2a146101dc57806306fdde0314610205578063095ea7b314610230576101d7565b366101d757005b600080fd5b3480156101e857600080fd5b5061020360048036038101906101fe9190612ce1565b610716565b005b34801561021157600080fd5b5061021a610840565b6040516102279190612db2565b60405180910390f35b34801561023c57600080fd5b5061025760048036038101906102529190612e0a565b61087d565b6040516102649190612e65565b60405180910390f35b34801561027957600080fd5b5061028261089b565b60405161028f9190612edf565b60405180910390f35b3480156102a457600080fd5b506102ad6108c1565b6040516102ba9190612f09565b60405180910390f35b3480156102cf57600080fd5b506102ea60048036038101906102e59190612f24565b6108d1565b6040516102f79190612e65565b60405180910390f35b34801561030c57600080fd5b506103156109aa565b6040516103229190612f09565b60405180910390f35b34801561033757600080fd5b506103406109b0565b60405161034d9190612f93565b60405180910390f35b34801561036257600080fd5b5061037d60048036038101906103789190612fae565b6109b9565b005b34801561038b57600080fd5b506103a660048036038101906103a19190612fdb565b610a58565b005b3480156103b457600080fd5b506103bd610aff565b6040516103ca919061302a565b60405180910390f35b3480156103df57600080fd5b506103e8610b25565b6040516103f59190612f09565b60405180910390f35b34801561040a57600080fd5b5061042560048036038101906104209190613045565b610b2f565b005b34801561043357600080fd5b5061044e6004803603810190610449919061309e565b610c1f565b005b34801561045c57600080fd5b5061047760048036038101906104729190613045565b610cd1565b6040516104849190612f09565b60405180910390f35b34801561049957600080fd5b506104a2610d22565b005b3480156104b057600080fd5b506104b9610e75565b6040516104c69190612f09565b60405180910390f35b3480156104db57600080fd5b506104f660048036038101906104f19190613045565b610e7b565b6040516105039190612f09565b60405180910390f35b34801561051857600080fd5b50610521610e93565b60405161052e919061302a565b60405180910390f35b34801561054357600080fd5b5061054c610ebc565b6040516105599190612f09565b60405180910390f35b34801561056e57600080fd5b50610577610ec2565b6040516105849190612db2565b60405180910390f35b34801561059957600080fd5b506105b460048036038101906105af9190612e0a565b610eff565b6040516105c19190612e65565b60405180910390f35b3480156105d657600080fd5b506105df610f1d565b005b3480156105ed57600080fd5b5061060860048036038101906106039190613045565b610fee565b6040516106159190612e65565b60405180910390f35b34801561062a57600080fd5b5061063361100e565b005b34801561064157600080fd5b5061065c60048036038101906106579190613126565b6110e7565b005b34801561066a57600080fd5b5061068560048036038101906106809190613186565b611221565b005b34801561069357600080fd5b506106ae60048036038101906106a991906131ed565b6112d8565b6040516106bb9190612f09565b60405180910390f35b3480156106d057600080fd5b506106eb60048036038101906106e6919061309e565b61135f565b005b3480156106f957600080fd5b50610714600480360381019061070f9190613045565b611411565b005b61071e6115d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a290613279565b60405180910390fd5b60005b815181101561083c576001601060008484815181106107d0576107cf613299565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610834906132f7565b9150506107ae565b5050565b60606040518060400160405280601381526020017f5468652043686170746572206f66204e61676100000000000000000000000000815250905090565b600061089161088a6115d3565b84846115db565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b60006108de8484846117a6565b61099f846108ea6115d3565b61099a85604051806060016040528060288152602001613d3860289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006109506115d3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461202b9092919063ffffffff16565b6115db565b600190509392505050565b60185481565b60006009905090565b6109c16115d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4590613279565b60405180910390fd5b8060188190555050565b610a606115d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610aed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae490613279565b60405180910390fd5b81601681905550806017819055505050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600954905090565b610b376115d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bbb90613279565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610c276115d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cab90613279565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b6000610d1b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461208f565b9050919050565b610d2a6115d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610db7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dae90613279565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60165481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600481526020017f4e41474100000000000000000000000000000000000000000000000000000000815250905090565b6000610f13610f0c6115d3565b84846117a6565b6001905092915050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f5e6115d3565b73ffffffffffffffffffffffffffffffffffffffff161480610fd45750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610fbc6115d3565b73ffffffffffffffffffffffffffffffffffffffff16145b610fdd57600080fd5b6000479050610feb816120fd565b50565b60106020528060005260406000206000915054906101000a900460ff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661104f6115d3565b73ffffffffffffffffffffffffffffffffffffffff1614806110c55750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166110ad6115d3565b73ffffffffffffffffffffffffffffffffffffffff16145b6110ce57600080fd5b60006110d930610cd1565b90506110e481612169565b50565b6110ef6115d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461117c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117390613279565b60405180910390fd5b60005b8383905081101561121b5781600560008686858181106111a2576111a1613299565b5b90506020020160208101906111b79190613045565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611213906132f7565b91505061117f565b50505050565b6112296115d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ad90613279565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6113676115d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113eb90613279565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b6114196115d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149d90613279565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611516576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150d906133b2565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561164b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164290613444565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b2906134d6565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117999190612f09565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611816576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180d90613568565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611886576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187d906135fa565b60405180910390fd5b600081116118c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c09061368c565b60405180910390fd5b6118d1610e93565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561193f575061190f610e93565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611d2a57601560149054906101000a900460ff166119ce57611960610e93565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146119cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c49061371e565b60405180910390fd5b5b601654811115611a13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0a9061378a565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611ab75750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611af6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aed9061381c565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611ba35760175481611b5884610cd1565b611b62919061383c565b10611ba2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9990613904565b60405180910390fd5b5b6000611bae30610cd1565b9050600060185482101590506016548210611bc95760165491505b808015611be1575060158054906101000a900460ff16155b8015611c3b5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611c535750601560169054906101000a900460ff165b8015611ca95750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611cff5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611d2757611d0d82612169565b60004790506000811115611d2557611d24476120fd565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611dd15750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611e845750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611e835750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611e925760009050612019565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611f3d5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611f5557600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156120005750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561201857600a54600c81905550600b54600d819055505b5b612025848484846123ef565b50505050565b6000838311158290612073576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206a9190612db2565b60405180910390fd5b50600083856120829190613924565b9050809150509392505050565b60006006548211156120d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120cd906139ca565b60405180910390fd5b60006120e061241c565b90506120f5818461244790919063ffffffff16565b915050919050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612165573d6000803e3d6000fd5b5050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156121a05761219f612b40565b5b6040519080825280602002602001820160405280156121ce5781602001602082028036833780820191505090505b50905030816000815181106121e6576121e5613299565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561228857600080fd5b505afa15801561229c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122c091906139ff565b816001815181106122d4576122d3613299565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061233b30601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846115db565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161239f959493929190613b25565b600060405180830381600087803b1580156123b957600080fd5b505af11580156123cd573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b806123fd576123fc612491565b5b6124088484846124d4565b806124165761241561269f565b5b50505050565b60008060006124296126b3565b91509150612440818361244790919063ffffffff16565b9250505090565b600061248983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612712565b905092915050565b6000600c541480156124a557506000600d54145b156124af576124d2565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b6000806000806000806124e687612775565b95509550955095509550955061254486600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127dd90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506125d985600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461282790919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061262581612885565b61262f8483612942565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161268c9190612f09565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000670de0b6b3a764000090506126e7670de0b6b3a764000060065461244790919063ffffffff16565b82101561270557600654670de0b6b3a764000093509350505061270e565b81819350935050505b9091565b60008083118290612759576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127509190612db2565b60405180910390fd5b50600083856127689190613bae565b9050809150509392505050565b60008060008060008060008060006127928a600c54600d5461297c565b92509250925060006127a261241c565b905060008060006127b58e878787612a12565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061281f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061202b565b905092915050565b6000808284612836919061383c565b90508381101561287b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287290613c2b565b60405180910390fd5b8091505092915050565b600061288f61241c565b905060006128a68284612a9b90919063ffffffff16565b90506128fa81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461282790919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612957826006546127dd90919063ffffffff16565b6006819055506129728160075461282790919063ffffffff16565b6007819055505050565b6000806000806129a8606461299a888a612a9b90919063ffffffff16565b61244790919063ffffffff16565b905060006129d260646129c4888b612a9b90919063ffffffff16565b61244790919063ffffffff16565b905060006129fb826129ed858c6127dd90919063ffffffff16565b6127dd90919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612a2b8589612a9b90919063ffffffff16565b90506000612a428689612a9b90919063ffffffff16565b90506000612a598789612a9b90919063ffffffff16565b90506000612a8282612a7485876127dd90919063ffffffff16565b6127dd90919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080831415612aae5760009050612b10565b60008284612abc9190613c4b565b9050828482612acb9190613bae565b14612b0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0290613d17565b60405180910390fd5b809150505b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612b7882612b2f565b810181811067ffffffffffffffff82111715612b9757612b96612b40565b5b80604052505050565b6000612baa612b16565b9050612bb68282612b6f565b919050565b600067ffffffffffffffff821115612bd657612bd5612b40565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c1782612bec565b9050919050565b612c2781612c0c565b8114612c3257600080fd5b50565b600081359050612c4481612c1e565b92915050565b6000612c5d612c5884612bbb565b612ba0565b90508083825260208201905060208402830185811115612c8057612c7f612be7565b5b835b81811015612ca95780612c958882612c35565b845260208401935050602081019050612c82565b5050509392505050565b600082601f830112612cc857612cc7612b2a565b5b8135612cd8848260208601612c4a565b91505092915050565b600060208284031215612cf757612cf6612b20565b5b600082013567ffffffffffffffff811115612d1557612d14612b25565b5b612d2184828501612cb3565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612d64578082015181840152602081019050612d49565b83811115612d73576000848401525b50505050565b6000612d8482612d2a565b612d8e8185612d35565b9350612d9e818560208601612d46565b612da781612b2f565b840191505092915050565b60006020820190508181036000830152612dcc8184612d79565b905092915050565b6000819050919050565b612de781612dd4565b8114612df257600080fd5b50565b600081359050612e0481612dde565b92915050565b60008060408385031215612e2157612e20612b20565b5b6000612e2f85828601612c35565b9250506020612e4085828601612df5565b9150509250929050565b60008115159050919050565b612e5f81612e4a565b82525050565b6000602082019050612e7a6000830184612e56565b92915050565b6000819050919050565b6000612ea5612ea0612e9b84612bec565b612e80565b612bec565b9050919050565b6000612eb782612e8a565b9050919050565b6000612ec982612eac565b9050919050565b612ed981612ebe565b82525050565b6000602082019050612ef46000830184612ed0565b92915050565b612f0381612dd4565b82525050565b6000602082019050612f1e6000830184612efa565b92915050565b600080600060608486031215612f3d57612f3c612b20565b5b6000612f4b86828701612c35565b9350506020612f5c86828701612c35565b9250506040612f6d86828701612df5565b9150509250925092565b600060ff82169050919050565b612f8d81612f77565b82525050565b6000602082019050612fa86000830184612f84565b92915050565b600060208284031215612fc457612fc3612b20565b5b6000612fd284828501612df5565b91505092915050565b60008060408385031215612ff257612ff1612b20565b5b600061300085828601612df5565b925050602061301185828601612df5565b9150509250929050565b61302481612c0c565b82525050565b600060208201905061303f600083018461301b565b92915050565b60006020828403121561305b5761305a612b20565b5b600061306984828501612c35565b91505092915050565b61307b81612e4a565b811461308657600080fd5b50565b60008135905061309881613072565b92915050565b6000602082840312156130b4576130b3612b20565b5b60006130c284828501613089565b91505092915050565b600080fd5b60008083601f8401126130e6576130e5612b2a565b5b8235905067ffffffffffffffff811115613103576131026130cb565b5b60208301915083602082028301111561311f5761311e612be7565b5b9250929050565b60008060006040848603121561313f5761313e612b20565b5b600084013567ffffffffffffffff81111561315d5761315c612b25565b5b613169868287016130d0565b9350935050602061317c86828701613089565b9150509250925092565b600080600080608085870312156131a05761319f612b20565b5b60006131ae87828801612df5565b94505060206131bf87828801612df5565b93505060406131d087828801612df5565b92505060606131e187828801612df5565b91505092959194509250565b6000806040838503121561320457613203612b20565b5b600061321285828601612c35565b925050602061322385828601612c35565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613263602083612d35565b915061326e8261322d565b602082019050919050565b6000602082019050818103600083015261329281613256565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061330282612dd4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613335576133346132c8565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061339c602683612d35565b91506133a782613340565b604082019050919050565b600060208201905081810360008301526133cb8161338f565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061342e602483612d35565b9150613439826133d2565b604082019050919050565b6000602082019050818103600083015261345d81613421565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006134c0602283612d35565b91506134cb82613464565b604082019050919050565b600060208201905081810360008301526134ef816134b3565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613552602583612d35565b915061355d826134f6565b604082019050919050565b6000602082019050818103600083015261358181613545565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006135e4602383612d35565b91506135ef82613588565b604082019050919050565b60006020820190508181036000830152613613816135d7565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613676602983612d35565b91506136818261361a565b604082019050919050565b600060208201905081810360008301526136a581613669565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000613708603f83612d35565b9150613713826136ac565b604082019050919050565b60006020820190508181036000830152613737816136fb565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000613774601c83612d35565b915061377f8261373e565b602082019050919050565b600060208201905081810360008301526137a381613767565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000613806602383612d35565b9150613811826137aa565b604082019050919050565b60006020820190508181036000830152613835816137f9565b9050919050565b600061384782612dd4565b915061385283612dd4565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613887576138866132c8565b5b828201905092915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b60006138ee602383612d35565b91506138f982613892565b604082019050919050565b6000602082019050818103600083015261391d816138e1565b9050919050565b600061392f82612dd4565b915061393a83612dd4565b92508282101561394d5761394c6132c8565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b60006139b4602a83612d35565b91506139bf82613958565b604082019050919050565b600060208201905081810360008301526139e3816139a7565b9050919050565b6000815190506139f981612c1e565b92915050565b600060208284031215613a1557613a14612b20565b5b6000613a23848285016139ea565b91505092915050565b6000819050919050565b6000613a51613a4c613a4784613a2c565b612e80565b612dd4565b9050919050565b613a6181613a36565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613a9c81612c0c565b82525050565b6000613aae8383613a93565b60208301905092915050565b6000602082019050919050565b6000613ad282613a67565b613adc8185613a72565b9350613ae783613a83565b8060005b83811015613b18578151613aff8882613aa2565b9750613b0a83613aba565b925050600181019050613aeb565b5085935050505092915050565b600060a082019050613b3a6000830188612efa565b613b476020830187613a58565b8181036040830152613b598186613ac7565b9050613b68606083018561301b565b613b756080830184612efa565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613bb982612dd4565b9150613bc483612dd4565b925082613bd457613bd3613b7f565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613c15601b83612d35565b9150613c2082613bdf565b602082019050919050565b60006020820190508181036000830152613c4481613c08565b9050919050565b6000613c5682612dd4565b9150613c6183612dd4565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613c9a57613c996132c8565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613d01602183612d35565b9150613d0c82613ca5565b604082019050919050565b60006020820190508181036000830152613d3081613cf4565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220c421091f14ef73dcb6b7e4666a7db6937e2e3af0bcac2a7b334ed72469a2626264736f6c63430008090033

Deployed Bytecode Sourcemap

4068:13496:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12844:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6575:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7596:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5418:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6948:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7797:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5723:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6761:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16832:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17171:146;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5466:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6853:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13021:92;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17023:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7051:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1555:148;;;;;;;;;;;;;:::i;:::-;;5615:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5160:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1341:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5668:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6666:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7197:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12600:236;;;;;;;;;;;;;:::i;:::-;;5122:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12356:236;;;;;;;;;;;;;:::i;:::-;;17325:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16516:264;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7404:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12244:104;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1711:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12844:169;1478:12;:10;:12::i;:::-;1468:22;;:6;;;;;;;;;;:22;;;1460:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12920:9:::1;12915:91;12939:5;:12;12935:1;:16;12915:91;;;12990:4;12973;:14;12978:5;12984:1;12978:8;;;;;;;;:::i;:::-;;;;;;;;12973:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;12953:3;;;;;:::i;:::-;;;;12915:91;;;;12844:169:::0;:::o;6575:83::-;6612:13;6645:5;;;;;;;;;;;;;;;;;6638:12;;6575:83;:::o;7596:193::-;7698:4;7720:39;7729:12;:10;:12::i;:::-;7743:7;7752:6;7720:8;:39::i;:::-;7777:4;7770:11;;7596:193;;;;:::o;5418:41::-;;;;;;;;;;;;;:::o;6948:95::-;7001:7;4622:18;7021:14;;6948:95;:::o;7797:446::-;7929:4;7946:36;7956:6;7964:9;7975:6;7946:9;:36::i;:::-;7993:220;8016:6;8037:12;:10;:12::i;:::-;8064:138;8120:6;8064:138;;;;;;;;;;;;;;;;;:11;:19;8076:6;8064:19;;;;;;;;;;;;;;;:33;8084:12;:10;:12::i;:::-;8064:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;7993:8;:220::i;:::-;8231:4;8224:11;;7797:446;;;;;:::o;5723:50::-;;;;:::o;6761:83::-;6802:5;4296:1;6820:16;;6761:83;:::o;16832:139::-;1478:12;:10;:12::i;:::-;1468:22;;:6;;;;;;;;;;:22;;;1460:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16945:18:::1;16923:19;:40;;;;16832:139:::0;:::o;17171:146::-;1478:12;:10;:12::i;:::-;1468:22;;:6;;;;;;;;;;:22;;;1460:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17263:4:::1;17248:12;:19;;;;17295:4;17278:14;:21;;;;17171:146:::0;;:::o;5466:28::-;;;;;;;;;;;;;:::o;6853:87::-;6893:7;6920:12;;6913:19;;6853:87;:::o;13021:92::-;1478:12;:10;:12::i;:::-;1468:22;;:6;;;;;;;;;;:22;;;1460:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13100:5:::1;13085:4;:12;13090:6;13085:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;13021:92:::0;:::o;17023:101::-;1478:12;:10;:12::i;:::-;1468:22;;:6;;;;;;;;;;:22;;;1460:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17104:12:::1;17090:11;;:26;;;;;;;;;;;;;;;;;;17023:101:::0;:::o;7051:138::-;7117:7;7144:37;7164:7;:16;7172:7;7164:16;;;;;;;;;;;;;;;;7144:19;:37::i;:::-;7137:44;;7051:138;;;:::o;1555:148::-;1478:12;:10;:12::i;:::-;1468:22;;:6;;;;;;;;;;:22;;;1460:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1662:1:::1;1625:40;;1646:6;::::0;::::1;;;;;;;;1625:40;;;;;;;;;;;;1693:1;1676:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1555:148::o:0;5615:46::-;;;;:::o;5160:43::-;;;;;;;;;;;;;;;;;:::o;1341:79::-;1379:7;1406:6;;;;;;;;;;;1399:13;;1341:79;:::o;5668:48::-;;;;:::o;6666:87::-;6705:13;6738:7;;;;;;;;;;;;;;;;;6731:14;;6666:87;:::o;7197:199::-;7302:4;7324:42;7334:12;:10;:12::i;:::-;7348:9;7359:6;7324:9;:42::i;:::-;7384:4;7377:11;;7197:199;;;;:::o;12600:236::-;12667:19;;;;;;;;;;;12651:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12706:17;;;;;;;;;;;12690:33;;:12;:10;:12::i;:::-;:33;;;12651:72;12643:81;;;;;;12735:26;12764:21;12735:50;;12796:32;12809:18;12796:12;:32::i;:::-;12632:204;12600:236::o;5122:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;12356:236::-;12422:19;;;;;;;;;;;12406:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12461:17;;;;;;;;;;;12445:33;;:12;:10;:12::i;:::-;:33;;;12406:72;12398:81;;;;;;12490:23;12516:24;12534:4;12516:9;:24::i;:::-;12490:50;;12551:33;12568:15;12551:16;:33::i;:::-;12387:205;12356:236::o;17325:234::-;1478:12;:10;:12::i;:::-;1468:22;;:6;;;;;;;;;;:22;;;1460:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17442:9:::1;17438:114;17461:8;;:15;;17457:1;:19;17438:114;;;17532:8;17498:18;:31;17517:8;;17526:1;17517:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;17498:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;17478:3;;;;;:::i;:::-;;;;17438:114;;;;17325:234:::0;;;:::o;16516:264::-;1478:12;:10;:12::i;:::-;1468:22;;:6;;;;;;;;;;:22;;;1460:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16656:9:::1;16639:14;:26;;;;16694:10;16676:15;:28;;;;16730:7;16715:12;:22;;;;16764:8;16748:13;:24;;;;16516:264:::0;;;;:::o;7404:184::-;7521:7;7553:11;:18;7565:5;7553:18;;;;;;;;;;;;;;;:27;7572:7;7553:27;;;;;;;;;;;;;;;;7546:34;;7404:184;;;;:::o;12244:104::-;1478:12;:10;:12::i;:::-;1468:22;;:6;;;;;;;;;;:22;;;1460:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12328:12:::1;12314:11;;:26;;;;;;;;;;;;;;;;;;12244:104:::0;:::o;1711:244::-;1478:12;:10;:12::i;:::-;1468:22;;:6;;;;;;;;;;:22;;;1460:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1820:1:::1;1800:22;;:8;:22;;;;1792:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;1910:8;1881:38;;1902:6;::::0;::::1;;;;;;;;1881:38;;;;;;;;;;;;1939:8;1930:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1711:244:::0;:::o;100:98::-;153:7;180:10;173:17;;100:98;:::o;8931:369::-;9075:1;9058:19;;:5;:19;;;;9050:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9156:1;9137:21;;:7;:21;;;;9129:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9238:6;9208:11;:18;9220:5;9208:18;;;;;;;;;;;;;;;:27;9227:7;9208:27;;;;;;;;;;;;;;;:36;;;;9276:7;9260:32;;9269:5;9260:32;;;9285:6;9260:32;;;;;;:::i;:::-;;;;;;;;8931:369;;;:::o;9308:2330::-;9446:1;9430:18;;:4;:18;;;;9422:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9523:1;9509:16;;:2;:16;;;;9501:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9593:1;9584:6;:10;9576:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9665:7;:5;:7::i;:::-;9657:15;;:4;:15;;;;:32;;;;;9682:7;:5;:7::i;:::-;9676:13;;:2;:13;;;;9657:32;9653:1259;;;9746:11;;;;;;;;;;;9741:144;;9794:7;:5;:7::i;:::-;9786:15;;:4;:15;;;9778:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;9741:144;9919:12;;9909:6;:22;;9901:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;9988:4;:10;9993:4;9988:10;;;;;;;;;;;;;;;;;;;;;;;;;9987:11;:24;;;;;10003:4;:8;10008:2;10003:8;;;;;;;;;;;;;;;;;;;;;;;;;10002:9;9987:24;9979:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;10077:13;;;;;;;;;;;10071:19;;:2;:19;;;10068:146;;10144:14;;10135:6;10119:13;10129:2;10119:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10111:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;10068:146;10230:28;10261:24;10279:4;10261:9;:24::i;:::-;10230:55;;10300:12;10339:19;;10315:20;:43;;10300:58;;10402:12;;10378:20;:36;10375:124;;10471:12;;10448:35;;10375:124;10519:7;:18;;;;;10531:6;;;;;;;;;;10530:7;10519:18;:43;;;;;10549:13;;;;;;;;;;;10541:21;;:4;:21;;;;10519:43;:58;;;;;10566:11;;;;;;;;;;;10519:58;:87;;;;;10582:18;:24;10601:4;10582:24;;;;;;;;;;;;;;;;;;;;;;;;;10581:25;10519:87;:114;;;;;10611:18;:22;10630:2;10611:22;;;;;;;;;;;;;;;;;;;;;;;;;10610:23;10519:114;10515:386;;;10654:38;10671:20;10654:16;:38::i;:::-;10711:26;10740:21;10711:50;;10805:1;10784:18;:22;10780:106;;;10831:35;10844:21;10831:12;:35::i;:::-;10780:106;10635:266;10515:386;9691:1221;;9653:1259;10924:12;10939:4;10924:19;;10988:18;:24;11007:4;10988:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11016:18;:22;11035:2;11016:22;;;;;;;;;;;;;;;;;;;;;;;;;10988:50;10987:102;;;;11052:13;;;;;;;;;;;11044:21;;:4;:21;;;;:44;;;;;11075:13;;;;;;;;;;;11069:19;;:2;:19;;;;11044:44;10987:102;10983:594;;;11116:5;11106:15;;10983:594;;;11199:13;;;;;;;;;;;11191:21;;:4;:21;;;:55;;;;;11230:15;;;;;;;;;;;11216:30;;:2;:30;;;;11191:55;11188:162;;;11279:14;;11267:9;:26;;;;11322:12;;11312:7;:22;;;;11188:162;11409:13;;;;;;;;;;;11403:19;;:2;:19;;;:55;;;;;11442:15;;;;;;;;;;;11426:32;;:4;:32;;;;11403:55;11399:165;;;11491:15;;11479:9;:27;;;;11535:13;;11525:7;:23;;;;11399:165;10983:594;11589:41;11604:4;11610:2;11614:6;11622:7;11589:14;:41::i;:::-;9411:2227;9308:2330;;;:::o;2319:224::-;2439:7;2472:1;2467;:6;;2475:12;2459:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2499:9;2515:1;2511;:5;;;;:::i;:::-;2499:17;;2534:1;2527:8;;;2319:224;;;;;:::o;8251:323::-;8346:7;8404;;8393;:18;;8371:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8492:19;8514:10;:8;:10::i;:::-;8492:32;;8542:24;8554:11;8542:7;:11;;:24;;;;:::i;:::-;8535:31;;;8251:323;;;:::o;12137:99::-;12194:17;;;;;;;;;;;:26;;:34;12221:6;12194:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12137:99;:::o;11646:483::-;5876:4;5867:6;;:13;;;;;;;;;;;;;;;;;;11724:21:::1;11762:1;11748:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11724:40;;11793:4;11775;11780:1;11775:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11819:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11809:4;11814:1;11809:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11852:62;11869:4;11884:15;;;;;;;;;;;11902:11;11852:8;:62::i;:::-;11925:15;;;;;;;;;;;:66;;;12006:11;12032:1;12048:4;12075;12095:15;11925:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11713:416;5912:5:::0;5903:6;;:14;;;;;;;;;;;;;;;;;;11646:483;:::o;13121:279::-;13277:7;13272:25;;13286:11;:9;:11::i;:::-;13272:25;13308:44;13326:6;13334:9;13345:6;13308:17;:44::i;:::-;13368:7;13363:29;;13377:15;:13;:15::i;:::-;13363:29;13121:279;;;;:::o;16079:164::-;16121:7;16142:15;16159;16178:19;:17;:19::i;:::-;16141:56;;;;16215:20;16227:7;16215;:11;;:20;;;;:::i;:::-;16208:27;;;;16079:164;:::o;2805:132::-;2863:7;2890:39;2894:1;2897;2890:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2883:46;;2805:132;;;;:::o;8582:216::-;8639:1;8626:9;;:14;:30;;;;;8655:1;8644:7;;:12;8626:30;8622:43;;;8658:7;;8622:43;8697:9;;8677:17;:29;;;;8735:7;;8717:15;:25;;;;8767:1;8755:9;:13;;;;8789:1;8779:7;:11;;;;8582:216;:::o;13408:610::-;13555:15;13585:23;13623:12;13650:23;13688:12;13715:13;13742:19;13753:7;13742:10;:19::i;:::-;13540:221;;;;;;;;;;;;13790:28;13810:7;13790;:15;13798:6;13790:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13772:7;:15;13780:6;13772:15;;;;;;;;;;;;;;;:46;;;;13850:39;13873:15;13850:7;:18;13858:9;13850:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13829:7;:18;13837:9;13829:18;;;;;;;;;;;;;;;:60;;;;13900:16;13910:5;13900:9;:16::i;:::-;13927:23;13939:4;13945;13927:11;:23::i;:::-;13983:9;13966:44;;13975:6;13966:44;;;13994:15;13966:44;;;;;;:::i;:::-;;;;;;;;13529:489;;;;;;13408:610;;;:::o;8806:117::-;8862:17;;8850:9;:29;;;;8900:15;;8890:7;:25;;;;8806:117::o;16251:257::-;16302:7;16311;16331:15;16349:7;;16331:25;;16367:15;4622:18;16367:25;;16417:20;4622:18;16417:7;;:11;;:20;;;;:::i;:::-;16407:7;:30;16403:61;;;16447:7;;4622:18;16439:25;;;;;;;;16403:61;16483:7;16492;16475:25;;;;;;16251:257;;;:::o;2945:223::-;3065:7;3097:1;3093;:5;3100:12;3085:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3124:9;3140:1;3136;:5;;;;:::i;:::-;3124:17;;3159:1;3152:8;;;2945:223;;;;;:::o;14437:615::-;14537:7;14559;14581;14603;14625;14647;14683:23;14708:12;14722:13;14752:40;14764:7;14773:9;;14784:7;;14752:11;:40::i;:::-;14682:110;;;;;;14803:19;14825:10;:8;:10::i;:::-;14803:32;;14847:15;14864:23;14889:12;14918:46;14930:7;14939:4;14945:5;14952:11;14918;:46::i;:::-;14846:118;;;;;;14983:7;14992:15;15009:4;15015:15;15032:4;15038:5;14975:69;;;;;;;;;;;;;;;;;;;14437:615;;;;;;;:::o;2175:136::-;2233:7;2260:43;2264:1;2267;2260:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2253:50;;2175:136;;;;:::o;1988:179::-;2046:7;2066:9;2082:1;2078;:5;;;;:::i;:::-;2066:17;;2107:1;2102;:6;;2094:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2158:1;2151:8;;;1988:179;;;;:::o;14026:211::-;14079:19;14101:10;:8;:10::i;:::-;14079:32;;14122:13;14138:22;14148:11;14138:5;:9;;:22;;;;:::i;:::-;14122:38;;14196:33;14223:5;14196:7;:22;14212:4;14196:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14171:7;:22;14187:4;14171:22;;;;;;;;;;;;;;;:58;;;;14068:169;;14026:211;:::o;14245:147::-;14323:17;14335:4;14323:7;;:11;;:17;;;;:::i;:::-;14313:7;:27;;;;14364:20;14379:4;14364:10;;:14;;:20;;;;:::i;:::-;14351:10;:33;;;;14245:147;;:::o;15060:469::-;15229:7;15251;15273;15308:12;15323:30;15349:3;15323:21;15335:8;15323:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;15308:45;;15364:13;15380:28;15404:3;15380:19;15392:6;15380:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15364:44;;15419:23;15445:28;15467:5;15445:17;15457:4;15445:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15419:54;;15492:15;15509:4;15515:5;15484:37;;;;;;;;;15060:469;;;;;;;:::o;15537:534::-;15731:7;15753;15775;15810:15;15828:24;15840:11;15828:7;:11;;:24;;;;:::i;:::-;15810:42;;15863:12;15878:21;15887:11;15878:4;:8;;:21;;;;:::i;:::-;15863:36;;15910:13;15926:22;15936:11;15926:5;:9;;:22;;;;:::i;:::-;15910:38;;15959:23;15985:28;16007:5;15985:17;15997:4;15985:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15959:54;;16032:7;16041:15;16058:4;16024:39;;;;;;;;;;15537:534;;;;;;;;:::o;2551:246::-;2609:7;2638:1;2633;:6;2629:47;;;2663:1;2656:8;;;;2629:47;2686:9;2702:1;2698;:5;;;;:::i;:::-;2686:17;;2731:1;2726;2722;:5;;;;:::i;:::-;:10;2714:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2788:1;2781:8;;;2551:246;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:102;498:6;549:2;545:7;540:2;533:5;529:14;525:28;515:38;;457:102;;;:::o;565:180::-;613:77;610:1;603:88;710:4;707:1;700:15;734:4;731:1;724:15;751:281;834:27;856:4;834:27;:::i;:::-;826:6;822:40;964:6;952:10;949:22;928:18;916:10;913:34;910:62;907:88;;;975:18;;:::i;:::-;907:88;1015:10;1011:2;1004:22;794:238;751:281;;:::o;1038:129::-;1072:6;1099:20;;:::i;:::-;1089:30;;1128:33;1156:4;1148:6;1128:33;:::i;:::-;1038:129;;;:::o;1173:311::-;1250:4;1340:18;1332:6;1329:30;1326:56;;;1362:18;;:::i;:::-;1326:56;1412:4;1404:6;1400:17;1392:25;;1472:4;1466;1462:15;1454:23;;1173:311;;;:::o;1490:117::-;1599:1;1596;1589:12;1613:126;1650:7;1690:42;1683:5;1679:54;1668:65;;1613:126;;;:::o;1745:96::-;1782:7;1811:24;1829:5;1811:24;:::i;:::-;1800:35;;1745:96;;;:::o;1847:122::-;1920:24;1938:5;1920:24;:::i;:::-;1913:5;1910:35;1900:63;;1959:1;1956;1949:12;1900:63;1847:122;:::o;1975:139::-;2021:5;2059:6;2046:20;2037:29;;2075:33;2102:5;2075:33;:::i;:::-;1975:139;;;;:::o;2137:710::-;2233:5;2258:81;2274:64;2331:6;2274:64;:::i;:::-;2258:81;:::i;:::-;2249:90;;2359:5;2388:6;2381:5;2374:21;2422:4;2415:5;2411:16;2404:23;;2475:4;2467:6;2463:17;2455:6;2451:30;2504:3;2496:6;2493:15;2490:122;;;2523:79;;:::i;:::-;2490:122;2638:6;2621:220;2655:6;2650:3;2647:15;2621:220;;;2730:3;2759:37;2792:3;2780:10;2759:37;:::i;:::-;2754:3;2747:50;2826:4;2821:3;2817:14;2810:21;;2697:144;2681:4;2676:3;2672:14;2665:21;;2621:220;;;2625:21;2239:608;;2137:710;;;;;:::o;2870:370::-;2941:5;2990:3;2983:4;2975:6;2971:17;2967:27;2957:122;;2998:79;;:::i;:::-;2957:122;3115:6;3102:20;3140:94;3230:3;3222:6;3215:4;3207:6;3203:17;3140:94;:::i;:::-;3131:103;;2947:293;2870:370;;;;:::o;3246:539::-;3330:6;3379:2;3367:9;3358:7;3354:23;3350:32;3347:119;;;3385:79;;:::i;:::-;3347:119;3533:1;3522:9;3518:17;3505:31;3563:18;3555:6;3552:30;3549:117;;;3585:79;;:::i;:::-;3549:117;3690:78;3760:7;3751:6;3740:9;3736:22;3690:78;:::i;:::-;3680:88;;3476:302;3246:539;;;;:::o;3791:99::-;3843:6;3877:5;3871:12;3861:22;;3791:99;;;:::o;3896:169::-;3980:11;4014:6;4009:3;4002:19;4054:4;4049:3;4045:14;4030:29;;3896:169;;;;:::o;4071:307::-;4139:1;4149:113;4163:6;4160:1;4157:13;4149:113;;;4248:1;4243:3;4239:11;4233:18;4229:1;4224:3;4220:11;4213:39;4185:2;4182:1;4178:10;4173:15;;4149:113;;;4280:6;4277:1;4274:13;4271:101;;;4360:1;4351:6;4346:3;4342:16;4335:27;4271:101;4120:258;4071:307;;;:::o;4384:364::-;4472:3;4500:39;4533:5;4500:39;:::i;:::-;4555:71;4619:6;4614:3;4555:71;:::i;:::-;4548:78;;4635:52;4680:6;4675:3;4668:4;4661:5;4657:16;4635:52;:::i;:::-;4712:29;4734:6;4712:29;:::i;:::-;4707:3;4703:39;4696:46;;4476:272;4384:364;;;;:::o;4754:313::-;4867:4;4905:2;4894:9;4890:18;4882:26;;4954:9;4948:4;4944:20;4940:1;4929:9;4925:17;4918:47;4982:78;5055:4;5046:6;4982:78;:::i;:::-;4974:86;;4754:313;;;;:::o;5073:77::-;5110:7;5139:5;5128:16;;5073:77;;;:::o;5156:122::-;5229:24;5247:5;5229:24;:::i;:::-;5222:5;5219:35;5209:63;;5268:1;5265;5258:12;5209:63;5156:122;:::o;5284:139::-;5330:5;5368:6;5355:20;5346:29;;5384:33;5411:5;5384:33;:::i;:::-;5284:139;;;;:::o;5429:474::-;5497:6;5505;5554:2;5542:9;5533:7;5529:23;5525:32;5522:119;;;5560:79;;:::i;:::-;5522:119;5680:1;5705:53;5750:7;5741:6;5730:9;5726:22;5705:53;:::i;:::-;5695:63;;5651:117;5807:2;5833:53;5878:7;5869:6;5858:9;5854:22;5833:53;:::i;:::-;5823:63;;5778:118;5429:474;;;;;:::o;5909:90::-;5943:7;5986:5;5979:13;5972:21;5961:32;;5909:90;;;:::o;6005:109::-;6086:21;6101:5;6086:21;:::i;:::-;6081:3;6074:34;6005:109;;:::o;6120:210::-;6207:4;6245:2;6234:9;6230:18;6222:26;;6258:65;6320:1;6309:9;6305:17;6296:6;6258:65;:::i;:::-;6120:210;;;;:::o;6336:60::-;6364:3;6385:5;6378:12;;6336:60;;;:::o;6402:142::-;6452:9;6485:53;6503:34;6512:24;6530:5;6512:24;:::i;:::-;6503:34;:::i;:::-;6485:53;:::i;:::-;6472:66;;6402:142;;;:::o;6550:126::-;6600:9;6633:37;6664:5;6633:37;:::i;:::-;6620:50;;6550:126;;;:::o;6682:152::-;6758:9;6791:37;6822:5;6791:37;:::i;:::-;6778:50;;6682:152;;;:::o;6840:183::-;6953:63;7010:5;6953:63;:::i;:::-;6948:3;6941:76;6840:183;;:::o;7029:274::-;7148:4;7186:2;7175:9;7171:18;7163:26;;7199:97;7293:1;7282:9;7278:17;7269:6;7199:97;:::i;:::-;7029:274;;;;:::o;7309:118::-;7396:24;7414:5;7396:24;:::i;:::-;7391:3;7384:37;7309:118;;:::o;7433:222::-;7526:4;7564:2;7553:9;7549:18;7541:26;;7577:71;7645:1;7634:9;7630:17;7621:6;7577:71;:::i;:::-;7433:222;;;;:::o;7661:619::-;7738:6;7746;7754;7803:2;7791:9;7782:7;7778:23;7774:32;7771:119;;;7809:79;;:::i;:::-;7771:119;7929:1;7954:53;7999:7;7990:6;7979:9;7975:22;7954:53;:::i;:::-;7944:63;;7900:117;8056:2;8082:53;8127:7;8118:6;8107:9;8103:22;8082:53;:::i;:::-;8072:63;;8027:118;8184:2;8210:53;8255:7;8246:6;8235:9;8231:22;8210:53;:::i;:::-;8200:63;;8155:118;7661:619;;;;;:::o;8286:86::-;8321:7;8361:4;8354:5;8350:16;8339:27;;8286:86;;;:::o;8378:112::-;8461:22;8477:5;8461:22;:::i;:::-;8456:3;8449:35;8378:112;;:::o;8496:214::-;8585:4;8623:2;8612:9;8608:18;8600:26;;8636:67;8700:1;8689:9;8685:17;8676:6;8636:67;:::i;:::-;8496:214;;;;:::o;8716:329::-;8775:6;8824:2;8812:9;8803:7;8799:23;8795:32;8792:119;;;8830:79;;:::i;:::-;8792:119;8950:1;8975:53;9020:7;9011:6;9000:9;8996:22;8975:53;:::i;:::-;8965:63;;8921:117;8716:329;;;;:::o;9051:474::-;9119:6;9127;9176:2;9164:9;9155:7;9151:23;9147:32;9144:119;;;9182:79;;:::i;:::-;9144:119;9302:1;9327:53;9372:7;9363:6;9352:9;9348:22;9327:53;:::i;:::-;9317:63;;9273:117;9429:2;9455:53;9500:7;9491:6;9480:9;9476:22;9455:53;:::i;:::-;9445:63;;9400:118;9051:474;;;;;:::o;9531:118::-;9618:24;9636:5;9618:24;:::i;:::-;9613:3;9606:37;9531:118;;:::o;9655:222::-;9748:4;9786:2;9775:9;9771:18;9763:26;;9799:71;9867:1;9856:9;9852:17;9843:6;9799:71;:::i;:::-;9655:222;;;;:::o;9883:329::-;9942:6;9991:2;9979:9;9970:7;9966:23;9962:32;9959:119;;;9997:79;;:::i;:::-;9959:119;10117:1;10142:53;10187:7;10178:6;10167:9;10163:22;10142:53;:::i;:::-;10132:63;;10088:117;9883:329;;;;:::o;10218:116::-;10288:21;10303:5;10288:21;:::i;:::-;10281:5;10278:32;10268:60;;10324:1;10321;10314:12;10268:60;10218:116;:::o;10340:133::-;10383:5;10421:6;10408:20;10399:29;;10437:30;10461:5;10437:30;:::i;:::-;10340:133;;;;:::o;10479:323::-;10535:6;10584:2;10572:9;10563:7;10559:23;10555:32;10552:119;;;10590:79;;:::i;:::-;10552:119;10710:1;10735:50;10777:7;10768:6;10757:9;10753:22;10735:50;:::i;:::-;10725:60;;10681:114;10479:323;;;;:::o;10808:117::-;10917:1;10914;10907:12;10948:568;11021:8;11031:6;11081:3;11074:4;11066:6;11062:17;11058:27;11048:122;;11089:79;;:::i;:::-;11048:122;11202:6;11189:20;11179:30;;11232:18;11224:6;11221:30;11218:117;;;11254:79;;:::i;:::-;11218:117;11368:4;11360:6;11356:17;11344:29;;11422:3;11414:4;11406:6;11402:17;11392:8;11388:32;11385:41;11382:128;;;11429:79;;:::i;:::-;11382:128;10948:568;;;;;:::o;11522:698::-;11614:6;11622;11630;11679:2;11667:9;11658:7;11654:23;11650:32;11647:119;;;11685:79;;:::i;:::-;11647:119;11833:1;11822:9;11818:17;11805:31;11863:18;11855:6;11852:30;11849:117;;;11885:79;;:::i;:::-;11849:117;11998:80;12070:7;12061:6;12050:9;12046:22;11998:80;:::i;:::-;11980:98;;;;11776:312;12127:2;12153:50;12195:7;12186:6;12175:9;12171:22;12153:50;:::i;:::-;12143:60;;12098:115;11522:698;;;;;:::o;12226:765::-;12312:6;12320;12328;12336;12385:3;12373:9;12364:7;12360:23;12356:33;12353:120;;;12392:79;;:::i;:::-;12353:120;12512:1;12537:53;12582:7;12573:6;12562:9;12558:22;12537:53;:::i;:::-;12527:63;;12483:117;12639:2;12665:53;12710:7;12701:6;12690:9;12686:22;12665:53;:::i;:::-;12655:63;;12610:118;12767:2;12793:53;12838:7;12829:6;12818:9;12814:22;12793:53;:::i;:::-;12783:63;;12738:118;12895:2;12921:53;12966:7;12957:6;12946:9;12942:22;12921:53;:::i;:::-;12911:63;;12866:118;12226:765;;;;;;;:::o;12997:474::-;13065:6;13073;13122:2;13110:9;13101:7;13097:23;13093:32;13090:119;;;13128:79;;:::i;:::-;13090:119;13248:1;13273:53;13318:7;13309:6;13298:9;13294:22;13273:53;:::i;:::-;13263:63;;13219:117;13375:2;13401:53;13446:7;13437:6;13426:9;13422:22;13401:53;:::i;:::-;13391:63;;13346:118;12997:474;;;;;:::o;13477:182::-;13617:34;13613:1;13605:6;13601:14;13594:58;13477:182;:::o;13665:366::-;13807:3;13828:67;13892:2;13887:3;13828:67;:::i;:::-;13821:74;;13904:93;13993:3;13904:93;:::i;:::-;14022:2;14017:3;14013:12;14006:19;;13665:366;;;:::o;14037:419::-;14203:4;14241:2;14230:9;14226:18;14218:26;;14290:9;14284:4;14280:20;14276:1;14265:9;14261:17;14254:47;14318:131;14444:4;14318:131;:::i;:::-;14310:139;;14037:419;;;:::o;14462:180::-;14510:77;14507:1;14500:88;14607:4;14604:1;14597:15;14631:4;14628:1;14621:15;14648:180;14696:77;14693:1;14686:88;14793:4;14790:1;14783:15;14817:4;14814:1;14807:15;14834:233;14873:3;14896:24;14914:5;14896:24;:::i;:::-;14887:33;;14942:66;14935:5;14932:77;14929:103;;;15012:18;;:::i;:::-;14929:103;15059:1;15052:5;15048:13;15041:20;;14834:233;;;:::o;15073:225::-;15213:34;15209:1;15201:6;15197:14;15190:58;15282:8;15277:2;15269:6;15265:15;15258:33;15073:225;:::o;15304:366::-;15446:3;15467:67;15531:2;15526:3;15467:67;:::i;:::-;15460:74;;15543:93;15632:3;15543:93;:::i;:::-;15661:2;15656:3;15652:12;15645:19;;15304:366;;;:::o;15676:419::-;15842:4;15880:2;15869:9;15865:18;15857:26;;15929:9;15923:4;15919:20;15915:1;15904:9;15900:17;15893:47;15957:131;16083:4;15957:131;:::i;:::-;15949:139;;15676:419;;;:::o;16101:223::-;16241:34;16237:1;16229:6;16225:14;16218:58;16310:6;16305:2;16297:6;16293:15;16286:31;16101:223;:::o;16330:366::-;16472:3;16493:67;16557:2;16552:3;16493:67;:::i;:::-;16486:74;;16569:93;16658:3;16569:93;:::i;:::-;16687:2;16682:3;16678:12;16671:19;;16330:366;;;:::o;16702:419::-;16868:4;16906:2;16895:9;16891:18;16883:26;;16955:9;16949:4;16945:20;16941:1;16930:9;16926:17;16919:47;16983:131;17109:4;16983:131;:::i;:::-;16975:139;;16702:419;;;:::o;17127:221::-;17267:34;17263:1;17255:6;17251:14;17244:58;17336:4;17331:2;17323:6;17319:15;17312:29;17127:221;:::o;17354:366::-;17496:3;17517:67;17581:2;17576:3;17517:67;:::i;:::-;17510:74;;17593:93;17682:3;17593:93;:::i;:::-;17711:2;17706:3;17702:12;17695:19;;17354:366;;;:::o;17726:419::-;17892:4;17930:2;17919:9;17915:18;17907:26;;17979:9;17973:4;17969:20;17965:1;17954:9;17950:17;17943:47;18007:131;18133:4;18007:131;:::i;:::-;17999:139;;17726:419;;;:::o;18151:224::-;18291:34;18287:1;18279:6;18275:14;18268:58;18360:7;18355:2;18347:6;18343:15;18336:32;18151:224;:::o;18381:366::-;18523:3;18544:67;18608:2;18603:3;18544:67;:::i;:::-;18537:74;;18620:93;18709:3;18620:93;:::i;:::-;18738:2;18733:3;18729:12;18722:19;;18381:366;;;:::o;18753:419::-;18919:4;18957:2;18946:9;18942:18;18934:26;;19006:9;19000:4;18996:20;18992:1;18981:9;18977:17;18970:47;19034:131;19160:4;19034:131;:::i;:::-;19026:139;;18753:419;;;:::o;19178:222::-;19318:34;19314:1;19306:6;19302:14;19295:58;19387:5;19382:2;19374:6;19370:15;19363:30;19178:222;:::o;19406:366::-;19548:3;19569:67;19633:2;19628:3;19569:67;:::i;:::-;19562:74;;19645:93;19734:3;19645:93;:::i;:::-;19763:2;19758:3;19754:12;19747:19;;19406:366;;;:::o;19778:419::-;19944:4;19982:2;19971:9;19967:18;19959:26;;20031:9;20025:4;20021:20;20017:1;20006:9;20002:17;19995:47;20059:131;20185:4;20059:131;:::i;:::-;20051:139;;19778:419;;;:::o;20203:228::-;20343:34;20339:1;20331:6;20327:14;20320:58;20412:11;20407:2;20399:6;20395:15;20388:36;20203:228;:::o;20437:366::-;20579:3;20600:67;20664:2;20659:3;20600:67;:::i;:::-;20593:74;;20676:93;20765:3;20676:93;:::i;:::-;20794:2;20789:3;20785:12;20778:19;;20437:366;;;:::o;20809:419::-;20975:4;21013:2;21002:9;20998:18;20990:26;;21062:9;21056:4;21052:20;21048:1;21037:9;21033:17;21026:47;21090:131;21216:4;21090:131;:::i;:::-;21082:139;;20809:419;;;:::o;21234:250::-;21374:34;21370:1;21362:6;21358:14;21351:58;21443:33;21438:2;21430:6;21426:15;21419:58;21234:250;:::o;21490:366::-;21632:3;21653:67;21717:2;21712:3;21653:67;:::i;:::-;21646:74;;21729:93;21818:3;21729:93;:::i;:::-;21847:2;21842:3;21838:12;21831:19;;21490:366;;;:::o;21862:419::-;22028:4;22066:2;22055:9;22051:18;22043:26;;22115:9;22109:4;22105:20;22101:1;22090:9;22086:17;22079:47;22143:131;22269:4;22143:131;:::i;:::-;22135:139;;21862:419;;;:::o;22287:178::-;22427:30;22423:1;22415:6;22411:14;22404:54;22287:178;:::o;22471:366::-;22613:3;22634:67;22698:2;22693:3;22634:67;:::i;:::-;22627:74;;22710:93;22799:3;22710:93;:::i;:::-;22828:2;22823:3;22819:12;22812:19;;22471:366;;;:::o;22843:419::-;23009:4;23047:2;23036:9;23032:18;23024:26;;23096:9;23090:4;23086:20;23082:1;23071:9;23067:17;23060:47;23124:131;23250:4;23124:131;:::i;:::-;23116:139;;22843:419;;;:::o;23268:222::-;23408:34;23404:1;23396:6;23392:14;23385:58;23477:5;23472:2;23464:6;23460:15;23453:30;23268:222;:::o;23496:366::-;23638:3;23659:67;23723:2;23718:3;23659:67;:::i;:::-;23652:74;;23735:93;23824:3;23735:93;:::i;:::-;23853:2;23848:3;23844:12;23837:19;;23496:366;;;:::o;23868:419::-;24034:4;24072:2;24061:9;24057:18;24049:26;;24121:9;24115:4;24111:20;24107:1;24096:9;24092:17;24085:47;24149:131;24275:4;24149:131;:::i;:::-;24141:139;;23868:419;;;:::o;24293:305::-;24333:3;24352:20;24370:1;24352:20;:::i;:::-;24347:25;;24386:20;24404:1;24386:20;:::i;:::-;24381:25;;24540:1;24472:66;24468:74;24465:1;24462:81;24459:107;;;24546:18;;:::i;:::-;24459:107;24590:1;24587;24583:9;24576:16;;24293:305;;;;:::o;24604:222::-;24744:34;24740:1;24732:6;24728:14;24721:58;24813:5;24808:2;24800:6;24796:15;24789:30;24604:222;:::o;24832:366::-;24974:3;24995:67;25059:2;25054:3;24995:67;:::i;:::-;24988:74;;25071:93;25160:3;25071:93;:::i;:::-;25189:2;25184:3;25180:12;25173:19;;24832:366;;;:::o;25204:419::-;25370:4;25408:2;25397:9;25393:18;25385:26;;25457:9;25451:4;25447:20;25443:1;25432:9;25428:17;25421:47;25485:131;25611:4;25485:131;:::i;:::-;25477:139;;25204:419;;;:::o;25629:191::-;25669:4;25689:20;25707:1;25689:20;:::i;:::-;25684:25;;25723:20;25741:1;25723:20;:::i;:::-;25718:25;;25762:1;25759;25756:8;25753:34;;;25767:18;;:::i;:::-;25753:34;25812:1;25809;25805:9;25797:17;;25629:191;;;;:::o;25826:229::-;25966:34;25962:1;25954:6;25950:14;25943:58;26035:12;26030:2;26022:6;26018:15;26011:37;25826:229;:::o;26061:366::-;26203:3;26224:67;26288:2;26283:3;26224:67;:::i;:::-;26217:74;;26300:93;26389:3;26300:93;:::i;:::-;26418:2;26413:3;26409:12;26402:19;;26061:366;;;:::o;26433:419::-;26599:4;26637:2;26626:9;26622:18;26614:26;;26686:9;26680:4;26676:20;26672:1;26661:9;26657:17;26650:47;26714:131;26840:4;26714:131;:::i;:::-;26706:139;;26433:419;;;:::o;26858:143::-;26915:5;26946:6;26940:13;26931:22;;26962:33;26989:5;26962:33;:::i;:::-;26858:143;;;;:::o;27007:351::-;27077:6;27126:2;27114:9;27105:7;27101:23;27097:32;27094:119;;;27132:79;;:::i;:::-;27094:119;27252:1;27277:64;27333:7;27324:6;27313:9;27309:22;27277:64;:::i;:::-;27267:74;;27223:128;27007:351;;;;:::o;27364:85::-;27409:7;27438:5;27427:16;;27364:85;;;:::o;27455:158::-;27513:9;27546:61;27564:42;27573:32;27599:5;27573:32;:::i;:::-;27564:42;:::i;:::-;27546:61;:::i;:::-;27533:74;;27455:158;;;:::o;27619:147::-;27714:45;27753:5;27714:45;:::i;:::-;27709:3;27702:58;27619:147;;:::o;27772:114::-;27839:6;27873:5;27867:12;27857:22;;27772:114;;;:::o;27892:184::-;27991:11;28025:6;28020:3;28013:19;28065:4;28060:3;28056:14;28041:29;;27892:184;;;;:::o;28082:132::-;28149:4;28172:3;28164:11;;28202:4;28197:3;28193:14;28185:22;;28082:132;;;:::o;28220:108::-;28297:24;28315:5;28297:24;:::i;:::-;28292:3;28285:37;28220:108;;:::o;28334:179::-;28403:10;28424:46;28466:3;28458:6;28424:46;:::i;:::-;28502:4;28497:3;28493:14;28479:28;;28334:179;;;;:::o;28519:113::-;28589:4;28621;28616:3;28612:14;28604:22;;28519:113;;;:::o;28668:732::-;28787:3;28816:54;28864:5;28816:54;:::i;:::-;28886:86;28965:6;28960:3;28886:86;:::i;:::-;28879:93;;28996:56;29046:5;28996:56;:::i;:::-;29075:7;29106:1;29091:284;29116:6;29113:1;29110:13;29091:284;;;29192:6;29186:13;29219:63;29278:3;29263:13;29219:63;:::i;:::-;29212:70;;29305:60;29358:6;29305:60;:::i;:::-;29295:70;;29151:224;29138:1;29135;29131:9;29126:14;;29091:284;;;29095:14;29391:3;29384:10;;28792:608;;;28668:732;;;;:::o;29406:831::-;29669:4;29707:3;29696:9;29692:19;29684:27;;29721:71;29789:1;29778:9;29774:17;29765:6;29721:71;:::i;:::-;29802:80;29878:2;29867:9;29863:18;29854:6;29802:80;:::i;:::-;29929:9;29923:4;29919:20;29914:2;29903:9;29899:18;29892:48;29957:108;30060:4;30051:6;29957:108;:::i;:::-;29949:116;;30075:72;30143:2;30132:9;30128:18;30119:6;30075:72;:::i;:::-;30157:73;30225:3;30214:9;30210:19;30201:6;30157:73;:::i;:::-;29406:831;;;;;;;;:::o;30243:180::-;30291:77;30288:1;30281:88;30388:4;30385:1;30378:15;30412:4;30409:1;30402:15;30429:185;30469:1;30486:20;30504:1;30486:20;:::i;:::-;30481:25;;30520:20;30538:1;30520:20;:::i;:::-;30515:25;;30559:1;30549:35;;30564:18;;:::i;:::-;30549:35;30606:1;30603;30599:9;30594:14;;30429:185;;;;:::o;30620:177::-;30760:29;30756:1;30748:6;30744:14;30737:53;30620:177;:::o;30803:366::-;30945:3;30966:67;31030:2;31025:3;30966:67;:::i;:::-;30959:74;;31042:93;31131:3;31042:93;:::i;:::-;31160:2;31155:3;31151:12;31144:19;;30803:366;;;:::o;31175:419::-;31341:4;31379:2;31368:9;31364:18;31356:26;;31428:9;31422:4;31418:20;31414:1;31403:9;31399:17;31392:47;31456:131;31582:4;31456:131;:::i;:::-;31448:139;;31175:419;;;:::o;31600:348::-;31640:7;31663:20;31681:1;31663:20;:::i;:::-;31658:25;;31697:20;31715:1;31697:20;:::i;:::-;31692:25;;31885:1;31817:66;31813:74;31810:1;31807:81;31802:1;31795:9;31788:17;31784:105;31781:131;;;31892:18;;:::i;:::-;31781:131;31940:1;31937;31933:9;31922:20;;31600:348;;;;:::o;31954:220::-;32094:34;32090:1;32082:6;32078:14;32071:58;32163:3;32158:2;32150:6;32146:15;32139:28;31954:220;:::o;32180:366::-;32322:3;32343:67;32407:2;32402:3;32343:67;:::i;:::-;32336:74;;32419:93;32508:3;32419:93;:::i;:::-;32537:2;32532:3;32528:12;32521:19;;32180:366;;;:::o;32552:419::-;32718:4;32756:2;32745:9;32741:18;32733:26;;32805:9;32799:4;32795:20;32791:1;32780:9;32776:17;32769:47;32833:131;32959:4;32833:131;:::i;:::-;32825:139;;32552:419;;;:::o

Swarm Source

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